C语言课程设计报告模板_第1页
C语言课程设计报告模板_第2页
C语言课程设计报告模板_第3页
C语言课程设计报告模板_第4页
C语言课程设计报告模板_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录第1章 绪论第2章 系统总体设计第3章 系统详细设计第4章 系统调试与测试第5章结论附录 第一章 绪论本程序为一个学生C语言成绩管理系统,对学生的C语言成绩进行管理,学生的信息包括学号,姓名,C语言成绩,输入这些信息,本程序可以自动计算总成绩,可以按高分到低分进行排名,并对输入信息的人数进行汇总.课程设计的内容编辑一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩。具体功能:1.创建信息链表并以磁盘文件保存2.读取磁盘文件并显示输出所有学生的成绩3.按学号或姓名查询成绩4.添加成绩记录5.修改指定姓名或学生的成绩并可存盘6.显示输出60分以下,6079,8089,90以上各分数

2、段学生信息第二章 系统总体设计 主菜单1.录入数据2.显示数据3.查找数据4.修改数据5.删除数据6.退出程序2.按姓名查找1.按学号查找2.显示部分数据1.显示全部数据 第三章 系统详细设计1.功能模块设计:(1).主菜单:进入主菜单界面,供用户进行功能选择。1. 录入学员信息2. 显示学员总成绩信息3. 对总成绩排序4. 显示学员单科成绩排序5. 添加学员信息6. 删除学员信息7. 修改学员信息8. 查询学员信息9. 从文件读入学员信息10. 删除文件中学员信息11. 保存学员信息12. 退出 (2).录入数据功能:提示用户分别输入学生的学号,姓名,分数。每个学生数据为一个结构体。程序自动

3、将该结构体按学生学号从小到大进行排列。每次只输入一个学生信息,在输入完毕后提示是否继续输入。禁止输入学号为零。当输入的学号已存在时,提示该学号存在并禁止输入。(3).显示数据功能:a.显示全部数据;b.显示部分数据;(4).查询功能:a.按学生学号查询: 提示输入要查询的学生的学号,将系统中的数据与该学号进行比对,得到该生信息。若查询不到,提示无该生信息。回到该功能菜单。b.按学生姓名查询: (方法同上)每次只能查询并显示一个学生信息,显示完毕后按任意键退回到查询功能的主界面。回到该功能菜单。(5).更改数据功能:提示输入需要更改数据的学生姓名。输入姓名后程序显示该生信息,并分别提示用户输入该

4、生的学号,分数。更改完提示是否继续更改。(6).删除数据功能:提示输入需要删除数据的学生学号。输入学号后程序显示该生信息,要求用户确认删除。删除完提示是否继续删除。(7).退出程序:对数据进行存盘,然后退出程序。 此外该程序还有添加数据,排序数据,从文件读入数据,删除文件中数据,保存数据等功能,可按主菜单进行选择。 (8) .相关流程图:主菜单功能选择界面流程图主菜单:输入功能序号开始读取文件数据序号1序号3序号2序号4序号5序号61.增加学生信息2.显示学生信息3.查找学生信息4.修改学生信息5.删除学生信息6.保存并退出程序YYYYYYNNNNNN132546 第4章 系统调试与测试(1)

5、读取文件数据:一开始不能文件中读取数据,原因是未开辟新内存空间用于存放数据。修改后,从文件中读出大量乱码,原因是循环条件有问题。修改循环体后,程序不再读出乱码,但却只能重复读取文件中的最后一个数据,经过这么多次的调试,程序终于能正常读取文件中的数据。(2) 输出数据:刚开始调试程序时,并未发现显示数据功能有什么问题,但随着调试次数的增加,有时会输入错误数据,问题也就出现了。在输入大量数据时,若有一次输入错误则要重新执行。所以我在输出数据时加入清屏功能,为了防止输入错误,之后按提示继续输出。(3) 当输入学生学号为零时:原本计划当输入学生学号为0时提示不能为0。在调试过程中,遇到输入学生学号为0

