c语言课程设计-兰州交通大学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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()
{
int i,j;
char ch;
while(ch=getch()!='\r')
{
i++;
printf("%c",ch);
}
2.2 错因分析
int i,j;
此处将变量j应该删去,因为变量j在后面程序没有出现,而它占用一定的内存单元。浪费储存空间。
while(ch=getch()!='\r')
此处的\r应该改为\n,因为转义字符\r表示回车的意思,系统会认按回车键是输入字符,无法识别。因此程序无法执行,无法得出结果。
3 综合题
3.1题目
学生选修课程系统设计
(1)需求分析
系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作。
定义的机构体如下:
struct course //课程信息结构体
{
int num1; //课程编号
char name1[20]; //课程名称
int score; //学分
char kc_xingzhi[10]; //课程性质
int kc_xueshi; //课程学时
int kaikexueqi; //开课学期
};
(2)总体设计
整个系统首页设计为管理员登陆模块和学生登陆模块,在管理员登陆模块中有信息输入模块、信息删除模块、管理员信息浏览模块和管理员信息查询模块,在学生登陆模块里有选课模块、学生课程查询模块以及学生课程浏览模块。
(3)详细设计
数据结构采用结构体,这里采用课程信息结构体。
1)信息输入模块
从键盘输入课程信息,写入文件。(fwrite, fprintf)
2)信息浏览模块
从文件中读数据(fread,fscanf),然后再显示。
3)信息查询模块
通过菜单选择查询字段,可以按照课程学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。可以通过菜单选择课程编号,在学生选课信息文件中查询该课程学生选修情况。
3.2 程序功能分析
根据题目已知信息可得,完成后程序应具备如下功能:
(1) 管理员录入课程信息
(2) 管理员删除课程信息
(3) 管理员浏览课程信息
(4) 管理员查询课程信息
(5) 学生选课
(6) 学生查询课程信信息
(7) 学生浏览课程信息
(6) 退出学生选修课系统
3.3 程序模块设计
模块一:头文件,变量定义,函数的声明。对系统所使用的变量进行定义,对函数进行声明。
模块二:登陆密码和首页。声明函数void shouye()和void denglu()。
模块三:管理员对课程信息的添加。声明函数void kc_xinzeng(),通过
fp=fopen("course.dat","wb")写入信息。
模块四:管理员对课程信息的删除。声明函数void kc_shanchu()为管理员删除课程信息函数。
模块五:管理员对课程信息的浏览。声明函数void gi_liulan()为管理员浏览课程信息函数。
模块六:管理员对课程信息查询模块。声明函数void gl_chaxun()为管理员课程查询函数。
模块七:学生选修课模块。声明函数void x_kecheng()实现学生选课。
模块八:学生查询课程模块。声明函数void xs_chaxun()来实现其功能。
模块九:学生浏览课程模块。声明函数void xs_liulan()来实现其功能。
模块十:界面菜单。通过switch()调用以上各函数,来实现气个子函数功能。
3.4 流程图
主函数流程图如图7所示,调用函数流程图详见附录B图B1、图B2、图B3。3.5 源代码
综合题源代码见附录D。
3.6 程序运行截图
综合题的运行结果如图2、图3、图4、图5、图6所示。
图2 选课系统界面图
图3管理员登陆界面
图4学生登陆界面
图5管理员新增课程信息图
图6 学生浏览课程图
Y N
开始
输入密码
密码正确
调用shouye函数
调用denglu函数
结束
图7 主程序的main函数流程图
3.6存在的问题
(1)在调试程序的时候偶尔会遇到程序崩溃的情况。
(2)执行一次任务后以前执行的任务的信息不能删除,导致屏幕信息显得臃肿。
(3)信息保存后在下一次启动时便不能直接显示。
(4)还有就是在输入输出时格式,加入一个格式不合适就可能导致程序运行出错,但是这种错误在进行调试时是检查不出来的。
(5)最后就是在进行文件的录入和输出时,由于刚开始对文件的输入输出不熟练导致出现了大量的错误。
4 总结
通过本次课程设计,我学到了很多让我意想不到的知识,并且对一些基本的
办公软件的运用的熟练度得到了进一步的提升,也学会了运用一些新的软件,例如:Microsoft Office Visio 2003、Visual C++ 6.0等。当然,编写程序的时候也并不
是一帆风顺的,也遇到了很多困难,程序报错、编译不成功、程序不能运行预期
的功能,这些都是最常见的错误,而这也需要我自己动手去逐字逐句的检查,这
也是平常课堂中没有过的体验。综合题目让我懂得了遇到问题时如何去分析题目,首先写出题目的要求再结合现实生活得出让这个问题更加完善的要求,再次写出
算法分析,这次的从语言课程设计不仅让我的思维变得更加慎密更加让我懂得了
如何去合作,锻炼了我的团队协作能力,我和我们小组的同学一起努力最后每个
人都完成了自己课程设计。当然在争论中不免会产生点小摩擦,但仍然无法削减
我们的热情。时至今日我们的程序依然有着或多或少的不够完善的地方,但我觉
得不管怎样,我们的程序能运行出最正确的结果对我们而言就已经是莫大的成功。这次c语言课程设计让我懂得了如何坚持。
最后,我还要向在这次课程设计中给予我帮助的老师和同学们表示最衷心的