版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*大学课程设计报告课程名称 咼级语言程序设计设计题目 学生信息管理系统专 业 计算机科学与技术班 级 学 号 姓 名 完成日期课程设计任务书设计题目:学生信息管理系统设计设计内容与要求:内容:对学生信息进行管理,学生信息包括学号、姓名、性别、年龄、学历、学号、 住址、电话等(学号不重复)。要求:(1) 系统以菜单方式工作(2) 学生信息录入功能(学生信息用文件保存)。(3) 输出学生信息、浏览学生信息功能。(4) 查询和排序功能:(至少一种查询方式),如按学号查询、按学历查询等。(5) 学生信息删除、修改功能(任选项)。指导教师:年 月 日课程设计评语成绩:指导教师:洛阳理工学院课程设计报告【
2、问题描述】学生信息管理软件设计。对学生信息进行管理,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一个学生信息管理软件。【基本要求】一、输入的形式和输入值的范围形式:用scanf输入学生的学号,姓名,年龄,性别,出生年月,地址,电 话,E-mail。输入一个学生信息一个回车。用输入的学号p1->num来控制输入,当输入的学号为0时,用break跳出循环。即if(p1->num=O)break 。输入值的范围:学号、年龄为整型 long num; int age;姓名为字符串型15个字节char name15;性别为字符串型,10个字节char s
3、ex10;出生为字符串型,20个字节char chushen20;地址为字符串型,30个字节char dizhi30;邮箱为字符串型,输入11位数字char email11。二、输出的形式输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第 二行是显示第二个学生的信息。三、程序所能达到的功能对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月, 地址,电话,E-mail。(1) 系统以菜单方式工作(2) 学生信息录入功能。(3)输出学生信息、浏览学生信息功能(4)查询和排序功能:(至少一种查询方式),如按学号查询、按姓名查询等。(5) 学生信息删除、修改功能(任选项
4、)(6) 添加学生信息。【测试数据】输入:设输入四个学生信息,以最后一个学生的学号为 0来结束输入,学号 是整型。预期的输出结果:预期的输出结果请参见程序后的运行结果。【数据结构】排序记录的数据元素表采用一维数组存储结构, 每个元素包含8个关键字段, 其类型描述为:#i nclude<stdio.h>#i nclude<malloc.h>分配size字节的存储区#i nclude<stri ng.h>包含字符串处理函数的头文件,可以直接调现有的字符串处理的一系列函数#defi ne len sizeof(struct stude nt)/ 宏定义求字节运算符
5、#i nclude<stdlib.h>/清屏功能struct stude ntlong num;声明一个结构体类型struct stude nt/定义学号为long型数据char n ame15;/定义姓名int age;/定义年龄char sex3;定义性别char chushe n 10;/定义出生char dizhi20;/定义出生地址char pho ne11;/定义电话char email20;定义邮箱struct stude nt *n ext;/next是指针变量,指向结构体变量【算法思想】利用一维结构体存放所有学生的信息,输入后,在输出时要对学生按学号的 高低排序,
6、然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入 学号可以找出该学生信息,然后选择修改学生信息,如果来了新学生,还可以添 加学生信息。【总体设计】主菜单包括:输入函数、学号排序、浏览函数、删除函数、修改函数、添加函数L输入函数用键盘输入学生信息学生排序按学生学号高低排序输出学生信息以表格的形式输出学生信息显示主菜单删除学生信息输入一个学生学号,来删除该学生信息修改学生信息输入学号,修改的学生信息添加学生信息在原有的学生上添加学生信息图1-1学生管理总体设计【模块划分】一、主函数:mai n()显示系统工作菜单,显示该系统的所有功能。告诉使用者所有将会调用的被 调函数,再运用选择函数
7、switch即可根据使用者所输入的学号进入对应的功能程 序。并且对菜单做了一个循环,进行完一个选择后,按回车键可进行清屏功能, 把屏幕上除了主菜单以外都清空,然后可以继续选择那些可以使用的功能,这样 可以方便使用者使用,并且每一步都很清晰。以 8退出系统。二、输入函数:struct stude nt *creat()在该程序的前面已经定义了一个结构体struct student用来储存学生的所有信息,(学号、年龄、姓名、性别、出生日期、地址、电话、由E箱)。定义pl和p2,struct student *p1,*p2;p1,p2是指向 struct student类型数据的指针变量。定义一个n
8、=0, n是输入的个数,主要作用是:如果输入一个学生信息,首地 址指向pl,head=p1;否则p2的下一个地址指向 pl,p2指向p1. p2->next=p1 ; p2=p1 ;学号控制循环。三、排序函数: void paixu(struct student *head)用一个for语句做循环,不是NULL的话,指针指向下一个,按学生学号高低 排序。整形直接交换,字符型用strcpy交换,类型相当于两个数据之间的交换。四、输出函数:void prin tlist(struct stude nt *head)在主函数里边用while控制循环,输出学生信息,然后指针指向下一个五、查询函数
9、: void findList_num(struct student *head)和void fin dList_ nu m(struct stude nt *head)输入一个学号或姓名,做一个for循环,即指针pt指向第一个地址,再定义 一个指针pl,让它等于pt,他是紧跟着pt后面的一个指针,让p1->next不等于 NULL pt指向下一个地址。这样就能修改最后一个学生信息了。如果要查询的学 生的学号在学生里,就输出该学生信息,否则,就输出查询的学生信息不存在。六、删除函数:int shan chu(struct stude nt *head)输入一个学号,先找到这个学生的信息。
10、如果输入的学号在学生信息中,就 进行以下循环:如果输入的是第一个学生的话,就head等于第二个学生信息;如果输入的学生信息是最后一个,就让倒数第二个等于NULL否则的话,就让下一个学生信息覆盖前一个。如果输入的学号不在学生信息中,输出“此学生信息不 存在”。七、修改函数:struct student *delList(struct student *head,long del_ num)输入要修改的学号,找到该学生并且输出该学生的信息。然后屏幕上会出现 学生信息的所有项目,用switch进行选择修改的项目。选择后输入新的学生信息, 用它来覆盖原来的学生信息。八、添加函数:void in ser
11、t(struct stude nt *head)用一个while语句while(p2->next!=NULL) 控制循环,p2的指针指向下一个 地址,即p2=p2->next;这是找到最后一个地址,然后开辟动态存储区,p仁(struct student *)malloc(len);输入要添加的学号,用学号为 0来终止循环,如果不为0,就继续输入学生信息。【源程序】#i nclude<stdio.h>#include<malloc.h>/分配size字节的存储区#i ncludevstri ng.h>包含字符串处理函数的头文件,可以直接调用现有的字符串处
12、理的一系列函数#defi ne len sizeof(struct stude nt)/ 求字节运算符#i nclude<stdlib.h>清屏功能FILE *fp;struct stude nt/声明一个结构体类型 struct stude ntint num;学号为整型char n ame20;/姓名为字符串char gen ter10;/性别为字符串int age;/年龄为整型char xueli20;/学历为字符串in t go ngzi;/学号为整型char address30;/地址为字符串char pho ne11;/电话为字符串struct stude nt *n
13、ext;/next是指针变量,指向结构体变量;void menu()prin tf("=学生信息管理系统=nn");printf("1、录入学生信息n");printf("2、浏览学生信息n");printf("3、查询学生信息n");printf("4、删除学生信息n");printf("5、插入学生信息n");printf("6、修改学生信息n");printf("7、排序学生信息n");printf("8退出管理系统n&
14、quot;);prin tf("=n");struct student *creat() /录入学生信息int n;struct stude nt *head;struct stude nt *p1,*p2;n=0;p1=p2=(struct stude nt *) malloc(le n);scan f("%dt%dt%st%st%st%st%st%s",&p1-> num,&p1->age,p1-> name,p1->sex,p1->chushe n,p1->dizhi,p1->ph on e
15、,p1->email);head=NULL;while(p1- >num!=0)n=n+1;if(n=1) head=p1;else p2->n ext=p1;p2=p1;p1=(struct stude nt *)malloc(le n);sca nf("%dt%dt%st%st%st%st%st%s",&p1-> num,&p1->age,p1-> name,p1->s ex,p1->chushe n,p1->dizhi,p1->pho ne,p1->email);p2-> next
16、=NULL;return(head);void in sert(struct stude nt *head) /插 入学生信息int search_ num;struct stude nt *p,*q,*s;p=head;printf("在哪个学生前插入请输入学号:n");sea nf("%d",&search _nu m);while(p!=NULL)&&(p-> nu m!=search_num)q=p;p=p->n ext;s=(struct stude nt *)malloc(le n);q->n ext
17、=s;system("cls");printf("请输入学生信息:n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");scan f("%dt%dt%st%st%st%st%st%s",&s-> num,&s->age,s-> name,s->sex,s->chus hen, s->dizhi,s->ph on e,s->email);s->n ext=p;void prin tList(struct stude
18、nt *head) 浏览全部学生信息struct stude nt *p;p=head;if(head=NULL)printf("没有学生信息!n");elsedofread(p,le n,1,fp);prin tf("%dt%dt%st%st%st%st%st%sn",p-> nu m,p->age,p-> name,p->sex,p->chus hen ,p->dizhi,p->pho ne,p->email);p=p->n ext;while(p!=NULL); void fin dList_
19、nu m(struct stude nt *head,l ong search_ num) /按 学号查找 struct stude nt *p;p=head;while(p!=NULL)&&(p-> nu m!=search_num) p=p->n ext;if(p!=NULL) prin tf("%dt%dt%st%st%st%st%st%sn",p-> nu m,p->age,p-> name,p->sex,p->chus hen ,p->dizhi,p->pho ne,p->email);e
20、lseprintf("没有该学生信息!n");void findList_name(struct student *head,char *search_name) /按姓名查找struct stude nt *p;int cmp1=0,cmp=0;p=head;while(p!=NULL)if(strcmp(p->n ame,search_ name)!=0) p=p->n ext;cmp+;elseprin tf("%dt%dt%st%st%st%st%st%sn",p-> nu m,p->age,p-> name,p-&
21、gt;sex,p->chus hen ,p->dizhi,p->pho ne,p->email);p=p->n ext;cmp1=1;if(cmp!=0&&cmp1=0)prin tf("没有该学生信息! !n");void xiugai(struct stude nt *p1,l ong xiu_ num) 修改学生信息struct stude nt *p2;p2=p1;while(p2!=NULL)&&( p2-> nu m!=xiu_num)p2=p2->n ext;if(p2!=NULL)sc
22、a nf("%dt%dt%st%st%st%st%st%s",&p2-> num,&p2->age,p2-> name,p2->s ex,p2->chushe n,p2->dizhi,p2->pho ne,p2->email); elseprintf("没有该学生信息!n"); struct student *delList(struct student *head,long del_num) / 删除学生信息 struct stude nt *p,*q;p=head;q=head;whil
23、e(p &&(p->num != del_ nu m)q=p;p=p->n ext;if(p=NULL)printf("无此学号!n");elseif(p = head)head = p->n ext; free(p);elseq->n ext = p->n ext; free(p);retur n head; void paixu(struct student *head) /按学号排序struct stude nt *p,*f,*t;char ch100;int i;t=f=p=head;for(p=head;p->n
24、 ext!=NULL;p=p->n ext)for(t=head,f=t- >n ext;t- >n ext!=NULL;t=t- >n ext,f=f- >n ext)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- >n ame); strcpy(t- >n ame,f- >n ame); strcpy(f- >n ame
25、,ch);strcpy(ch,t->sex); strcpy(t->sex,f->sex); strcpy(f->sex,ch);strcpy(ch,t->chushe n); strcpy(t->chushe n, f->chushe n); strcpy(f->chushe n, ch); strcpy(ch,t->dizhi); strcpy(t->dizhi,f->dizhi); strcpy(f->dizhi,ch); strcpy(ch,t->ph on e); strcpy(t->ph on e,
26、f->ph on e); strcpy(f->ph on e,ch); strcpy(ch,t->email); strcpy(t->email,f->email); strcpy(f->email,ch);/ return head;void save(struct stude nt *head) / 保存为磁盘文件 struct stude nt *p;/打开个文件if(fp=fope n("keshe","w")=NULL)prin tf("ca nnot ope n this filen")
27、; exit(O);p=head;while(p!=NULL)fprin tf(fp,"%dn",p-> num);fprin tf(fp,"%dn",p->age);fprin tf(fp,"%sn",p->n ame);fprin tf(fp,"%sn",p->sex);fprin tf(fp,"%sn",p->chushe n); fprin tf(fp,"%sn",p->dizhi);fprin tf(fp,"%sn&qu
28、ot;,p->pho ne);fprin tf(fp,"%sn",p->email);p=p->n ext;fclose(fp); struct student *read() /从磁盘读取文件struct stude nt *head=NULL;struct stude nt *p=NULL;struct stude nt *t=NULL;int a;/ fp=fope n("keshe","r");个文件if(fp=fope n("keshe","r")=NULL)打开pr
29、in tf("ca nnot ope n this filen");exit(O);while(1)t=(struct stude nt *)malloc(le n);a=fsca nf(fp,"%dt%dt%st%st%st%st%st%s", &t-> num,& t->age,t- >n ame,t->se x,t->chushe n, t->dizhi,t->ph on e,t->email);if(a=0|a=-1)return head;t->n ext=NULL;if(p
30、=NULL)p=t;head=t;elsep->n ext=t;p=p->n ext;p-> next=NULL;fclose(fp);void mai n()主函数int code=0;struct stude nt *pt = NULL;for(code=1;code+)menu();printf("请输入序号:n"); scan f("%d",&code);system("cls"); switch(code)case 1:/控制循环调用菜单函数/提示输入序号/清屏(下边也是这样的功能)/选择序号进行功
31、能选择system("cls");printf("=输入学生信息=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn"); pt=creat();/调用输入函数save(pt);/将数据存储到磁盘中 system("cls");prin tf("=输入学生信息printf("=n");prin tf ("*成功输入学生信息*!nn");n");printf("按回车键返回主
32、菜单n");getchar();/按回车键返回getchar();system("cls");break;case 2:system("cls");prin tf("= 学 生 信 息 表 =n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");prin tList(read();调用输出函数(是从磁盘中读出的)prin tf("= =n");printf("n");printf("
33、;n按回车键返回主菜单n");getchar();getchar();system("cls");break;case 3:int search=0;system("cls");prin tf("=查 询 学 生 信 息=n");printf("n");while(search!=3)/进入查询功能函数printf("1、按学号查询n2、按姓名查询n3、退出查询n");sca nf("%d",&search);/ 插入查找的方式switch(search)c
34、ase 1:选择学号查询long search_ num;system("cls");printf("请输入学生学号n"); sca nf("%d", &search_ nu m);system("cls");prin tf("= 查询 结 果=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");findList_num(read(),search_num);/调用查找函数,将数据从磁盘中读
35、出prin tf("=n");printf("n");printf("n按回车键返回查询菜单n");getchar();getchar();system("cls");break;case 2:/按姓名查找char search_ name15;system("cls");printf("请输入学生姓名n");sca nf("%s",search_name);输入要查找的学生的姓名system("cls");prin tf("
36、=查询结果=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");fin dList_name(read(),search_name);/ 调用姓名查找函数prin tf("= =n");printf("n");printf("n按回车键返回查询菜单n");getchar();getchar();system("cls");system("cls");break;case 4:删除学生信息l
37、ong del_ num;system("cls");prin tf("=删 除 学 生 信 息=n");printf("n");printf("请输入要删除学生信息的学号:n");sca nf("%d",&del_num);输入要删除的学号system("cls");pt=delList(read(),del_num);/ 调用删除函数save(pt);prin tf("=n");printf("n");printf(&quo
38、t;学号为%d的学生信息成功删除n",del_num);printf("n按回车键返回主菜单n");getchar();getchar();system("cls");break;case 5:插入函数system("cls");prin tf("= 插 入 学 生 信 息 =n");printf("n");in sert(pt);调用输入函数save(pt);/保存到磁盘中system("cls");prin tf("= 插 入 学 生 信 息=n&qu
39、ot;);printf("n");printf("*插入学生信息成功*!nn");printf("按回车键返回主菜单n");getchar();getchar();system("cls");break;case 6:修改函数long search_ num;system("cls");printf("请输入要修改的学生学号:n");sca nf("%d",&search_num);输入要修改的学生学号system("cls")
40、;prin tf("=修 改 学 生 信 息=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn"); fin dList_num(read(),search_num);调用查找函数prin tf("n");printf("请输入修改信息:n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn"); pt=read();xiugai(pt,search_num);/ 调用修改函数save(pt);
41、/ 保存prin tf("=n");printf("n");printf("*修改学生信息成功*!nn");printf("n按回车键返回查询菜单n");getchar();getchar();system("cls");break;case 7:排序函数system("cls");printf("按学号从小到大排序nn");prin tf("= 学 生 信 息 表 =n");printf("n");printf(&
42、quot;学号t年龄t姓名t性别t出生t地址t电话te-mailn"); pt=read();paixu(pt);调用排序函数prin tList(pt);/调用显示函数save(pt);prin tf("= =n");printf("n");printf("n按回车键返回主菜单n");getchar();getchar();system("cls");break;case 8:read();break;返回函数23洛阳理工学院课程设计报告【测试情况】1. 打开程序,进入主菜单,“学生信息管理系统”,包括
43、七项功能,(1)输入 学生信息,以输入学号位0结束;(2)浏览学生信息;(3)按学生好号或姓名查 询学生信息;(4)按学号删除学生信息;(5)按学号找出要修改的学生信息,再 修改该学生信息;(6)添加学生信息;(8)退出系统。屯匚语言上机实嶽诧程设讯gbug'gxb二一统 "系 人理 训自亠一耳 -一 4- 一一学12345678自3自3自曲自3自自3自3 亠一一豆一目=SJ一豆一一更_更一一 入薦除入图1-2菜单2. 选择(1),输入四个学生信息,输入的学号为 0结束输入。如图1-3宀年龄曹名性别出生地址电话e-mail1812M丄舸476102P<jq .con13
44、M199486983Pqq.con1712321Sn M19941994II8296 86154Pqq _coml45qq,con00000000图1-3输入3. 选择功能(2)浏览学生信息,如1-4电话 7610 8698 8296出生1994 199419941994性别nHN年龄12263218学号I E:C语盲上机实鐵躍程设计Dt bu gwe蚀he-mail 2(?q(f .con 3qq com 4q4,coml4 5(?qq .cam721-4浏览学生信息4. 选择功能(3),进行查询学生信息,如下图,查找的是学号为12的学生信息 同时要查找的学生信息不在学生表中,就会输出“学生
45、信息不存在”。:花;匚语言上初奕验课程设:-Debugwe,exe*1-5查找学生信息25洛阳理工学院课程设计报告#洛阳理工学院课程设计报告5. 选择功能(4),进行删除功能,如下图,输入要删除的学号为14,再选择功能(2),查看是否删除掉,同时,如果要删除的学生信息不在学生表中,就输出“此学生信息不存在”。如下图1-6。I飞:匚语言二机实逐炜琨设-汁Qebugw已exu图1-6删除学生信息#洛阳理工学院课程设计报告#洛阳理工学院课程设计报告选择功能(5),添加学生信息,输入学生信息,以输入的学号为0结束输#洛阳理工学院课程设计报告入,再选择功能(2)进行浏览,查看添加的学生信息是否添加上,如
46、下图1-7。e-nail3Gqq,con9Gqq,cnn "l(?qq »conl-45(?qq *con舌 8 8 6 5-19 9 9 1hB 6 ? 2 6R 8 & & 8J.U 4 8 4 4M3 9 9 9 9LU 9 8 9 9L L 1 1 1 1弔性啊W啊啊龄年2645321926洛阳理工学院课程设计报告#洛阳理工学院课程设计报告图1-7添加学生信息6. 选择功能(6),修改学生信息,输入要修改学生学号,以输入的学号为12为例,再选择功能(2)进行浏览,查看添加的学生信息是否添加上,修改前如下 图1-8,修改后如图1-9。飞;*语言上机須斜杲程设计2北ug讪強讨r岁RX_于土 口屆/P学号 年龄誥名性别岀牛地址电话e-nail£1732程M1994安徽82964qq_coml4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度外贸服装品牌授权及产品销售合同3篇
- 二零二五年度矿山开采土石方剥离与综合利用合同3篇
- 2024年中国片状模塑料市场调查研究报告
- 2024年中国渔具用钢丝绳市场调查研究报告
- 二零二五年度林业产业发展竞业禁止模板木方交易协议书3篇
- 2025年度化工废料处理服务合同6篇
- 2024年国珍宴白酒项目可行性研究报告
- 《交流微电网能量管理系统控制策略与软件开发》
- 2024年汝南县人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 2024年中国套管帽市场调查研究报告
- 小学二年级上册数学-数角的个数专项练习
- 期末核心素养测评卷2023-2024学年语文五年级上册+统编版
- 医疗器械质量安全风险会商管理制度
- 《我爱上班》朗诵稿
- 2024年石油石化技能考试-石油钻井工笔试参考题库含答案
- 2024年度带状疱疹课件
- 电桩采购安装充电桩调试验收方案
- 消防设施安全检查表
- 钻孔灌注桩施工方案 (详细)
- 新建南通至宁波高速铁路站前Ⅲ标二分部出海栈桥及综合码头(自用)工程海域使用论证报告表
- 车身稳定系统课件
评论
0/150
提交评论