6、时,程序确实会提示不能为0,当此时再选择显示所有数据,数据会产生错误。原因是我原本的程序是在指针按输入的学号的大小进行定位后再判断输入的学号是否为0,这就产生错误,导致数据不能正常输出。(4) 删除学号为零的学生信息时:因为在增加数据时已设置输入学号不能为0,所以应该不存在学号为0的学生信息。但当我在删除数据时输入学号0时,程序却搜索出了一个学号为0,名字和分数均为乱码的“学生”信息。将其删除后,再运行显示数据功能是就会出现一个学号和分数都为0,姓名为空的“学生”信息。再次对其进行删除操作,则会导致运行该程序的系统自动关闭。在程序中加入限制条件后,如果输入学号为0,则会提示查无此学生信息。第5

7、章 结论课程设计的学习与体会:在这次的课程设计中,我再次学习了有关结构体,函数,文件读写等知识。在完成这次课程设计的过程中,使我不断地加深对C语言各知识点的理解和掌握,也使我明白到自己在C语言这方面的知识是多么的不足,使我对C语言这门课程产生了兴趣,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用。当我在写设计论文时,原本以为已没有什么错误的程序却又变得漏洞百出。每出现一个问题,就得回到程序中认真地查找问题,虽说并不是每个问题都能得到一个很好的解决,但毕竟又使得自己的程序又相对完善了一些,自己也学会了更多的知识,经过这次课程设计,

8、不仅使我学到了更多的知识,也教会了我做事的道理:耐心,细心。 附 录程序清单:#include#include #include /*清屏*/#include /*显示目录*/#include #define MAX 80 void input(); /*输入数据函数*/void sort();/*排序数据函数*/void sort1(); void sort2(); void display();/*显示数据函数*/ void display1();void insert(); /*插入数据函数*/void del(); /*删除数据函数*/void average(); /*平均值函数*/

9、void find();/*查找数据函数*/void find1();void find2(); void save(); /*保存数据函数*/void read(); /*读出数据函数*/void del_file(); /*删除文件函数*/void modify(); /*修改文件函数*/int now_no=0; struct student int no; char name20; float score1; float score2; float score3; float sort; float ave; float sum; ; struct student stuMAX,*p;

10、 main()/*主函数*/ int as; char ch; do start: printf(nnnttt欢迎使用学生c语言成绩记录系统n); printf(nnnnnntt*按任意键继续*); ch=getch(); while(!ch); system(cls); /*一下为功能选择模块*/ do printf(ntt1.录入学员信息nntt2.显示学员总成绩信息nntt3.对总成绩排序nntt4.显示学员单科成绩排序nntt5.添加学员信息nntt6.删除学员信息nntt7.修改学员信息nntt8.查询学员信息nntt9.从文件读入学员信息nntt10.删除文件中学员信息nntt11

11、.保存学员信息nntt12.退出n); printf(tttt选择功能选项(输入所选功能前的数字):); fflush(stdin); /*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/ scanf(%d,&as); switch(as) case 1:system(cls); input(); break; case 2:system(cls); display(); break; case 3:system(cls); sort(); break; case 4:system(cls); display1(); break; case 5:system(cls); inse

12、rt(); break; case 6:system(cls); del(); break; case 7:system(cls); modify(); break; case 8:system(cls); find(); break; case 9:system(cls); read(); break; case 10:system(cls); del_file(); break; case 11:system(cls); save(); break; case 12:system(exit); exit(0); default:system(cls); goto start; while(

13、1);/*while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break 或者return 跳出循环*/ /*至此功能选择结束*/ void input()/*原始数据录入模块*/ int i=0; char ch; do printf(tttt1.录入学员信息n输入第%d个学员的信息n,i+1); printf(n输入学生学号:); scanf(%d,&stui.no); fflush(stdin); printf(n输入学员姓名:); fflush(stdin); gets(); printf(n输入学员平时成绩:); s

