c语言课程设计兰州交通大学.docx
- 文档编号:15576162
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:45
- 大小:169.38KB
c语言课程设计兰州交通大学.docx
《c语言课程设计兰州交通大学.docx》由会员分享,可在线阅读,更多相关《c语言课程设计兰州交通大学.docx(45页珍藏版)》请在冰点文库上搜索。
c语言课程设计兰州交通大学
C语言程序设计课程设计
评语:
考勤(10)
纪律(10)
过程(40)
设计报告(30)
答辩(10)
总成绩(100)
专业:
电气工程及其自动化
班级:
姓名:
学号:
指导教师:
兰州交通大学自动化与电气工程学院
2014年7月15日
1基础题
1.1题目
编写一个程序,求3行4列矩阵的转置,要求在main函数中输入,在chang函数中把矩阵转置。
1.2解题思路
首先在主函数里定义一个3行4列的数组来存放这个矩阵,在定义一个子函数实现矩阵的转置,并用二维数组做参数。
1.3流程图
基础题流程图见附录A图A1、图A2所示。
1.4源代码
基础题源代码见附录C。
1.5运行截图
运行截图如图1所示。
图1基础题运行结果图
2改错题
2.1题目
#include
#include
main()
{
inti,j;
charch;
while(ch=getch()!
='\r')
{
i++;
printf("%c",ch);
}
2.2错因分析
inti,j;
此处将变量j应该删去,因为变量j在后面程序没有出现,而它占用一定的内存单元。
浪费储存空间。
while(ch=getch()!
='\r')
此处的\r应该改为\n,因为转义字符\r表示回车的意思,系统会认按回车键是输入字符,无法识别。
因此程序无法执行,无法得出结果。
3综合题
3.1题目
学生选修课程系统设计
(1)需求分析
系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作。
定义的机构体如下:
structcourse//课程信息结构体
{
intnum1;//课程编号
charname1[20];//课程名称
intscore;//学分
charkc_xingzhi[10];//课程性质
intkc_xueshi;//课程学时
intkaikexueqi;//开课学期
};
(2)总体设计
整个系统首页设计为管理员登陆模块和学生登陆模块,在管理员登陆模块中有信息输入模块、信息删除模块、管理员信息浏览模块和管理员信息查询模块,在学生登陆模块里有选课模块、学生课程查询模块以及学生课程浏览模块。
(3)详细设计
数据结构采用结构体,这里采用课程信息结构体。
1)信息输入模块
从键盘输入课程信息,写入文件。
(fwrite, fprintf)
2)信息浏览模块
从文件中读数据(fread,fscanf),然后再显示。
3)信息查询模块
通过菜单选择查询字段,可以按照课程学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。
可以通过菜单选择课程编号,在学生选课信息文件中查询该课程学生选修情况。
3.2程序功能分析
根据题目已知信息可得,完成后程序应具备如下功能:
(1)管理员录入课程信息
(2)管理员删除课程信息
(3)管理员浏览课程信息
(4)管理员查询课程信息
(5)学生选课
(6)学生查询课程信信息
(7)学生浏览课程信息
(6)退出学生选修课系统
3.3程序模块设计
模块一:
头文件,变量定义,函数的声明。
对系统所使用的变量进行定义,对函数进行声明。
模块二:
登陆密码和首页。
声明函数voidshouye()和voiddenglu()。
模块三:
管理员对课程信息的添加。
声明函数voidkc_xinzeng(),通过fp=fopen("course.dat","wb")写入信息。
模块四:
管理员对课程信息的删除。
声明函数voidkc_shanchu()为管理员删除课程信息函数。
模块五:
管理员对课程信息的浏览。
声明函数voidgi_liulan()为管理员浏览课程信息函数。
模块六:
管理员对课程信息查询模块。
声明函数voidgl_chaxun()为管理员课程查询函数。
模块七:
学生选修课模块。
声明函数voidx_kecheng()实现学生选课。
模块八:
学生查询课程模块。
声明函数voidxs_chaxun()来实现其功能。
模块九:
学生浏览课程模块。
声明函数voidxs_liulan()来实现其功能。
模块十:
界面菜单。
通过switch()调用以上各函数,来实现气个子函数功能。
3.4流程图
主函数流程图如图7所示,调用函数流程图详见附录B图B1、图B2、图B3。
3.5源代码
综合题源代码见附录D。
3.6程序运行截图
综合题的运行结果如图2、图3、图4、图5、图6所示。
图2选课系统界面图
图3管理员登陆界面
图4学生登陆界面
图5管理员新增课程信息图
图6学生浏览课程图
图7主程序的main函数流程图
3.6存在的问题
(1)在调试程序的时候偶尔会遇到程序崩溃的情况。
(2)执行一次任务后以前执行的任务的信息不能删除,导致屏幕信息显得臃肿。
(3)信息保存后在下一次启动时便不能直接显示。
(4)还有就是在输入输出时格式,加入一个格式不合适就可能导致程序运行出错,但是这种错误在进行调试时是检查不出来的。
(5)最后就是在进行文件的录入和输出时,由于刚开始对文件的输入输出不熟练导致出现了大量的错误。
4总结
通过本次课程设计,我学到了很多让我意想不到的知识,并且对一些基本的办公软件的运用的熟练度得到了进一步的提升,也学会了运用一些新的软件,例如:
MicrosoftOfficeVisio2003、VisualC++6.0等。
当然,编写程序的时候也并不是一帆风顺的,也遇到了很多困难,程序报错、编译不成功、程序不能运行预期的功能,这些都是最常见的错误,而这也需要我自己动手去逐字逐句的检查,这也是平常课堂中没有过的体验。
综合题目让我懂得了遇到问题时如何去分析题目,首先写出题目的要求再结合现实生活得出让这个问题更加完善的要求,再次写出算法分析,这次的从语言课程设计不仅让我的思维变得更加慎密更加让我懂得了如何去合作,锻炼了我的团队协作能力,我和我们小组的同学一起努力最后每个人都完成了自己课程设计。
当然在争论中不免会产生点小摩擦,但仍然无法削减我们的热情。
时至今日我们的程序依然有着或多或少的不够完善的地方,但我觉得不管怎样,我们的程序能运行出最正确的结果对我们而言就已经是莫大的成功。
这次c语言课程设计让我懂得了如何坚持。
最后,我还要向在这次课程设计中给予我帮助的老师和同学们表示最衷心的感谢,没有老师逐字逐句的纠错和指导,和同学们随时都帮忙的热情,这次课程设计不会那么顺利的完成,再次衷心地感谢老师与各位同学。
参考文献
[1]谭浩强.C程序设计(第四版)[M].北京:
清华大学出版社,2010:
293-354.
附录A基础题的流程图
图A1基础题主函数流程图
图A2基础题chang函数流程图
附录B选课系统的流程图
综合题的子函数流程图:
图B1综合题登陆模块流程图
图B2综合题管理员登陆模块流程图
图B3综合题学生登录模块流程图
附录C基础题源代码
#include
intmain()
{voidchang(intb[3][4]);
inti,j,a[3][4];
printf("请输入一个3行4列的矩阵:
\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
chang(a);
return0;
}
voidchang(intb[3][4])
{inti,j,c[4][3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
c[j][i]=b[i][j];
printf("转置之后的矩阵为:
\n");
for(i=0;i<4;i++)
{for(j=0;j<3;j++)
printf("%3.0d",c[i][j]);
printf("\n");
}
}
附录D综合题源代码
#include
#include
#include
#include
#defineN100
structcourse//课程信息结构体
{
intnum1;//课程编号
charname1[20];//课程名称
intscore;//学分
harkc_xingzhi[10];//课程性质
intkc_xueshi;//课程学时
intkaikexueqi;//开课学期
};
voidshouye();//首页
voiddenglu();//登陆
voidbye_sys();//退出界面
voidstu_denglu();//学生登陆菜单
voidman_denglu();//管理员登陆菜单
voidx_kecheng();//选择课程
voidkc_xinzeng();//新增课程
voidkc_shanchu();//删除课程
voidxs_chaxun();//学生查询函数
voidgl_chaxun();//管理员查询函数
voidxs_liulan();//学生浏览函数
voidgi_liulan();//管理员浏览函数
intmain()
{
charch;
chara[]="123456",b[10];
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("------------------------------------------------------------------------");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("________________________________________________________________");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("--------------------------------------------------------");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("________________________________________________");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("--------------------☆☆--------------------");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
printf("\n");
printf("----------------------------欢迎进入学生选修课程系统----------------------------");
printf("\n\n");
printf("☆--☆--☆--☆请输入密码:
");
do
{
scanf("%s",b);
if(strcmp(a,b)==0)
{
if((ch=getchar())!
='\0')
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf("☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆");
printf("\n\n\n");
printf("☆--☆--☆--☆--你输入的密码正确,请按回车键进入下一界面--☆--☆--☆--☆");
printf("\n\n\n");
printf("☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆");
printf("\n");
if((ch=getchar())!
='\0')
system("cls");
}
else
printf("\n您输入的密码有误请重新输入:
");
}while(strcmp(a,b)!
=0);
shouye();//首页
denglu();//登陆
return0;
}
voidshouye()//首页界面
{
charch;
printf("***************************************\n");
printf("***************************************\n");
printf("***************************************\n");
printf("***************\n");
printf("**************\n");
printf("*************\n");
printf("************\n");
printf("*******\n");
printf("*******\n");
printf("*******\n");
printf("*******\n");
printf("*******\n");
printf("****制作人:
马驰骋***\n");
printf("*******\n");
printf("****学号:
201309431***\n");
printf("*******\n");
printf("****班级:
电气1301班***\n");
printf("*******\n");
printf("*************\n");
printf("**************\n");
printf("***************\n");
printf("***************************************\n");
printf("***************************************\n");
printf("请按回车键进入下一界面。
");
if((ch=getchar())!
='\0')
system("cls");
}
voiddenglu()//登陆界面
{
intinput;
do
{
system("cls");
printf("※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※");
printf("\n");
printf("--------------------------------------------------------------------------------");
printf("\n\n");
printf("☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆");
printf("\n\n\n");
printf("--------------------------欢迎进入学生选修课程系统-----------------------------\n\n");
printf("\n☆--☆--☆--1、管理员登陆。
\n");
printf("\n☆--☆--☆--2、学生登录。
\n");
printf("\n☆--☆--☆--3、退出系统。
\n");
printf("\n---------请输入要进行的序号:
");
scanf("%d",&input);
if((input!
=1)&&(input!
=2)&&(input!
=3))
{
printf("\n你输入有误,请重新输入(按回车键返回)。
\n");
getchar();
getchar();
system("cls");
}
if(input==3)
{
bye_sys();//退出
}
}while((input!
=1)&&(input!
=2)&&(input!
=3));
switch(input)
{
case1:
{
getchar();
system("cls");
man_denglu();//管理员登陆
break;
}
case2:
{
getchar();
system("cls");
stu_denglu();//学生登陆
break;
}
}
}
voidbye_sys()//退出界面
{
printf("\n");
printf("请按回车键退出系统。
\n\n");
exit(0);
}
voidman_denglu()//管理员登陆
{
intin;
do
{
system("cls");
printf("※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※-※");
printf("\n");
printf("--------------------------------------------------------------------------------");
printf("\n\n");
printf("☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆--☆");
printf("\n\n\n");
printf("--------------------------管理员登陆菜单--------------------------------------\n\n");
printf("\n☆--☆--☆--1、新增课程。
\n");
printf("\n☆--☆--☆--2、删除课程。
\n");
printf("\n☆--☆--☆--3、浏览课程。
\n");
printf("\n☆--☆--☆--4、课程查询。
\n");
printf("\n☆--☆--☆--5、退出。
\n");
printf("\n☆--☆--☆--请输入要进行的序号:
");
scanf("%d",&in);
if((in!
=1)&&(in!
=2)&&(in!
=3)&&(in!
=4)&&(in!
=5))
{
printf("\n输入有误,请重新输入(按回车键)。
\n");
getchar();
getchar();
}
}while((in!
=1)&&(in!
=2)&&(in!
=3)&&(in!
=4)&&(in!
=5));
switch(in)
{
case1:
kc_xinzeng();break;
case2:
kc_shanchu();break;
case3:
gi_liulan();break;
case4:
gl_chaxun();break;
case5:
denglu();break;
}
}
voidkc_xinzeng()//新增课程
{
inti=0,j,inp;
FILE*fp;
structcoursecourse_new;
structcoursecourses[N];
system("cls");
printf("\n\n☆--☆--☆--请输入课程信息:
");
printf("\n\n课程编号:
\n");
scanf("%d",&course_new.num1);
printf("\n课程名称:
\n");
scanf("%s",course_new.name1);
printf("\n课程学分:
\n");
scanf("%d",&course_new.score);
printf("\n课程性质:
\n");
scanf("%s",&course_new.kc_xingzhi);
printf("\n课程学时:
\n");
scanf("%d",&course_new.kc_xueshi);
printf("\n开课学期:
\n");
scanf("%d",&course_new.kaikexueqi);
if((fp=fopen("course.dat","rb"))!
=NULL)
{
do
{
fread(&courses[i],sizeof(structcourse),1,fp);
i=i+1;
}while(!
feof(fp));
fclo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 兰州 交通大学
![提示](https://static.bingdoc.com/images/bang_tan.gif)