您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > C语言课程设计报告模板
目录第1章绪论...............................................第2章系统总体设计...............................第3章系统详细设计...............................第4章系统调试与测试...........................第5章结论.................................................附录.............................................................第一章绪论本程序为一个学生C语言成绩管理系统,对学生的C语言成绩进行管理,学生的信息包括学号,姓名,C语言成绩,,输入这些信息,本程序可以自动计算总成绩,可以按高分到低分进行排名,并对输入信息的人数进行汇总.课程设计的内容编辑一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩。具体功能:1.创建信息链表并以磁盘文件保存2.读取磁盘文件并显示输出所有学生的成绩3.按学号或姓名查询成绩4.添加成绩记录5.修改指定姓名或学生的成绩并可存盘6.显示输出60分以下,60~79,80~89,90以上各分数段学生信息第二章系统总体设计主菜单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).显示数据功能:a.显示全部数据;b.显示部分数据;(4).查询功能:a.按学生学号查询:提示输入要查询的学生的学号,将系统中的数据与该学号进行比对,得到该生信息。若查询不到,提示无该生信息。回到该功能菜单。b.按学生姓名查询:(方法同上)每次只能查询并显示一个学生信息,显示完毕后按任意键退回到查询功能的主界面。回到该功能菜单。(5).更改数据功能:提示输入需要更改数据的学生姓名。输入姓名后程序显示该生信息,并分别提示用户输入该生的学号,分数。更改完提示是否继续更改。(6).删除数据功能:提示输入需要删除数据的学生学号。输入学号后程序显示该生信息,要求用户确认删除。删除完提示是否继续删除。(7).退出程序:对数据进行存盘,然后退出程序。此外该程序还有添加数据,排序数据,从文件读入数据,删除文件中数据,保存数据等功能,可按主菜单进行选择。(8).相关流程图::主菜单功能选择界面流程图主菜单:输入功能序号开始读取文件数据序号1序号3序号2序号4序号5序号61.增加学生信息2.显示学生信息3.查找学生信息4.修改学生信息5.删除学生信息6.保存并退出程序YYYYYYNNNNNN132546第4章系统调试与测试(1)读取文件数据:一开始不能文件中读取数据,原因是未开辟新内存空间用于存放数据。修改后,从文件中读出大量乱码,原因是循环条件有问题。修改循环体后,程序不再读出乱码,但却只能重复读取文件中的最后一个数据,经过这么多次的调试,程序终于能正常读取文件中的数据。(2)输出数据:刚开始调试程序时,并未发现显示数据功能有什么问题,但随着调试次数的增加,有时会输入错误数据,问题也就出现了。在输入大量数据时,若有一次输入错误则要重新执行。所以我在输出数据时加入清屏功能,为了防止输入错误,之后按提示继续输出。(3)当输入学生学号为零时:原本计划当输入学生学号为0时提示不能为0。在调试过程中,遇到输入学生学号为0时,程序确实会提示不能为0,当此时再选择显示所有数据,数据会产生错误。原因是我原本的程序是在指针按输入的学号的大小进行定位后再判断输入的学号是否为0,这就产生错误,导致数据不能正常输出。(4)删除学号为零的学生信息时:因为在增加数据时已设置输入学号不能为0,所以应该不存在学号为0的学生信息。但当我在删除数据时输入学号0时,程序却搜索出了一个学号为0,名字和分数均为乱码的“学生”信息。将其删除后,再运行显示数据功能是就会出现一个学号和分数都为0,姓名为空的“学生”信息。再次对其进行删除操作,则会导致运行该程序的系统自动关闭。在程序中加入限制条件后,如果输入学号为0,则会提示查无此学生信息。第5章结论课程设计的学习与体会:在这次的课程设计中,我再次学习了有关结构体,函数,文件读写等知识。在完成这次课程设计的过程中,使我不断地加深对C语言各知识点的理解和掌握,也使我明白到自己在C语言这方面的知识是多么的不足,使我对C语言这门课程产生了兴趣,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用。当我在写设计论文时,原本以为已没有什么错误的程序却又变得漏洞百出。每出现一个问题,就得回到程序中认真地查找问题,虽说并不是每个问题都能得到一个很好的解决,但毕竟又使得自己的程序又相对完善了一些,自己也学会了更多的知识,经过这次课程设计,不仅使我学到了更多的知识,也教会了我做事的道理:耐心,细心。附录程序清单:#includestdio.h#includetime.h#includeconio.h/*清屏*/#includestdlib.h/*显示目录*/#includestring.h#defineMAX80voidinput();/*输入数据函数*/voidsort();/*排序数据函数*/voidsort1();voidsort2();voiddisplay();/*显示数据函数*/voiddisplay1();voidinsert();/*插入数据函数*/voiddel();/*删除数据函数*/voidaverage();/*平均值函数*/voidfind();/*查找数据函数*/voidfind1();voidfind2();voidsave();/*保存数据函数*/voidread();/*读出数据函数*/voiddel_file();/*删除文件函数*/voidmodify();/*修改文件函数*/intnow_no=0;structstudent{intno;charname[20];floatscore1;floatscore2;floatscore3;floatsort;floatave;floatsum;};structstudentstu[MAX],*p;main()/*主函数*/{intas;charch;do{start:printf(\n\n\n\t\t\t欢迎使用学生c语言成绩记录系统\n);printf(\n\n\n\n\n\n\t\t******************按任意键继续********************);ch=getch();}while(!ch);system(cls);/*一下为功能选择模块*/do{printf(\n\t\t1.录入学员信息\n\n\t\t2.显示学员总成绩信息\n\n\t\t3.对总成绩排序\n\n\t\t4.显示学员单科成绩排序\n\n\t\t5.添加学员信息\n\n\t\t6.删除学员信息\n\n\t\t7.修改学员信息\n\n\t\t8.查询学员信息\n\n\t\t9.从文件读入学员信息\n\n\t\t10.删除文件中学员信息\n\n\t\t11.保存学员信息\n\n\t\t12.退出\n);printf(\t\t\t\t选择功能选项(输入所选功能前的数字):);fflush(stdin);/*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/scanf(%d,&as);switch(as){case1:system(cls);input();break;case2:system(cls);display();break;case3:system(cls);sort();break;case4:system(cls);display1();break;case5:system(cls);insert();break;case6:system(cls);del();break;case7:system(cls);modify();break;case8:system(cls);find();break;case9:system(cls);read();break;case10:system(cls);del_file();break;case11:system(cls);save();break;case12:system(exit);exit(0);default:system(cls);gotostart;}}while(1);/*while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break或者return跳出循环*//*至此功能选择结束*/}voidinput()/*原始数据录入模块*/{inti=0;charch;do{printf(\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n,i+1);printf(\n输入学生学号:);scanf(%d,&stu[i].no);fflush(stdin);printf(\n输入学员姓名:);fflush(stdin);gets(stu[i].name);printf(\n输入学员平时成绩:);scanf(%f,&stu[i].score1);printf(\n输入学员卷面成绩:);fflush(stdin);scanf(%f,&stu[i].score2);printf(\n学员总成绩:);fflush(stdin);printf(%f,stu[i].sum=stu[i].score1+stu[i].score2);printf(\n\n);i++;now_no=i;printf(是否继续输入?(Y/N));fflush(stdin);ch=getch();system(cls);}while(ch!='n'&&ch!='N');system(cls);}voidsort()/*排序数据函数*/{structstudenttemp;inti,j;average();for(i=1;inow_no;i++){for(j=1;j=now_no-i;j++){if(stu[j-1].avestu[j].ave){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}printf(排序以完成进入功能2可进行显示\n);system(pause);system(cls);}voidsort1()/*排序数据函数*/{structstudenttemp;inti,j;for(i=1;inow_no;i++){for(j=1;j=now_no-i;j++){if(stu[j-1].score1stu[j].score1){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}voidsort2()/*排序数据函数*/{structstudenttemp;inti,j;for(i=1;inow_no;i++){for(j=1;j=now_no-i;j++){if(stu[j-1].score2stu[j].score2){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=te
本文标题:C语言课程设计报告模板
链接地址:https://www.777doc.com/doc-3259630 .html