c语言程序设计报告链表实现学生信息管理.docx
- 文档编号:7105326
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:14
- 大小:315.27KB
c语言程序设计报告链表实现学生信息管理.docx
《c语言程序设计报告链表实现学生信息管理.docx》由会员分享,可在线阅读,更多相关《c语言程序设计报告链表实现学生信息管理.docx(14页珍藏版)》请在冰豆网上搜索。
c语言程序设计报告链表实现学生信息管理语言程序设计报告链表实现学生信息管理C语言课程设计报告链表实现学生信息管理一课程设计目标C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要容,更好地完成教学任务。
本课程设计具有如下特点:
重点在于C语言的基本特征上,涵盖了C语言的重要基础知识。
结合了实际应用的要求,使课程设计既涵盖知识点,又接近工程实际需要。
通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力以及编程能力,并养成良好的编程习惯。
另外,在实际编程中,为了提高编程质量,希望学生在书写代码时,对空行、空格和注释严格按要求处理,以建立良好的编程风格。
二设计项目:
学生学籍管理该课程设计是设计一个模拟学生信息管理程序,要求使用链表来实现。
它具有浏览、插入、删除、修改等功能,并且能够对数据进行文件存储和读出操作。
主要功能模块:
1.浏览学生信息:
显示学生的信息。
2.插入学生信息:
添加学生的信息。
3.删除学生信息:
通过输入学号删除学生的信息。
4.修改学生信息:
通过输入学号修改学生的信息。
5.保存学生信息:
将学生信息保存到文件。
0.退出系统:
结束程序的运行,结束前询问是否保存信息。
三具体任务由老师提供主菜单程序以及第0、2个模块。
学生在这个信息系统中加入四个模块,即:
1.浏览学生信息3.删除学生信息4.修改学生信息5.保存学生信息四、详细介绍1、浏览学生信息2、插入学生信息3、删除学生信息4、修改学生信息5、信息的写入读出6、学生信息的保存与释放五、课程设计实践小节这是这学期的第一次正式的程序设计,目的是运用链表来实现学生的学籍信息管理。
在学习过程中,我不仅把以前的函数循环搭配使用了起来,也接触到链表这些全新的概念。
链表的使用在今后的程序设计中尤为关键,他可以保存、调用和更改数据,在信息时代的程序设计中很重要。
在这次的程序设计中,老师和同学都是我强大的后盾。
比如之前在switch语句下的break的使用和getchar的重要性,还有在小程序里面的循环,每一步的程序都很重要。
通过这次的程序设计,我了解到我所感兴趣的东西并不是感兴趣就可以掌握的,要经过不断的练习和调试,在一次一次的失败中找到原因,团结周围的所有力量来突破。
最重要的收获其实还是写编码的重要性。
我这边接触过一些华为之类的程序设计员,他们都有c语言设计规要求,每种固定程序的编写都有固定的格式,不按照格式的都有相应的处罚。
这次的程序设计中我充分的体会到了格式的重要性,我程序的最大的问题就在于switch语句里面格式的不对称导致的出错,最后是老师发现的,这是个极大的问题。
最后在这次的程序设计过程中感谢老师和帮助过我的同学!
六、源程序完整清单#include#include#include#includestructnodecharnumber12;charname10;charsex6;charclasses10;chartel12;structnode*next;typedefstructnodeNODE;/函数的声明voidBrowse(NODE*head);voidInsert(NODE*head);voidDelete(NODE*head);voidModify(NODE*head);voidWriteInfo(NODE*head);voidReadInfo(NODE*head);voidFreeList(NODE*head);voidExit(NODE*head);/主程序intmain()intchoice;/avariableaccepttheuserschoiceNODE*head;head=(NODE*)malloc(sizeof(NODE);/creatheadnodehead-next=NULL;/installatailReadInfo(head);/getinfofromdiskfileiffileexistedwhile
(1)/主菜单printf(n%s,*学生信息管理系统*n*1.浏览学生信息*n*2.插入学生信息*n*3.删除学生信息*n*4.修改学生信息*n*5.保存学生信息*n*0.退出系统*n*n请按功能代码选择(05):
);scanf(%d,&choice);/numberwithreturncharintotheIObuttergetchar();/clearthereturncharfrombufferswitch(choice)case1:
Browse(head);break;case2:
Insert(head);break;case3:
Delete(head);break;case4:
Modify(head);break;case5:
WriteInfo(head);break;case0:
Exit(head);exit(0);default:
printf(n选择错误,请重新输入!
n);/endofswitch/endofwhile
(1)return0;/浏览学生信息voidBrowse(NODE*head)NODE*p=head;if(p-next=NULL)printf(无文件记录!
请输入学生信息!
n);return;p=head-next;printf(numbernameclassessexteln);printf(-n);while(p!
=NULL)printf(%s%s%s%s%sn,p-number,p-name,p-classes,p-sex,p-tel);p=p-next;voidInsert(NODE*head)/定义插入函数NODE*t,*p;t=(NODE*)malloc(sizeof(NODE);/createanewnodeandpointedbytp=head;/pistopointtotheheadnode,whichispassedfrommainfunctionprintf(请输入学生学号:
n);scanf(%s,t-number);printf(请输入学生姓名:
n);scanf(%s,t-name);printf(请输入学生性别:
n);scanf(%s,t-sex);printf(请输入学生班级:
n);scanf(%s,t-classes);printf(请输入学生:
n);scanf(%s,t-tel);if(p-next=NULL)/原本无学生记录p-next=t;/newnodeconnecttoheadnodet-next=NULL;/installatailforthenewnodeelse/原本有学生记录t-next=p-next;/newnodeinserttotherearoftheheadnode.p-next=t;/twostepsvoidDelete(NODE*head)/定义删除函数NODE*p=head,*t=p-next;charnum12;printf(请输入要删除学生的学号:
n);scanf(%s,num);while(t!
=NULL)if(strcmp(t-number,num)!
=0)t=t-next;p=p-next;elsep-next=t-next;free(t);printf(学生信息删除成功n);return;printf(该学生学号不存在,请输入正确的学生学号n);/修改学生信息voidModify(NODE*head)NODE*p=head;p=p-next;charnum12;printf(请输入要修改信息的学生学号:
n);scanf(%s,num);intchoice;while(p!
=NULL)if(strcmp(p-number,num)!
=0)p=p-next;elseprintf(1.学号2.姓名3.性别4.班级5.n请选择:
);scanf(%d,&choice);switch(choice)case1:
printf(请输入要修改学生的学号:
n);scanf(%s,p-number);break;case2:
printf(请输入要修改学生的姓名:
n);scanf(%s,p-name);break;case3:
printf(请输入要修改学生的性别:
n);scanf(%s,p-sex);break;case4:
printf(请输入要修改学生的班级:
n);scanf(%s,p-classes);break;case5:
printf(请输入要修改学生的:
n);scanf(%s,p-tel);break;break;/将学生信息写入文件voidWriteInfo(NODE*head)FILE*fp;NODE*p=head;if(fp=fopen(C:
Database.txt,wb)=NULL)printf(不能打开学生文件!
n);return;p=p-next;while(p!
=NULL)if(fwrite(p,sizeof(NODE),1,fp)!
=1)/writeinfoandchecksucessornotprintf(写入学生文件错误!
n);p=p-next;fclose(fp);/将学生信息从文件读出voidReadInfo(NODE*head)FILE*fp;NODE*p=head,*t;if(fp=fopen(c:
Database.txt,rb)=NULL)printf(学生数据文件不存在,或文件打不开!
n);return;p-next=!
NULL;while(p-next!
=NULL)t=(NODE*)malloc(sizeof(NODE);fread(t,sizeof(NODE),1,fp);p-next=t;p=p-next;fclose(fp);/释放链表voidFreeList(NODE*head)NODE*p=head,*t=head;while(p!
=NULL)p=p-next;free(t);t=p;/退出程序voidExit(NODE*head)charans;intflag=1;if(head-next!
=NULL)printf(保存当前数据吗?
请输入y/n:
);while(flag)scanf(%c,&ans);getchar();if(ans=y|ans=Y)WriteInfo(head);flag=0;elseif(ans=n|ans=N)flag=0;elseprintf(输入错误,请重新输入y/n:
);FreeList(head);/releaseallnodesprintf(再见,谢谢使用!
n);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告 实现 学生 信息管理