还剩24页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《C语言程序设计》课程设计报告题目学生信息管理系统专业电气工程及其自动化班级电气002班学号_____170姓名闫亚运完成日期2011年6月15日第1章选题意义
1.1意义现代科学多元化已经开始了随着科学技术的快速发展和人们生活水平的提高,信息技术越来越深入人心计算机在人类生活和学习中充当着很重要的作用随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统而建立一个方便快捷的管理系统是每个管理者所希望的我设计的是一个关于学生信息管理的数据库系统通过这个系统___可以简捷、方便的对学生信息进行增加、浏览、删除等功能,而用户也可以通过这个系统对学生信息进行查询等功能,从而使学校和个人更方便的查找,浏览学生的信息,并通过成绩排序对学生的情况作进一步的了解,对学生的管理更加便捷
1.2目标通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,__完成有一定工作量的程序设计任务,同时强调好的程序设计风格得到软件工程的综合训练,提高解决实际问题的能力第二章系统功能模块设计
2.1功能模块设计学生管理系统
1、录入学生信息
2、删除学生信息
3、浏览学生信息
4、查找学生信息
4、1按学号查找
4、2按姓名查找
4、3按成绩查找
5、根据总成绩排序
6、保存学生信息
7、将文件导出
8、退出信息系统
2.2函数的设计与描述
(1)数据结构设计本程序中,对于学生信息的记录用了结构数组的形式,对于主要数据结构的应用如下结构数组Typedefstructstudent/*结构体*/{char___hao
[20];/*学号*/charxingming
[20];/*姓名*/intscore[M];/*分数*/intsum;/*总成绩*/}stu[N];
(2)模块接口设计本程序执行的入口是__in函数,然后用switch语句实现对各个函数的调用被调用的函数都是没有形参的,函数直接实现所需要的功能最后,再从__in函数中结束整个程序的运行其中涉及到被调用的函数有Voidmenu显示帮助信息;Voiddengji登记学生信息;Voidshanchu删除学生信息;Voidliulan浏览学生信息;Voidchazhao查找学生信息;Voidpaixu学生信息排序;Voidcunchu存储学生信息;Voiddaochu导出学生信息;第三章程序流程图第四章源代码摘录#includestdio.h#includestring.h#includestdlib.h#includeconio.h#defineM3#defineN100typedefstructstudent{char___hao
[20];charxingming
[20];intscore[M];intsum;}STUDENT;STUDENTstudent[N];intrenshu=0;voidmenu;voidfhzjm//返回主界面函数{charbiaozhi
[20];printf\n;printf还需要操作么?如果需要操作请输入yes,否则请输入no\n;scanf%sbiaozhi;ifstrcmpbiaozhiyes==0{menu;}elseifstrcmpbiaozhino==0exit0;else{printf请输入正确的字符,谢谢!\n;fhzjm;}}voidDengJi//登记学生信息函数{intrs;intijk=1;systemCLS;printf请输入需要输入几个学生信息;scanf%drs;fori=renshu;irenshu+rs;i++k++{printf请输入第%d个学生的学号k;scanf%sstudent[i].___hao;printf请输入学生的姓名;scanf%sstudent[i].xingming;printf请输入学生%d门课的成绩M;forj=0;jM;j++{printf请输入第%d门课的成绩j+1;scanf%dstudent[i].score[j];student[i].sum+=student[i].score[j];}}renshu=renshu+rs;fhzjm;}voidShanChu//删除全部学生信息或者指定学生信息的函数{charshanchuinfo
[10];systemCLS;printf删除全部学生信息请输入\all\,删除指定学号的学生信息请输入\one\\n;scanf%sshanchuinfo;ifstrcmpshanchuinfoall==0{renshu=0;printf删除成功\n\n;}elseifstrcmpshanchuinfoone==0{structstudent*p=NULL;charchoi__
[20];intijk=0;printf请输入你要删除的人的学号:;scanf%schoi__;fori=0;irenshu;i++{ifstrcmpchoi__student[i].___hao==0{k=1;j=i;break;}}ifk{ifrenshu==1{p=student
[0];freep;renshu=0;}else{fori=j;irenshu;i++{student[i]=student[i+1];}renshu=renshu-1;}printf删除成功\n\n;}}else{printf输入数据错误!\n;ShanChu;}fhzjm;}voidLiuLan//查看所有学生的信息函数{intij;systemCLS;ifrenshu==0{printf系统里面没有任何学生的信息!\n;}else{fori=0;irenshu;i++{printf第%d个学生的学号为%s\ni+1student[i].___hao;printf第%d个学生的姓名为%s\ni+1student[i].xingming;forj=0;jM;j++{printf第%d个学生的第%d门课的成绩%d\ni+1j+1student[i].score[j];}printf第%d个学生的总成绩为%d\ni+1student[i].sum;}}fhzjm;}voidChaZhao//根据不同的方式查找学生信息函数{charchoi__
[10]xinxi
[20];intijk=0;systemCLS;ifrenshu==0{printf系统里面没有任何学生的信息!\n;fhzjm;}printf三种查找方式学号,姓名,成绩,请输入查找方式;scanf%schoi__;ifstrcmpchoi__学号==0{printf请输入需要查找学生的学号;scanf%sxinxi;fori=0;irenshu;i++{ifstrcmpxinxistudent[i].___hao==0{j=i;k=1;break;}}ifk==0printf输入信息有误\n;else{printf您所查找的学生的信息为\n;printf----学号----姓名----英语成绩----高数成绩----计算机成绩\t\n;printf------%s------%s-------%d---------%d-------------%d\t\nstudent[j].___haostudent[j].xingmingstudent[j].score
[0]student[j].score
[1]student[j].score
[2];}}elseifstrcmpchoi__姓名==0{printf请输入需要查找学生的姓名\n;scanf%sxinxi;fori=0;irenshu;i++{ifstrcmpxinxistudent[i].xingming==0{j=i;k=1;break;}}ifk==0printf输入信息有误\n;else{printf您所查找的学生的信息为\n;printf----学号-----姓名-----英语成绩-----高数成绩-------计算机成绩---\n;printf----%s-----%s-----------%d-----------%d---------------%d---\nstudent[j].___haostudent[j].xingmingstudent[j].score
[0]student[j].score
[1]student[j].score
[2];}}elseifstrcmpchoi__成绩==0{printf请输入需要查找学生的成绩\n;scanf%sxinxi;fori=0;irenshu;i++{ifstrcmpxinxistudent[i].xingming==0{j=i;k=1;break;}}ifk==0printf输入信息有误\n;else{printf您所查找的学生的信息为\n;printf-----学号-----姓名-----英语成绩-----高数成绩-------计算机成绩-----\n;printf-----%s-----%s-----------%d-----------%d---------------%d-----\nstudent[j].___haostudent[j].xingmingstudent[j].score
[0]student[j].score
[1]student[j].score
[2];}}fhzjm;}voidPaiXu//根据总成绩从高到底排序{structstudent*p1[N]**p2*temp;intij;systemCLS;p2=p1;//将数组的初始地址赋给指针数组fori=0;irenshu;i++{p1[i]=student+i;}//冒泡法排序fori=0;irenshu;i++{forj=i+1;jrenshu;j++{if*p2+i-sum*p2+j-sum{temp=*p2+i;*p2+i=*p2+j;*p2+j=temp;}}}printf按照总成绩排序之后的信息为\n;printf-----学号-----姓名------总成绩-----\n;fori=0;irenshu;i++{printf-----%s-----%s--------%d\n*p2+i-___hao*p2+i-xingming*p2+i-sum;}fhzjm;}voidCunChu{inti;FILE*rs;ifrs=fopencard.datwb==NULL{printfnotopen;exit0;}fori=0;irenshu;i++{fwritestudent[i]sizeofstudent[i]1rs;}ifferrorrs{fclosers;perror写文件失败!\n;return;}printf存储文件成功!\n;fclosers;fhzjm;}voidDaoChu{structstudentt;inti=0;FILE*fp=fopencard.datrb;renshu=0;ifNULL==fp{perror读取文件打开失败!\n;return;}memsetstudent0x0sizeofstudent;while1{freadtsizeoft1fp;ifferrorfp{fclosefp;perror读文件过程失败!\n;return;}iffeoffp{break;}student[i]=t;i++;}fclosefp;renshu=i;printf导出文件成功!\n;fhzjm;}voidmenu{intn;systemCLS;printf学生信息管理系统\n;printf__闫亚运\n;printf-------------------MENU-----------------\n;printf
1.登记学生信息\n;printf
2.删除学生信息\n;printf
3.浏览所有已经登记的学生\n;printf
4.查找\n;printf
4.2按姓名查找\n;printf
4.3按成绩查找\n;printf
5.根据总成绩排序\n;printf
6.存储到文件\n;printf
7.从文件导出\n;printf
8.退出系统\n;a:printf请选择;scanf%dn;switchn{case1:DengJi;break;case2:ShanChu;break;case3:LiuLan;break;case4:ChaZhao;break;case5:PaiXu;break;case6:CunChu;break;case7:DaoChu;break;case8:exit0;break;default:{printf请输入1-8之间的数字,谢谢!\n;gotoa;}}}__in{menu;}第五章程序的运行及结果分析主界面在主界面上选择需要进行什么操作选择1则登记一个学生的信息界面如下提示输入几个学生的信息,用户输入数据后,系统提示输入学生的学号,姓名和三门课的成绩,用户分别输入数据后,系统提示是否继续操作,如果还继续操作,输入“yes”,则出现下面的界面如果不需要操作了,则输入“no”,结束整个系统如果输入内容既不是yes也不是no,比如输入ya,则出现下面界面如果在主界面再次选择1,则可以在前面的基础上再次登记学生,注意不能把前面的学生覆盖!选择2可以删除全部学生的信息,也可以删除指定某个学生姓名的信息当在主界面选择2时,进入下面的界面如果输入all,则会删除所有的信息如果删除某个学生的信息,则输入one当输入one时,则会要求输入需要删除学生的学号,例如输入01,回车以后,确认删除,显示删除成功输入yes或者no的操作参照选择
1.选择3可以浏览所有学生的信息回车确认后,出现下面的界面(本来输入了两个人的信息,但是删除了张三的信息,所以现在只是剩下一个人的信息)可以浏览输入的所有学生的信息(不管输入几次,都要全部显示)输入yes或者no的操作参照选择
1.选择4进行查找操作按照不同的方式查找选择4后,回车确认,出现下面的界面当输入一种方式进行查找的时候,例如输入姓名则要求输入某个学生的姓名,例如输入李四,显示下面的界面(其他方式显示类似)注意,如果输入的数据有误,则提示输入错误,如果系统中没有任何学生,则提示没有学生信息输入yes或者no的操作参照选择
1.选择5回车确认后,显示一下界面,(重新录入的数据)总成绩按照降序排列输入yes或者no的操作参照选择
1.选择6,则可以保存数据回车确认后,显示文件保存成功!输入yes或者no的操作参照选择
1.选择7,导出文件回车确认后则可以继续操作上次保存的数据输入yes或者no的操作参照选择1第六章遇到的问题及解决方法在开始进行课程设计时,先进行界面模块的总体把握,充分了解自己要设计的程序的总体的结构,从而,在其过程中能一个模块一个函数进行详细的构思,从而在调试程序时也显得比较轻松,虽说随着程序代码的不断增多、其复杂性不断增大,但是因为是分模块函数一个一个的调试;最后在将其模块用多文件编译运行时没有遇到语法错误但是,运行结果完全不正确,常常出现乱码和死循环等原因在此课程设计中,不仅综合了数据结构的知识,而且还综合了文件处理数据的知识,难度显得较难,但这些功能还是能在较快的时间内完成,倒是课本上那些属于基础和细节上的知识点总不知道如何使用它、常常用错它,如在使用switch()、while()和scanf等语句上,有时因用错它们,使程序无法停止通过查找资料、与同学的相互讨论及请教师兄,程序终于正确地运行在此过程中,学到的不止是如何调试这个知识,学到得最多的是一种遇到不懂问题怎么去解决的方法和在遇到困难时心态的调节第七章总结和体会通过半个月的努力,终于完成了这次C语言程序设计在这个《学生信息管理系统》C语言课程设计中,完成了基本功能,即可以检索记录、新建新记录、删除记录、使用文件对记录进行保存和读取功能在开始进行课程设计时,先进行界面模块的总体把握,充分了解自己要设计的程序的总体的结构,从而,在其过程中能一个模块一个函数进行详细的构思,从而在调试程序时也显得比较轻松虽然出现了很多的错误,但是通过自己和同学的共同努力,终于找到错误并加以改正同时也要感谢老师的指导与帮助,使我能够在短时间内完成这份程序设计,十分的感谢老师总的来说,这次课程设计收获很多,为了完成这次设计,参考了一些书籍,细看了课本,了解了以前常忽视却很重要的东西,深化了对C语言的理解,进一步理解对C语言进行程序设计的方法和步骤,加深了结构化程序设计的思想,更重要的是,积累了很多调试程序的经验,为进一步学习C语言奠定了一定的基础,同时也为今后的学习和生活奠定了基础,有利于今后的发展选择1选择3选择2选择4选择5选择7选择6选择8输出界面选择操作退出系统结果开始输入学生信息删除学生信息浏览学生信息查找学生信息学生成绩排序导出学生信息存储学生信息是是是是是是是是否否否否否否否否。