《程序设计基础课程设计报告》由会员分享,可在线阅读,更多相关《程序设计基础课程设计报告(22页珍藏版)》请在金锄头文库上搜索。
1、.-课程设计(大作业)报告课程设计(大作业)报告课程名称:程序设计基础设计题目:学生成绩记录薄设计院系:信息技术学院班级:设 计 者:学号:指导教师:设计时间:2013.7 8.-2013.7.13信息技术学院-可修编.-XXXX 学院课程设计(大作业)任务书学院课程设计(大作业)任务书姓名:院(系) :信息技术学院专业:计算机科学与技术学号:任务起止日期:2013.7 .8-2013.7.13课程设计题目:学生成绩记录薄设计课程设计要求:(1)通过课程设计,进一步掌握C 语言的语法结构,基本流程,更加深入和全面理解所学的基本概念、基本原理和基本方法。(2)独立实践的机会,将课本上的理论知识和
2、实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高程序编制、程序调试及综合应用的能力(3)明确课程设计的目的,通过布置具有一定难度的,能综合运用所学知识的程序设计题目。(4)程序设计经过需求分析,明确程序设计题目要求,进行合理的设计,编码阶段编出的程序易读、易懂并具有良好的交互性,界面清晰。测试阶段应指导学生编写测试用例,尽量多地找出程序中的错误,进行调试。工作计划及安排:第一天的,两个人合作选定题目,建立起程序的构思图形,了解题目意思,确立程序的方向,并且查阅一些资料开始构建程序。第二天,两人商量分工合作,确定谁写那段函数,并且在总体思路的框架下,逐步写程序,并确保证程序无误。第三天
3、,将小程序合并,进行调试,对里面出现的问题协商合作共同解决。第四天,开始写实验报告,对每次失败原因进行总结,并且整合两人思想纂写报告。第五天,实训课也接近尾声,和班上的同学交流心得体会。指导教师签字2013 年7 月8 日-可修编.-课程设计(大作业)成绩课程设计(大作业)成绩学号:指导教师:课程设计题目:学生成绩记录薄设计总结:通过一周 C 语言课程设计, 不仅增加了我对 C 语言学习的兴趣, 还让我对 C 语言有了更深的了解。在这次的实训中, 我们通过自己动手查找资料,并自己设计程序,还上机运行验证我们的程序。虽然在上机调试过程中,我遇到了很多的困难, (比如:很难理解一些逻辑思维上的东西
4、)但通过自己不断的重新理解和修正,最终还是成功的完成了程序的设计。那种喜悦感难以用言语来表达, 这让我感觉到学习也可以是快乐的。 在这次设计我不单单学习到了 C 语言的知识,也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。有许多知识,光靠老师上课所讲的和自己看书得到的,还远远不够,C 语言主要是通过上机来熟悉并且运用的, 这次的实训课让我深刻的明白了这一点。 所以在以后的学习生活中,我要经常写程序并上机进行调试,不断从中学习新的知识。还有一点就是:不懂就问。 遇到难题实在解决不了的, 问老师同学, 和同学共同讨论, 有合作精神也是很重要的。希望以后还有更多的实训机会,让我得
5、到锻炼。指导教师评语:成绩:填表时间:指导教师签名-可修编.-学生成绩记录薄设计学生成绩记录薄设计一、课程设计目的与要求一、课程设计目的与要求1.1.课程设计目的课程设计目的(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。(2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。2.2. 课程设计要求课程设计要求设计一个简易学生成绩记录簿设计,其中包括:,学号,C 语言成绩;具体功能:1系统以菜单方式工作2. 创建学生成绩信息并以磁盘文件保存;3. 读取磁盘文件并显示输出所有
6、学生的成绩;4. 查询学生成绩(1)按学号查询成绩(2)学号 XX 查询成绩5添加成绩记录;6修改指定 XX 或学号的学生的成绩并可存盘;7显示输出 60 分以下、6079、8089、90 分以上各分数段的学生信息。二、总体设计二、总体设计根据系统的要求,系统总体设计如图1 所示。-可修编.-学生成绩记录薄学生信息输入读取并显示所有成绩学号查询成绩成绩XX查询成绩添加成绩记录修改学生成绩结束程序图 1 系统总体结构三、详细设计三、详细设计1 1、数据结构设计、数据结构设计#include#include#include#includeint n=4;struct studentint num;
7、/*学号*/char name10;/*/float score3;/*成绩*/2 2函数说明函数说明1.1.主函数主函数main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能 。2.2.其他部分功能函数包括其他部分功能函数包括(1) 将学生成绩信息保存为文件void save();算法思想:-可修编.-定义指向文件的指针变量;输入保存路径及文件名,打开文件,若不能打开文件给出提示信息;将存有学生成绩信息的结构体数组信息依次保存到文件中。(2) 学生成绩信息录入函数void input()算法思想:依次录入结构体数组中所包含的各个成员;直到输入的结构体成员XX 息为
8、4,数据输入结束;返回实际录入的学生成绩信息数。(3)从文件中读出学生成绩信息void output();算法思想:定义指向结构体变量的指针和指向文件的指针;输入文件的路径,打开文件,若不能打开文件给出提示信息;将文件中的信息依次读出,最后结构体的指针为NULL。3 3函数设计函数设计(1 1)主菜单函数)主菜单函数 main()main()功能:函数返回值为整数,代表所选的菜单项int main ()printf(* n);printf( n);printf(n);printf( 欢迎进入学生成绩记录系统 n);printf( n);printf( 【1】 - 创建学生成绩信息n);prin
9、tf( n);printf( 【2】 - 显示所有学生成绩信息n);printf(n);printf(【3】- 添加学生成绩信息n);printf( n);printf( 【4】 - 查询学生成绩信息n);printf( n);printf( 【5】 - 修改学生的信息n);printf( n);printf( 【6】 - 按分数段显示学生的信息n);-可修编.-printf( n);printf( 【0】 - 退出n);printf( n);printf(* n);printf( 请输入相应菜单编号:);(2 2)我负责编写的程序)我负责编写的程序A.A.添加学生信息添加学生信息void A
10、ddstudent()FILE *fp;struct student s;fp=fopen(stu.dat,ab);if(fp=fopen(stu.dat,ab)=NULL)printf(File open error!n);elseprintf(请输入所增加学生的 学号c 语言成绩:n);scanf(%d,&s.num );scanf(%s,s.name);scanf(%f,&s.score0);fwrite (&s,sizeof(struct student),1,fp);fclose(fp);/*关闭文件*/printf(写入成功!n);/end function Addstudent;
11、B.B.修改学生成绩修改学生成绩void modify()int number,i;printf(请输入要修改信息的学生学号:);scanf(%d,&number);for(i=0;in;i+)if(number=studi.num)break;/*查找判断*/if(in)/*查找判断*/printf(请输入修改后的学生的信息:);printf(n 请输入学生的 c 语言成绩:);-可修编.-scanf(%f,&studi.score0);save();elseprintf(没找到该学生的信息n);system(paues);system(cls);C.C.查询学生成绩查询学生成绩void n
12、amecheck(void);void scorecheck(void);void searchmenu()printf( * 欢迎进入学生成绩查询系统 * n);printf(*1-按 XX 查询成绩* n);printf(*2-按学号查询成绩* n);printf(*3-返回上一层* n);printf(*4-退出* n);printf( * n);printf( 请输入相应菜单编号:);int m;scanf(%d,&m);switch(m)case 1:namecheck();printf(n);system(PAUSE);system(CLS);break;case 2:scorec
13、heck();printf(n);system(PAUSE);system(CLS);break;case 3:main();break;case 4:exit(0); break;void namecheck()char name10;printf(按照 XX 查询请按n);printf(n 请输入 XX:);scanf(%s,&name);-可修编.-printf(查询结果n);printf(学号c 语言成绩n);if(strcpy(studi.name,name)printf(%d%s%.2fn,studi.num,studi.name,studi.score0);void scorec
14、heck()int b;printf(按照学号查询请按n);printf(n 请输入学号:);scanf(%d,&b);printf(查询结果n);printf(学号c 语言成绩n);for(i=0;in;i+)if(studi.num =b)printf(%d%s%.2fn,studi.num,studi.name,studi.score0);四、程序清单和执行结果四、程序清单和执行结果1.1.头文件头文件#include#include#include#includeint n=4;struct studentint num;/*学号*/-可修编.-char name10;/*/float
15、 score3;/*成绩*/*以下是函数原型*/void save(void);void input(void);void output(void);void modify();/*修改信息*/void searchmenu(void);/*查询信息*/void namecheck(void);/*按 XX 查询*/void scorecheck(void);/*按学号查询*/void Addstudent();/*添加信息*/void sclsearch();/*成绩按分数段显示*/2.2.函数源程序代码与运行结果函数源程序代码与运行结果11函数源程序代码函数源程序代码#include#in
16、clude#include#includeint n=4;struct studentint num;char name10;float score3;stud100;int i,choose,a,t=0;long int num;int main ()void save(void);void input(void);void output(void);void modify();void searchmenu(void);void Addstudent();void sclsearch();while(1)-可修编.-printf(* n);printf( n);printf(n);prin
17、tf( 欢迎进入学生成绩记录系统 n);printf( n);printf( 【1】- 创建学生成绩信息n);printf( n);printf( 【2】- 显示所有学生成绩信息n);printf( n);printf( 【3】- 添加学生成绩信息n);printf( n);printf( 【4】- 查询学生成绩信息n);printf( n);printf( 【5】- 修改学生的信息n);printf( n);printf( 【6】- 按分数段显示学生的信息n);printf( n);printf( 【0】- 退出n);printf( n);printf(* n);printf( 请输入相应菜
18、单编号:);scanf(%d,&a);switch(a)case 1:input();save();break;case 2:output();printf(n);system(PAUSE);system(CLS);break;case 3:Addstudent();printf(n);system(PAUSE);system(CLS);break;-可修编.-case 4:searchmenu();printf(n);system(PAUSE);system(CLS);break;case 5:modify();printf(n);system(PAUSE);system(CLS);brea
19、k;case 6:sclsearch();printf(n);system(PAUSE);system(CLS);break;case 0:exit(0);default: ;return 0;void save()FILE *fp;if (fp=fopen(stu.dat,wb)=NULL)/*以只写的方式打开文件*/printf(无法打开文件!n);return ;for(i=0;in;i+)if (fwrite (&studi,sizeof(struct student),1,fp)!=1)/*写入字节为 1 的信息在文件中*/printf(文件写入错误!n);fclose(fp);/*
20、关闭文件*/void input()/录入学生成绩-可修编.-int i;char a;for(i=0;in;i+)printf(n请输入学生成绩信息:n);printf(n 请依次输入 学号、 、c 语言成绩:n);scanf(%d%s%f,&studi.num,studi.name,&studi.score0);printf(输入:y(继续),n(终止)!n);fflush(stdin);scanf(%c,&a);if(a=n | a=N)break;n=i+1;void Addstudent()FILE *fp;struct student s;fp=fopen(stu.dat,ab);
21、if(fp=fopen(stu.dat,ab)=NULL)printf(File open error!n);elseprintf(请输入所增加学生的 学号c 语言成绩:n);scanf(%d,&s.num );scanf(%s,s.name);scanf(%f,&s.score0);fwrite (&s,sizeof(struct student),1,fp);fclose(fp);/*关闭文件*/printf(写入成功!n);/end function Addstudent;void output()int i;/float s;FILE *fp;if(fp=fopen(stu.dat,r
22、b)=NULL)printf(cannot open filen);exit(0);-可修编.-printf(n 学号c 语言成绩n);for(i=0;fread(&studi,sizeof(struct student),1,fp)=1;i+)printf(%d%10s%10.2fn,studi.num,studi.name,studi.score0);fclose(fp);n=i;void modify()int number,i;printf(请输入要修改信息的学生学号:);scanf(%d,&number);for(i=0;in;i+)if(number=studi.num)break
23、;/*查找判断*/if(in)/*查找判断*/printf(请输入修改后的学生的信息:);printf(n 请输入学生的 c 语言成绩:);scanf(%f,&studi.score0);save();elseprintf(没找到该学生的信息n);system(paues);system(cls);void namecheck(void);void scorecheck(void);void searchmenu()printf( * 欢迎进入学生成绩查询系统 * n);printf(*1-按 XX 查询成绩* n);printf(*2-按学号查询成绩* n);printf(*3-返回上一层*
24、 n);printf(*4-退出* n);printf( * n);printf( 请输入相应菜单编号:);int m;scanf(%d,&m);switch(m)-可修编.-case 1:namecheck();printf(n);system(PAUSE);system(CLS);break;case 2:scorecheck();printf(n);system(PAUSE);system(CLS);break;case 3:main();break;case 4:exit(0); break;void namecheck()char name10;printf(按照 XX 查询请按n)
25、;printf(n 请输入 XX:);scanf(%s,&name);printf(查询结果n);printf(学号c 语言成绩n);if(strcpy(studi.name,name)printf(%d%s%.2fn,studi.num,studi.name,studi.score0);void scorecheck()int b;printf(按照学号查询请按n);printf(n 请输入学号:);scanf(%d,&b);printf(查询结果n);printf(学号c 语言成绩n);for(i=0;in;i+)if(studi.num =b)-可修编.-printf(%d%s%.2fn
26、,studi.num,studi.name,studi.score0);void sclsearch()int i;printf(90 分以上:n);printf(学号c 语言成绩n);for(i=0;i=90)printf(%d%s%.2fn,studi.num,studi.name,studi.score0);printf(8089:n);printf(学号c 语言成绩n);for(i=0;i=80&studi.score090)printf(%d%s%.2fn,studi.num,studi.name,studi.score0);printf(7079:n);printf(学号c 语言成
27、绩n);for(i=0;i=70&studi.score080)printf(%d%s%.2fn,studi.num,studi.name,studi.score0);printf(6069:n);printf(学号c 语言成绩n);for(i=0;i=60&studi.score070)printf(%d%s%.2fn,studi.num,studi.name,studi.score0);printf(60 分以下:n);printf(学号c 语言成绩n);for(i=0;in;i+)if(studi.score060)printf(%d%s%.2fn,studi.num,studi.nam
28、e,studi.score0);-可修编.-(1)(1)系统以菜单方式工作系统以菜单方式工作(2 2)学生成绩录入)学生成绩录入-可修编.-(3)(3)显示所有学生成绩显示所有学生成绩-可修编.-(4)(4)查询学生成绩查询学生成绩按按 XXXX 查询查询按学号查询按学号查询(5)(5)修改学生成绩修改学生成绩-可修编.-(6)(6)按分数段显示学生成绩按分数段显示学生成绩-可修编.-五、调试与测试五、调试与测试我在调试我编写的程序当中出现了很多问题,比如,按 XX 查询学生成绩中 if(strcpy(studi.name,name),开始我写成了 studi.name=name,怎么改都有错
29、误,无奈之下请教了同学,最后在同学的帮助下改对了,原来这需要使用 strcpy 函数才能实现。可以说出的问题还是蛮多的。好不容易改对了一个,有出现了新的错误,就是输入 XX 后,所有学生的成绩都显示了,还把其他学生的 XX 改成了我输入的那个,最后人真的检查了一遍才发现多谢了一条语句for(i=0;in;i+)。这些问题还是给我留下了很深的映象,也提醒了我基础知识不踏实的警钟,所以期末考试之前我一定要好好复习了!六、结语六、结语通过一周 C 语言课程设计,不仅使我们更加牢固地掌握了程序设计的知识,也让自己深刻的认识到自己的不足与缺点, 有许多知识都存在不是完全了解及掌握, 这一系列的问题通过自
30、己上机操作已经减少了很多。这我明白光靠书本上学习的和老师讲的是不够,有许多知识是需要我们去实践才能学到的(比如:在调试的过程中我发现自己在编程这方面的缺点与不足)这不断完善了自己,也不断丰富了自己对于 C 语言的了解和掌握。而且这让自己明白和体会到了 C 语言其实具有语句简洁,使用灵活,执行效率高等特点。与此同时,还让我明白了不懂就问的重要性。现在的我们总是太过于要面子,羞于问别人,总觉得这个问题会不会太白痴了,别人会不会嘲笑我。其实这些只是我们自己想太多了而已,老师和同学都很热情的,他们都很乐意教我们的。有团队合作的精神也非常的重要,有些问题光靠自己力量做太过于单薄,团队合作显得尤为重要。在这次合作中,-可修编.-我从同伴身上学到了很多自己身上缺少的优点,比如细心,我做事有些太过于粗心,总是在一些小的地方不够认真,使程序出现了许多的小错误,幸好在同伴的帮助顺利的解决了这些问题。总之,上机的实训可以让我们通过实际操作,更加深刻的学会 C 语言程序编程的基本步骤、基本方法。也增强了自己的动手与实践能力。希望以后多一些这样的实训,让我不断地提高。-可修编.