14、canf(%f,&stui.score1); printf(n输入学员卷面成绩:); fflush(stdin); scanf(%f,&stui.score2); printf(n学员总成绩:); fflush(stdin); printf(%f,stui.sum=stui.score1+stui.score2); printf(nn); i+; now_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls); void sort()/*排序数据函数*/

15、 struct student temp; int i,j; average(); for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.avestuj.ave) temp=stuj; stuj=stuj-1; stuj-1=temp; printf(排序以完成进入功能2可进行显示n); system(pause); system(cls); void sort1()/*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(st

16、uj-1.score1stuj.score1) temp=stuj; stuj=stuj-1; stuj-1=temp; void sort2()/*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score2stuj.score2) temp=stuj; stuj=stuj-1; stuj-1=temp; void display()/*显示数据函数*/ int i; char as; average(); do printf(ttt班级学员信息列表n);

17、printf(t学号t姓名t平时成绩t卷面成绩t总成绩t平均值n); for(i=0;inow_no&0;i+) printf(t%dt%st%.2f t%.2f t%.2ft%.2fn,stui.no,,stui.score1,stui.score2,stui.score1+stui.score2,stui.ave); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls); void display1()/*显示数据函数*/ int i; char as; do p

18、rintf(ttt班级学员score1成绩排序n); printf(t学号t姓名t平时成绩n); sort1(); for(i=0;inow_no&0;i+) printf(t%dt%st%st%.2ftn,stui.no,,stui.score1); printf(ttt班级学员score2成绩排序n); printf(t学号t姓名t卷面成绩n); sort2(); for(i=0;inow_no&0;i+) printf(t%dt%st%st%.2ftn,stui.no,,stui.score2); printf(tt

19、t班级学员score3成绩排序n); printf(t学号t姓名t总成绩n); /*sort3();*/ for(i=0;inow_no&0;i+) printf(t%dt%st%st%.2ftn,stui.no,,stui.score1+stui.score2); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls); void insert()/*插入数据函数*/ char ch; do printf(ntt输入新插入学员队信息n); printf(n输入学生学号

20、:); scanf(%d,&stunow_no.no); fflush(stdin); printf(n输入学员姓名:); fflush(stdin); gets(stunow_); printf(n输入学员平时成绩:); fflush(stdin); scanf(%f,&stunow_no.score1); printf(n输入学员卷面成绩:); fflush(stdin); scanf(%f,&stunow_no.score2); printf(n学员总成绩:); fflush(stdin); printf(%f,stunow_no.sum=stunow_no.score1+

21、stunow_no.score2); printf(nn); now_no=now_no+1; sort(); printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); void del()/*删除数据函数*/ int inum,i; printf(输入要删除学员的学号:); fflush(stdin); scanf(%d,&inum); for(i=0;inow_no;i+) if(stui.no=inum) if(i=now_no)now_no-=1; else stui=stunow_

22、no-1; now_no-=1; sort(); break; system(cls); void save()/*保存数据函数*/ FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,w)=NULL) printf(n保存失败!); exit(0); for(i=0;inow_no;i+) stui.sum=stui.score1+stui.score2; stui.ave=stui.sum/2; fprintf(fp,t%dt%s

23、t%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.score1,stui.score2,stui.score3,stui.ave); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls); void find()/*查询函数*/ int i; char str20,as; do printf(输入要查询的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) pri

24、ntf(t学号t姓名t平时成绩t卷面成绩t总成绩n); printf(t%dt%st%.2ft%.2ft%.2ft%.2fn,stui.no,,stui.score1,stui.score2,stui.score3); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); system(cls); void average()/*求平均数*/ int i; for(i=0;inow_no;i+) stui.sum=stui.score1+stui.score2; stui.ave=stui.sum/2; void modify()/*修改数据函数*/ int i; char str20; printf(输入要修改的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(,str) system(cls); printf(ntt输入新插入学员队信息n); printf(n输入学生学号:); fflush(stdin); scanf(%d,&stui.no); printf(n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论