C语言学生信息管理系统5.docx
- 文档编号:6590485
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:20
- 大小:130.85KB
C语言学生信息管理系统5.docx
《C语言学生信息管理系统5.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统5.docx(20页珍藏版)》请在冰豆网上搜索。
C语言学生信息管理系统5
学生信息管理系统
本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。
本程序中涉及结构体、单链表、文件等方面的知识。
通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。
1问题定义
创建一个学生信息管理系统.方便管理同学们的信息.系统中每个学生的记录包括学号,姓名,QQ,性别,电话号码等信息,程序运行后可进行列出菜单,删除文件,创建文件,查找文件,修改和保存文件等功能;
在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任,
2系统设计
2.1在系统设计方面需采用模块化,把一个复杂的问题简单化,化成几个简单的模块来处理,.但是在划分的同时又必须要了解各自的功能,它们之间应该有自己的独立性,同时又存在相互的联系.通讯记录时以二进制的形式进行存储和输入,一般程序从整体到部分,先进行整体概括,然后在逐步细化完善.
2.2本通讯管理系统可以概括的划分为以下几大模块:
1输入创建模块……………………………………………。
2列出菜单模块……………………………………………。
3删除数据模块……………………………………………。
4修改数据模块……………………………………………。
5查找数据模块……………………………………………。
6插入数据模块…………………………………………....。
7保存数据模块……………………………………………。
8退出系统………………………………………...……….。
3系统分析与设计
●系统的总体设计
本系统是由一个主函数和几个子函数完成的,通过一定的语句将主函数和子函数连接起来,即完成了本系统。
◇创建:
可以添加通讯录记录,依次输入序号,姓名,QQ,性别,还有电话等等;
◇查找:
可以查找所存在的所有内容;
◇删除:
可以删除多余的记录,输入存在的序号,会自动删除这个记录;
◇修改:
输入要修改的那个人的序号之后,然后再一次输入要修改的内容,包括序号,姓名,QQ,性别,还有电话;系统会自动进行修改;
◇插入:
既是要插入到某个已存信息的前面,先找到要插入的位置,然后再依次输入要插入的序号,姓名,QQ,性别,还有电话等,即可完成插入程序,
本系统由一个图来表示为:
主菜单
●主体轮廓
#include
#include
#include
intnum;/*学生学号*/
charname[10];/*学生姓名*/
charqq[10];/*学生QQ*/
intsex;/*学生性别*/
intphone;
/*学生电话*/
}LIST;
LISTL[100];
intmain(void)
{
}
voidrevise_list()/*修改数组*/
{
}
voidprint_list()/*列出菜单*/
{
}
voiddelete_list()/*删除文件*/
{
}
voidinsert_list()/*创建文件*/
{
}
voidfind_list()/*查找文件*/
{
}
voidinto_list()/*插入文件*/
{
}
voidsave_list()/*保存文件*/
{
}
这样一个简单的学生信息管理系统的整体轮廓就出来了,以后的内容就是对各个子函数进行完善,编程,最后整体与部分连接起来就完成了整个程序。
●部分工作流程图
1删除:
删除用户和信息
2查找:
可以找到并显示所要查找的已存信息
3插入:
可以插入到任意一项的前面
④显示:
显示出所有已存的信息
4源程序代码
#include
#include
#include
#defineEXIT-1
#defineLENsizeof(structlist)
intkey=0;
typedefstructlist{
intnum;/*学生学号*/
charname[10];/*学生姓名*/
charqq[10];/*学生QQ*/
intsex;/*学生性别*/
intphone;
/*学生电话*/
}LIST;
LISTL[100];
voidrevise_list()/*修改数组*/
{inti,j,k;intnum;charname[10];charqq[10];intsex;intphone;
printf("请选择修改项");scanf("%d",&j);
for(k=0;k {if(j==L[k].num)break;} printf("您要修改成为: "); printf("\t\t学号\t\t");scanf("%d",&num); printf("\t\t姓名\t\t");scanf("%s",name); printf("\t\tQQ号\t\t");scanf("%s",qq); printf("\t\t性别\t\t");scanf("%d",&sex); printf("\t\t电话\t\t");scanf("%d",&phone); L[k].num=num;strcpy(L[k].name,name);strcpy(L[k].qq,qq); L[k].sex=sex;L[k].phone=phone; } voidprint_list()/*列出菜单*/ { inti; for(i=0;i { printf("学号\t姓名\TQQ号\t性别\t电话\t\n"); printf("%d\t%s\t%s\t%d\t%d\n",L[i].num,L[i].name,L[i].qq,L[i].sex,L[i].phone); } if(key==0) printf("theshuzuisNULL! \n"); } voiddelete_list()/*删除文件*/ {inti,j,k; printf("您要删除的是: \n"); scanf("%d",&j); for(k=0;k {if(j==L[k].num)break; } if(k>=key)printf("您输入的数据有误,请重新输入: "); for(i=k;i L[i]=L[i+1]; key--; } voidinsert_list()/*创建文件*/ { intnum;charname[10];charqq[10];intsex;intphone; printf("\t\t序号\t\t");scanf("%d",&num); printf("\t\t姓名\t\t");scanf("%s",name); printf("\t\tQQ号\t\t");scanf("%s",qq); printf("\t\t性别\t\t");scanf("%d",&sex); printf("\t\t电话\t\t");scanf("%d",&phone); L[key].num=num;strcpy(L[key].name,name);strcpy(L[key].qq,qq); L[key].sex=sex;L[key].phone=phone; key++; } voidfind_list()/*查找文件*/ {inti,num; printf("请输入你要查找的序号: "); scanf("%d",&num); for(i=0;i {if(L[i].num==num) {printf("序号\t姓名\t企鹅\t性别\t电话\t\n"); printf("%d\t%s\t%s\t%d\t%d\n",L[i].num,L[i].name,L[i].qq,L[i].sex,L[i].phone);break; } } if(i>=key)printf("无此人信息,请重新选择: "); } voidinto_list()/*插入文件*/ { inti,j,k;intnum;charname[10];charqq[10];intsex;intphone; printf("\t\t\t您要插入项是: \t"); scanf("%d",&j); if(j>0&&j<=key) {for(i=key;i>=j;i--) L[i]=L[i-1]; key++; printf("请输入你要插入的内容: \n"); printf("\t\t学号\t\t");scanf("%d",&num); printf("\t\t姓名\t\t");scanf("%s",name); printf("\t\tQQ号\t\t");scanf("%s",qq); printf("\t\t性别\t\t");scanf("%d",&sex); printf("\t\t电话\t\t");scanf("%d",&phone); k=j-1; L[k].num=num;strcpy(L[k].name,name);strcpy(L[k].qq,qq); L[k].sex=sex;L[k].phone=phone; } elseprintf("error"); } voidsave_list()/*保存文件*/ {inti; FILE*fp; if((fp=fopen("file.txt","wb"))==NULL) {printf("不能打开文件\n"); return; } for(i=0;i {if(fwrite(&L[i],LEN,1,fp)! =1); fclose(fp);} } intmain(void)/*主函数*/ { intchoice; do{ printf("\n\n\n\t\t\t********学生信息管理系统********"); printf("\n\t\t\t\t***********==**********\n"); printf("\t\t\t\t1.****修改****\n"); printf("\t\t\t\t2.****列出****\n"); printf("\t\t\t\t3.****.删除*****\n"); printf("\t\t\t\t4.*****创建*****\n"); printf("\t\t\t\t5.*****查找*****\n"); printf("\t\t\t\t6.*****插入*****\n"); printf("\t\t\t\t7.*****保存*****\n"); printf("\t\t\t\t0.*****退出******\n"); printf("\t\t\t\t请选择: "); scanf("%d",&choice); switch(choice) { case1: revise_list();break; case2: print_list();break; case3: delete_list();break; case4: insert_list();break; case5: find_list();break; case6: into_list();break; case7: save_list();break; case0: exit(0); default: printf("inputagain~\n"); } }while (1); fflush(stdin); getchar(); return0; } 5系统调试出现的问题 在这次的实训中,主要遇到的问题是编译环境的不同对程序也不同。 本来我们的程序是不支持在VC++里面编译的,因此一直都处在编译失败,该函数未定义的错误中。 后来经过老师的指导,终于找到了根源,就是把“clrscr()”改为“system("cls")”就可以了。 6系统运行 1主菜单 2创建数组 3列出表格 4删除信息 5修改信息 6查找信息 7插入信息 8保存信息 7实训总结 这次的程序实训是对我们大一后半学期所学的计算机C语言的一次总结,也是对程序分析及操作的一次大的检查,自己独立思考,自己动手和老师辅助解决问题,在实训期间,我发现了自己对这门课的生疏和不足,平时没有学好的东西充分的体现了出来。 归纳总结: 7.1实训中遇到的问题及解决方法: 在整个程序的编排中,整体还算顺利,但是难免在这个过程中会遇到一些麻烦,遇到问题时,去问一些同学,去上网XX一下。 经过实践练习,最终克服了这些问题,主要是指针方面和文件保存这些方面存在的一些问题。 7.2设计中的不足之处: 由于自己初学C程序设计,所以对一些知识掌握的不够全面,不够扎实;所以编写的一些代码比较基础化,没能用到最完善的方法,例如没有用到链表等方面知识。 7.3感想和心得体会: 经过这次的实训实践,发现了自己在C程序设计方面掌握知识还是不够全面, 知道了自己掌握的知识还是比较基础化,尽管那些基础方面的知识掌握的还算可以,但是那是远远不够的,要想在这方面有好的发展,就需要再扩宽自己的知识面,使自己吸取到它的精华,这就需要我们多看一些这方面的书籍,使自己更加深入的了解。 通过这次实训也知道的自己的真实水平还是远远不够,以后还需更加努力。 8 参考资料: 《C程序设计》(第三版) 谭浩强 清华大学出版社 《C语言精彩编程百例》 温海、张友、童伟 中国水利水电出版社 《程序设计基础》 孙承爱 清华大学出版社 《C程序设计实训教程》 杨金龙 科学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)