版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*大学课程设计报告课程名称高级语言程序设计设计题目学生信息管理系统专业计算机科学与技术班级学号姓名完成日期课程设计任务书设计题目:学生信息管理系统设计一设计内容与要求:内容:对学生信息进行管理,学生信息包括学号、姓名、性别、年龄、学历、学号、住址、电话等(学号不重复)。要求:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)。(3)输出学生信息、浏览学生信息功能。(4)查询和排序功能:(至少一种查询方式),如按学号查询、按学历查询等。(5)学生信息删除、修改功能(任选项)。指导教师:课程设计评语成绩:指导教师:【问题描述】学生信息管理软件设计。对学生信息进行管理,学生信息包括
2、:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一个学生信息管理软件。【基本要求】一、输入的形式和输入值的范围形式:用scanf输入学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mailo输入一个学生信息一个回车。用输入的学号p1->num来控制输入,当输入的学号为0时,用break跳出循环。即if(p1->num=0)break。输入值的范围:学号、年龄为整型longnum;intage;姓名为字符串型15个字节charname15;性别为字符串型,10个字节charsex10;出生为字符串型,20个字节charchushen20;地址为字符串型,
3、30个字节chardizhi30;邮箱为字符用型,输入11位数字charemail11。二、输出的形式输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第二行是显示第二个学生的信息。三、程序所能达到的功能对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。(1)系统以菜单方式工作(2)学生信息录入功能。(3)输出学生信息、浏览学生信息功能。(4)查询和排序功能:(至少一种查询方式),如按学号查询、按姓名查询等。(5)学生信息删除、修改功能(任选项)。(6)添加学生信息。【测试数据】输入:设输入四个学生信息,以最后一个学生的学号为0来结束输
4、入,学号是整型。预期的输出结果:预期的输出结果请参见程序后的运行结果。【数据结构】排序记录的数据元素表采用一维数组存储结构,每个元素包含8个关键字段,其类型描述为:#include<stdio.h>#include<malloc.h>分配size字节的存储区#include<string.h>/包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数/宏定义求字节运算符#definelensizeof(structstudent)#include<stdlib.h>structstudentlongnum;charname15;int
5、age;charsex3;charchushen10;chardizhi20;charphone11;/清屏功能/声明一个结构体类型structstudent/定义学号为10ng型数据/定义姓名/定义年龄/定义性别/定义出生/定义出生地址/定义电话/定义邮箱/next是指针变量,指向结构体变量charemail20;structstudent*next;【算法思想】利用一维结构体存放所有学生的信息,输入后,在输出时要对学生按学号的高低排序,然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入学号可以找出该学生信息,然后选择修改学生信息,如果来了新学生,还可以添加学生信息。【总体设计】主
6、菜单包括:输入函数、学号排序、浏览函数、删除函数、修改函数、添加函数。输入函数用键盘输入学生信息学生排序按学生学号高低排序输出学生信息以表格的形式输出学生信息显示主菜单删除学生信息输入一个学生学号,来删除该学生信息修改学生信息输入学号,修改的学生信息添加学生信息在原有的学生上添加学生信息图1-1学生管理总体设计【模块划分】一、主函数:main()显示系统工作菜单,显示该系统的所有功能。告诉使用者所有将会调用的被调函数,再运用选择函数switch即可根据使用者所输入的学号进入对应的功能程序。并且对菜单做了一个循环,进行完一个选择后,按回车键可进行清屏功能,把屏幕上除了主菜单以外都清空,然后可以继
7、续选择那些可以使用的功能,这样可以方便使用者使用,并且每一步都很清晰。以8退出系统。、输入函数:structstudent*creat()在该程序的前面已经定义了一个结构体structstudent用来储存学生的所有信息,(学号、年龄、姓名、性别、出生日期、地址、电话、邮箱)。定义pl和p2,structstudent*p1,*p2;p1,p2是指向structstudent类型数据的指针变量。定义一个n=0,n是输入的个数,主要作用是:如果输入一个学生信息,首地址指向p1,head=p1;否则p2的下一个地址指向p1,p2指向p1.p2->next=p1;p2=p1;学号控制循环。三、
8、排序函数:voidpaixu(structstudent*head)用一个for语句做循环,不是NULL的话,指针指向下一个,按学生学号高低排序。整形直接交换,字符型用strcpy交换,类型相当于两个数据之间的交换。四、输出函数:voidprintlist(structstudent*head)在主函数里边用while控制循环,输出学生信息,然后指针指向下一个五、查询函数:voidfindList_num(structstudent*head)和voidfindList_num(structstudent*head)输入一个学号或姓名,做一个for循环,即指针pt指向第一个地址,再定义一个指针
9、pl,让它等于pt,他是紧跟着pt后面的一个指针,让p1->next不等于NULLpt指向下一个地址。这样就能修改最后一个学生信息了。如果要查询的学生的学号在学生里,就输出该学生信息,否则,就输出查询的学生信息不存在。六、删除函数:intshanchu(structstudent*head)输入一个学号,先找到这个学生的信息。如果输入的学号在学生信息中,就进行以下循环:如果输入的是第一个学生的话,就head等于第二个学生信息;如果输入的学生信息是最后一个,就让倒数第二个等于NULL否则的话,就让下一个学生信息覆盖前一个。如果输入的学号不在学生信息中,输出“此学生信息不存在”。七、修改函数
10、:structstudent*delList(structstudent*head,longdel_num)输入要修改的学号,找到该学生并且输出该学生的信息。然后屏幕上会出现学生信息的所有项目,用switch进行选择修改的项目。选择后输入新的学生信息,用它来覆盖原来的学生信息。八、添加函数:voidinsert(structstudent*head)用一个while语句while(p2->next!=NULL)控制循环,p2的指针指向下一个地址,即p2=p2->next;这是找到最后一个地址,然后开辟动态存储区,p1=(structstudent*)malloc(len);输入要添
11、加的学号,用学号为0来终止循环,如果不为0,就继续输入学生信息。【源程序】#include<stdio.h>#include<malloc.h>/分配size字节的存储区#include<string.h>/包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数/求字节运算符/清屏功能#include<stdlib.h>FILE*fp;structstudentintnum;charname20;chargenter10;intage;charxueli20;intgongzi;charaddress30;charphone11;s
12、tructstudent*next;voidmenu()#definelensizeof(structstudent)/声明一个结构体类型structstudent/学号为整型/姓名为字符串/性别为字符串/年龄为整型/学历为字符串/学号为整型/地址为字符串/电话为字符串/next是指针变量,指向结构体变量printf("=学生信息管理系统=nn");printf("1、录入学生信息n");printf("2、浏览学生信息n");printf("3、查询学生信息n");printf("4、删除学生信息n&q
13、uot;);printf("5、插入学生信息n");printf("6、修改学生信息n");printf("7、排序学生信息n");printf("8、退出管理系统n");printf("=n");structstudent*creat()录入学生信息intn;structstudent*head;structstudent*p1,*p2;n=0;p1=p2=(structstudent*)malloc(len);scanf("%dt%dt%st%st%st%st%st%s"
14、,&p1->num,&p1->age,p1->name,p1->sex,p1->chushen,p1->dizhi,p1->phone,p1->email);head=NULL;while(p1->num!=0)n=n+1;if(n=1)head=p1;elsep2->next=p1;p2=p1;p1=(structstudent*)malloc(len);scanf("%dt%dt%st%st%st%st%st%s",&p1->num,&p1->age,p1->n
15、ame,p1->sex,p1->chushen,p1->dizhi,p1->phone,p1->email);p2->next=NULL;return(head);voidinsert(structstudent*head)/插入学生信息intsearch_num;structstudent*p,*q,*s;p=head;printf("在哪个学生前插入请输入学号:n");scanf("%d",&search_num);while(p!=NULL)&&(p->num!=search_num
16、)(q=p;p=p->next;s=(structstudent*)malloc(len);q->next=s;system("cls");printf("请输入学生信息:n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");scanf("%dt%dt%st%st%st%st%st%s”,&s->num,&s->age,s->name,s->sex,s->chushen,s->dizhi,s->phone,s->ema
17、il);s->next=p;voidprintList(structstudent*head)浏览全部学生信息(structstudent*p;p=head;if(head=NULL)printf("没有学生信息!!n");else(do(fread(p,len,1,fp);printf("%dt%dt%st%st%st%st%st%sn",p->num,p->age,p->name,p->sex,p->chushen,p->dizhi,p->phone,p->email);p=p->next;
18、while(p!=NULL);voidfindList_num(structstudent*head,longsearch_num)磔学号查找(structstudent*p;p=head;while(p!=NULL)&&(p->num!=search_num)p=p->next;if(p!=NULL)printf("%dt%dt%st%st%st%st%st%sn",p->num,p->age,p->name,p->sex,p->chushen,p->dizhi,p->phone,p->email
19、);elseprintf("没有该学生信息!!n");voidfindList_name(structstudent*head,char*search_name)按姓名查找(structstudent*p;intcmp1=0,cmp=0;p=head;while(p!=NULL)if(strcmp(p->name,search_name)!=0)p=p->next;cmp+;elseprintf("%dt%dt%st%st%st%st%st%sn",p->num,p->age,p->name,p->sex,p->
20、chushen,p->dizhi,p->phone,p->email);p=p->next;cmp1=1;if(cmp!=0&&cmp1=0)printf("没有该学生信息!n");voidxiugai(structstudent*p1,longxiu_num)/修改学生信息structstudent*p2;p2=p1;while(p2!=NULL)&&(p2->num!=xiu_num)p2=p2->next;if(p2!=NULL)scanf("%dt%dt%st%st%st%st%st%s&
21、quot;,&p2->num,&p2->age,p2->name,p2->sex,p2->chushen,p2->dizhi,p2->phone,p2->email);)elseprintf("没有该学生信息!!n");)structstudent*delList(structstudent*head,longdel_num)/删除学生信息structstudent*p,*q;p=head;q=head;while(p&&(p->num!=del_num)q=p;p=p->next;
22、)if(p=NULL)printf("无此学号!n");elseif(p=head)head=p->next;free(p);)elseq->next=p->next;free(p);)returnhead;)voidpaixu(structstudent*head)按学号排序(structstudent*p,*f,*t;charch100;inti;t=f=p=head;for(p=head;p->next!=NULL;p=p->next)(for(t=head,f=t->next;t->next!=NULL;t=t->ne
23、xt,f=f->next)(if(t->num>f->num>0)(i=t->num;t->num=f->num;f->num=i;i=t->age;t->age=f->age;f->age=i;strcpy(ch,t->name);strcpy(t->name,f->name);strcpy(f->name,ch);strcpy(ch,t->sex);strcpy(t->sex,f->sex);strcpy(f->sex,ch);strcpy(ch,t->chu
24、shen);strcpy(t->chushen,f->chushen);strcpy(f->chushen,ch);strcpy(ch,t->dizhi);strcpy(t->dizhi,f->dizhi);strcpy(f->dizhi,ch);strcpy(ch,t->phone);strcpy(t->phone,f->phone);strcpy(f->phone,ch);strcpy(ch,t->email);strcpy(t->email,f->email);strcpy(f->email,ch)
25、;/returnhead;voidsave(structstudent*head)/保存为磁盘文件structstudent*p;if(fp=fopen("keshe","w")=NULL)打开一个文件printf("cannotopenthisfilen");exit(0);)p=head;while(p!=NULL)(fprintf(fp,"%dn",p->num);fprintf(fp,"%dn",p->age);fprintf(fp,"%sn",p->
26、;name);fprintf(fp,"%sn",p->sex);fprintf(fp,"%sn",p->chushen);fprintf(fp,"%sn",p->dizhi);fprintf(fp,"%sn",p->phone);fprintf(fp,"%sn",p->email);p=p->next;)fclose(fp);)structstudent*read()/从磁盘读取文件(structstudent*head=NULL;structstudent*
27、p=NULL;structstudent*t=NULL;inta;/fp=fopen("keshe","r");if(fp=fopen("keshe","r")=NULL)打开一个文件(printf("cannotopenthisfilen");exit(0);)while(1)(t=(structstudent*)malloc(len);a=fscanf(fp,"%dt%dt%st%st%st%st%st%s",&t->num,&t->age,t
28、->name,t->sex,t->chushen,t->dizhi,t->phone,t->email);if(a=0|a=-1)returnhead;t->next=NULL;if(p=NULL)(p=t;head=t;)else(p->next=t;p=p->next;p->next=NULL;)fclose(fp);)voidmain()主函数(intcode=0;structstudent*pt=NULL;for(code=1;code+)(menu();printf("请输入序号:n");scanf(&q
29、uot;%d",&code);system("cls");switch(code)(case1:/控制循环/调用菜单函数/提示输入序号/清屏(下边也是这样的功能)/选择序号进行功能选择(system("cls");printf("=输入学生信息=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");pt=creat();调用输入函数save(pt);/将数据存储到磁盘中system("cls");pri
30、ntf("=输入学生信息=n");printf("n");printf('I*成功输入学生信息*!nn");printf("接回车键返回主菜单n");getchar();/按回车键返回getchar();system("cls");break;case 2:system("cls");printf("=学生信息表=、),;printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");pri
31、ntList(read();/调用输出函数(是从磁盘中读出的)printf("=n");printf("n");printf("n接回车键返回主菜单n");getchar();getchar();system("cls");break;case 3:(intsearch=0;system("cls");printf("=查询学生信息=n");printf("n");while(search!=3)进入查询功能函数(printf("1、按学号查询n
32、2、按姓名查询n3、退出查询n");scanf("%d”,&search);/插入查找的方式switch(search)(case 1: /选择学号查询(longsearch_num;system("cls");printf("请输入学生学号n");scanf("%d”,&search_num);system("cls");printf("=查询结果=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话t
33、e-mail'n");findList_num(read(),search_num);调用查找函数,将数据从磁盘中读出printf("=n");printf("n");printf("n接回车键返回查询菜单n");getchar();getchar();system("cls");break;case 2: /按姓名查找(charsearch_name15;system("cls");printf("请输入学生姓名n");scanf("%s&quo
34、t;,search_name);/输入要查找的学生的姓名system("cls");printf("=查询结果=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");findList_name(read(),search_name);调用姓名查找函数printf("=n");printf("n");printf("n接回车键返回查询菜单n");getchar();getchar();system(&q
35、uot;cls");system("cls");break;case 4: /删除学生信息longdel_num;system("cls");printf("=删除学生信息=n");printf("n");printf("请输入要删除学生信息的学号:n");scanf("%d",&del_num);/输入要删除的学号system("cls");pt=delList(read(),del_num);/调用删除函数save(pt);print
36、f("=n");printf("n");printf("学号为%d的学生信息成功删除n",del_num);printf("n接回车键返回主菜单n");getchar();getchar();system("cls");break;case 5: /插入函数system("cls");printf("=插入学生信息=n");printf("n");insert(pt);调用输入函数save(pt);/保存到磁盘中system("
37、;cls");printf("=插入学生信息=n");printf("n");printf("*插入学生信息成功*!nn");printf("接回车键返回主菜单n");getchar();getchar();system("cls");break;case 6: /修改函数longsearch_num;system("cls");printf("请输入要修改的学生学号:n");scanf("%d",&search_nu
38、m);/输入要修改的学生学号system("cls");printf("=修改学生信息=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");findList_num(read(),search_num);调用查找函数printf("n");printf("请输入修改信息:n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");pt=read();xiugai(pt,se
39、arch_num);/调用修改函数save(pt);保存printf("=n");printf("n");printf("*修改学生信息成功*!nn");printf("n接回车键返回查询菜单n");getchar();getchar();system("cls");break;case 7: /排序函数(system("cls");按学号从小到大排序printf("nn");printf("=学生信息表=n");printf(&quo
40、t;n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");pt=read();paixu(pt);/调用排序函数printList(pt);调用显示函数save(pt);printf("=n");printf("n");printf("n接回车键返回主菜单n");getchar();getchar();system("cls");break;case8:read();break;/返回函数【测试情况】1.打开程序,进入主菜单,“学生信息管理系统”,包括七
41、项功能,(1)输入学生信息,以输入学号位0结束;(2)浏览学生信息;(3)按学生好号或姓名查询学生信息;(4)按学号删除学生信息;(5)按学号找出要修改的学生信息,再修改该学生信息;(6)添加学生信息;(8)退出系统。*任3C诺言上机实默课程设出逑管迎息大理12345678图1-2菜单2 .选择(1),输入四个学生信息,输入的学号为0结束输入。如图1-3图1-3输入3 .选择功能(2)浏览学生信息,如1-4'E:«s±LSigtbDebugwe,e)(e',号学1S131712龄尹26281231名姓露量性别出生n1994H1994N1994n1994nt电
42、话e-nail76102qqBcon8fi?882964但qq.心口由148£15SPqq.cani安回车键返回主菜单1-4浏览学生信息4.选择功能(3),进行查询学生信息,如下图,查找的是学号为12的学生信息。0同时要查找的学生信息不在学生表中,就会输出“学生信息不存在”=查询结果”“=fci藕Si一一一一屉就一一出生蚪赢一一一一二31812M1994重庆76102qq.con安回车键返回查询菜单1-5查找学生信息5.选择功能(4),进行删除功能,如下图,输入要删除的学号为14,再选择功能(2),查看是否删除掉,同时,如果要删除的学生信息不在学生表中,就输出“此学生信息不存在”。如
43、下图1-6图1-6删除学生信息6.选择功能(5),添加学生信息,输入学生信息,以输入的学号为0结束输入,再选择功能(2)进行浏览,查看添加的学生信息是否添加上,如下图1-7,E、c谱音上加实通下果程设计1="”="一=3学生信息表龄年264532t4844M39999E9899址阳建小雷地洛得春苫836S-TU9991hB6726HR8888e-nail3Gqq,con9Gqq,cnn"l(?qq»conl45(?qq*con图1-7添加学生信息7.选择功能(6),修改学生信息,输入要修改学生学号,以输入的学号为12为例,再选择功能(2)进行浏览,查看添加的学生信息是否添加上,修改前如下图1-8,修改后如图1-9。0E:C语/上机实物澧程设计IMbugXwd8一修改学生信息徉号年龄1732姓名程性别M出生1994地址安徽电话829&e-nail4qq.corill姓名性别出生地址电话e-nail|4|F图1-8查找修改学生信息8£9887989P8096,2l?qq
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《防雷工程资格培训》课件
- 鸟生物课件教学课件
- 《集体生活成就我》课件
- KTV顾客投诉的原因及课件
- 规划设计服务合同完整版
- 《建筑制图及识》课件
- 《建筑法规课程简介》课件
- 英语基础模块1-U5 We Have Only One Earth
- 酒店承包经营合同范本完整版
- 龙门吊噪音治理工程2024年合同
- 物化生会考知识点总结
- 光伏电站电气设备安装工程施工方案
- 人教部编版九年级语文下册第12课《词四首》练习题(含答案)
- 股票账户合作协议
- 工业安装工程分部、分项工程、检验批划分表
- 电波传播理论(徐立勤)13降雨与云雾衰减预测模型
- 太极拳全面系统训练破罗红元
- 锅炉浇注料施工方案
- 矿山地质环境保护与治理恢复方案(技术标)投标文件
- 中国宏观经济形势分析框架PPT课件
- 儿童英文自我介绍课件PPT
评论
0/150
提交评论