还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
C语言课程设计报告学生姓名田俊学生学号0909090610所在班级电气信息0906课程设计题目学生信息管理系统
1、课程设计目标和要求巩固和加强《C语言程序设计》课程的理论知识掌握C语言的基本概念﹑语法﹑语义和数据类型的使用特点学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法灵活使用链表来储存学生信息掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串培养创新能力和创新思维培养良好的程序设计风格
2、课程设计报告的需求分析设计出来的学生信息管理系统要实现以下功能A系统以菜单方式工作;B学生信息的录入(并用文件保存)C学生信息的浏览功能D查询(包括按学号和按姓名查询)E学生信息的查询和修改F有一定容错能力,在输入错误时提示不合法,并要求重新输入
3、程序的实现过程1总体的设计通过菜单的形式,利用switch函数,将程序要实现的功能分为6个模块进行,然后分别对信息的录入,浏览,查询,修改,删除,和对出进行编写,并将信息写入文件,最后退出系统2模块功能的说明在设计的程序中,共设计了Structstudent//学生的结构体welcome通过一系列的输出函数,显示字符,以现实欢迎界面mainmenu通过switch函数以选项的形式实现程序以菜单形式工作record实现录入信息功能,分配内存空间,分别对student的结构体成员进行赋值并用链表指向这些成员display输出学生的信息displayAll通过dowhile循环分别输出所有学生的全部信息query实现查询的功能,通过switch函数,进行选择(分别按学号进行查询调用query_by_num函数,按姓名进行查询,调用query_by_name函数)Readdata读取文件Writedata通过链表,将信息写入文件Del实现删除学生信息的功能,并提示错误信息,(通过链表实现)Change提示错误信息,用ifelse实现,通过switch函数选择按学号的方式修改或是通过(调用devise函数)Tuichxitong实现退出时的欢迎界面,并将学生信息存入文件,退出系统流程图调试与测试如图,首先,进入欢迎界面然后进入主界面显示菜单选项然后录入信息浏览信息查询信息删除信息后重新录入信息后再修改后浏览,得到修改后的信息,最后退出系统测试结果经过上机调试,发现程序基本的功能都已实现,输入学生的信息,然后,修改,修改信息后存储到文件之中,删除信息等都得到了很好的实现当然,程序本身还存在一些细节问题比如在输入学号的时候,当学号前第一个数字是0的时候,在输出的时候没有显示0,其次,在显示学生信息时,学生的各个信息并没有严格地对齐,使得界面不够美观心得体会在本次C语言课程设计的过程中,感受最深的是,我们培养了一种共同协作的能力在刚开始大家都还没有头绪的时候,大家都会抽出时间一起学习有关链表和文件的内容,共同探讨一些弄不懂的地方为之后程序的设计打下了一个很好的基础接下来是各个模块的实现,大家首先是针对各自比较熟悉的模块部分提出了自己的见解,写出自己的代码,然后马不停蹄地上机调试,对于自己一个人没能弄懂的地方,在自己提出来之后,大家都会很友好地提出自己所认为的解决方案,并相互磋商,在大家的共同努力下,终于完整地实现了学生管理系统的全部功能解决问题的能力得到了提高自然,做任何事,都或多或少难免会碰到些自己没办法解决的问题,同样,在整个程序设计的过程中,我也遇到了些不小的麻烦,首先就是有关文件的部分,由于在一开始自学文件整个部分时候,并没有将课本读的很透彻,以至在想办法将输入的信息以文件形式存储的时候,总是出现一些错误,本想着和小组里的同学讨论下该怎么解决这个问题,可是,想了想,觉得或许自己可以独立解决这个问题,于是硬着头皮,将课本上文件部分的内容又翻来翻去地看了好几遍,才发觉其实是自己的疏忽造成的其实,有些时候,看似很难的问题,其实,多一点独立思考,也许就解决了另外,为了使整个程序趋于完美,我们也从网上找来了些类似的程序,通过比较分析,发现了一些美中不足之处,然后,参照一些比较美观的程序界面做出了一些改进,使得学生管理系统的操作体验更好这也使我明白,有时候,需要通过不断地比较才能从中找到差距,从而,不断改进,使得程序日趋完善
4、附录源程序如下#includestdio.h#includestdlib.h#includemalloc.h#includestring.h#includeio.h#defineNULL0#defineLENsizeofstructstudent#defineFILE_DATA_PATHstudent.txtstructstudent//建立一个学生的结构{longintnum;//学生人数charname
[20];//学生姓名intage;//年龄charsex
[4];//性别charbirthday
[10];//生日charaddress
[30];//地址longintscore;//成绩charE_mail
[20];//邮箱structstudent*next;//指针指向学生结构};intTOTAL_NUM=0;//初始化总人数为0structstudent*head=NULL;//指针指向的结构的首位为空welcome;mainmenu;tuichuxitong;record;insertstructstudent*stu;displaystructstudent*stu;displayAll;query;query_by_num;query_by_name;readData;writeData;freeAll;del;change;devisestructstudent*p;main{welcome;mainmenu;}welcome//显示欢迎信息{systemcolor2e;printf\n\n\n\n\n\n\n;printf--------【学生信息管理系统】-------\n;printf\n;printf\n;printf制作人:第一小组\n;printf================================================================================\n;printf●☆☆welcome☆☆●\n;printf\n;printf★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n;printf\n\n\n;printf\t\t\t+--+--+--+--+--+--+--+--+--+--+--+--+\n;printf\n\n\n\n\n\n\n\n\n;systempause;systemcls;}mainmenu//系统主菜单{systemcolor3e;intchoice;choice=-1;readData;printf\n\n\n温馨提示为保证您的操作得到保存,请按正常顺序退出系统^_^\n;do{printf\n\n\t\t\t--------------------------------\n;printf\t\t\t|学生信息管理系统|\n;printf\t\t\t--------------------------------\n;printf\t\t\t|
[1]----录入学生信息|\n;printf\t\t\t|
[2]----浏览学生信息|\n;printf\t\t\t|
[3]----查询学生信息|\n;printf\t\t\t|
[4]----删除学生信息|\n;printf\t\t\t|
[5]----修改学生信息|\n;printf\t\t\t|
[0]----退出系统|\n;printf\t\t\t|*·*·*·*·*·*·*·*·*·*·|\n;printf\t\t\t--------------------------------\n;printf请输入您的选择;scanf%dchoice;switchchoice{case0:writeData;freeAll;tuichuxitong;exit0;case1:record;break;case2:displayAll;break;case3:query;break;case4:del;break;case5:change;break;default:printf\n无效选项!;break;}}whilechoice!=0;}record//录入学生信息{systemcls;structstudent*p0;p0=structstudent*mallocLEN;printf\n\n\n;printf请输入学生的学号:;scanf%ldp0-num;printf\n;printf请输入学生的姓名:;scanf%sp0-name;printf\n;printf请输入学生的年龄:;scanf%dp0-age;printf\n;printf请输入学生的性别:;scanf%sp0-sex;printf\n;printf请输入学生的出生年月:;scanf%sp0-birthday;printf\n;printf请输入学生的地址:;scanf%sp0-address;printf\n;printf请输入学生的成绩:;scanf%ldp0-score;printf\n;printf请输入学生的E-mail:;scanf%sp0-E_mail;insertp0;printf该学生的信息为:\n;printf-------------------------------------------------------------------------------;displayp0;systempause;systemcls;mainmenu;}insertstructstudent*stu{structstudent*p0*p1*p2;p1=head;p0=stu;ifhead==NULL{head=p0;p0-next=NULL;}else{whilep0-nump1-nump1-next!=NULL{p2=p1;p1=p1-next;}ifp0-num=p1-num{ifhead==p1head=p0;elsep2-next=p0;p0-next=p1;}else{p1-next=p0;p0-next=NULL;}}TOTAL_NUM++;}displaystructstudent*p{printf学号\t姓名\t年龄\t性别\t出生年月\t地址\t成绩\tE-mail\n;printf%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\np-nump-namep-agep-sexp-birthdayp-addressp-scorep-E_mail;}displayAll//浏览学生信息{structstudent*p;systemcls;printf\n\n\n;printf学生总数:%d\nTOTAL_NUM;p=head;ifhead!=NULL{printf-------------------------------------------------------------------------------;do{displayp;p=p-next;}whilep!=NULL;}printf\n;systempause;systemcls;mainmenu;}query//查询学生信息{intchoice;choice=-1;systemcls;do{printf\n\n\n;printf\t\t+--------------------+\n;printf\t\t|
[1]---按学号查询|\n\n;printf\t\t|
[2]---按姓名查询|\n\n;printf\t\t|
[0]---取消|\n;printf\t\t+--------------------+\n\n;printf\t\t请输入您的选择;scanf%dchoice;switchchoice{case0:systemcls;mainmenu;case1:query_by_num;systempause;systemcls;query;case2:query_by_name;systempause;systemcls;query;default:printf\n无效选项!;break;}}whilechoice!=0;}query_by_num//按学号查询学生信息{intnum;structstudent*p1;printf请输入学生的学号;scanf%ldnum;ifhead==NULL{printf无学生记录!\n;}p1=head;whilenum!=p1-nump1-next!=NULLp1=p1-next;ifnum==p1-num{printf-------------------------------------------------------------------------------;displayp1;}elseprintf没有该学生记录,请核对!;}query_by_name//按姓名查询学生信息{charname
[20];structstudent*p1;printf请输入学生的姓名;scanf%sname;ifhead==NULL{printf无学生记录!\n;return;}p1=head;whilestrcmpnamep1-namep1-next!=NULLp1=p1-next;if!strcmpnamep1-name{printf-------------------------------------------------------------------------------;displayp1;}elseprintf没有该学生记录,请核对!;}writeData//写入文件{FILE*fp;structstudent*p;fp=fopenFILE_DATA_PATHw;if!fp{return;}fprintffp%d\nTOTAL_NUM;forp=head;p!=NULL;p=p-next{fprintffp学号%ld\t姓名%s\t年龄%d\t性别%s\t出生年月%s\t地址%s\t成绩%ld\tE-mail%s\np-nump-namep-agep-sexp-birthdayp-addressp-scorep-E_mail;}fclosefp;}freeAll{structstudent*p1*p2;p1=p2=head;whilep1{p2=p1-next;freep1;p1=p2;}}readData//读取文件{FILE*fp;structstudent*p1*p2;fp=fopenFILE_DATA_PATHr;if!fp{return;}fscanffp%d\nTOTAL_NUM;head=p1=p2=structstudent*mallocLEN;fscanffp%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\np1-nump1-namep1-agep1-sexp1-birthdayp1-addressp1-scorep1-E_mail;while!feoffp{p1=structstudent*mallocLEN;fscanffp%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\np1-nump1-namep1-agep1-sexp1-birthdayp1-addressp1-scorep1-E_mail;p2-next=p1;p2=p1;}p2-next=NULL;fclosefp;}del//删除学生信息{structstudent*p1*p2;longintnum;ifhead==NULL{printf无学生记录!\n;return;}printf\n\n\t请输入您要删除的学生的学号;scanf%ldnum;p1=head;whilenum!=p1-nump1-next!=NULL{p2=p1;p1=p1-next;}ifnum==p1-num{ifp1==headhead=p1-next;elsep2-next=p1-next;freep1;TOTAL_NUM--;}elseprintf没有该学生记录,请核对!\n;systemcls;}change//修改学生信息{structstudent*p1*p2;longintnum;systemcls;ifhead==NULL{printf无学生记录!\n;return;}printf请输入您要修改的学生的学号;scanf%ldnum;p1=head;whilenum!=p1-nump1-next!=NULL{p2=p1;p1=p1-next;}ifnum==p1-numdevisep1;elseprintf没有该学生记录,请核对!\n;}devisestructstudent*p{intchoice;choice=-1;do{printf\n请选择您要修改的学生的信息内容\n;printf+----------------------+\n;printf*姓名____请按1*\n;printf*年龄____请按2*\n;printf*性别____请按3*\n;printf*出生年月____请按4*\n;printf*地址____请按5*\n;printf*成绩____请按6*\n;printf*E-mail____请按7*\n;printf*取消____请按0*\n;printf+----------------------+\n;printf请输入您的选择;scanf%dchoice;switchchoice{case0:systemcls;mainmenu;case1:printf\n\n请输入新姓名;scanf%sp-name;systempause;systemcls;break;case2:printf请输入新年龄;scanf%dp-age;systempause;systemcls;break;case3:printf请输入新性别;scanf%sp-sex;systempause;systemcls;break;case4:printf请输入新出生年月;scanf%sp-birthday;systempause;systemcls;break;case5:printf请输入新地址;scanf%sp-address;systempause;systemcls;break;case6:printf请输入新成绩;scanf%ldp-score;systempause;systemcls;break;case7:printf请输入新E-mail;scanf%sp-E_mail;systempause;systemcls;break;default:printf\n无效选项!;break;}}whilechoice!=0;}tuichuxitong{systemcls;systemCOLOR3f;printf\n\n\n\n\n--------【学生信息管理系统】-------\n;printf\n;printf\n;printf制作人:第一小组\n;printf================================================================================\n;printf●☆☆Bye-Bye☆☆●\n;printf\n;printf★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n;printf\n;printf\n;printf☆☆☆☆☆☆☆☆☆☆☆\n;printf\n;printf★★★★★★★★★★★\n;printf★\n;printf中★电\n;printf★气\n;printf南★信\n;printf★息\n;printf大★0\n;printf★9\n;printf学★0\n;printf★6\n;printf★\n\n\n\n;printf◆谢谢使用◆\n;}。