版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WORD格式*大学课程设计报告课程名称高级语言程序设计设计题目学生信息管理系统专业计算机科学与技术班级学号*完成日期专业资料整理WORD格式课程设计任务书设计题目:学生信息管理系统设计设计内容与要求:内容:对学生信息进展管理,学生信息包括学号、*、性别、年龄、学历、学号、住址、等学号不重复 。要求:(1) 系统以菜单方式工作(2) 学生信息录入功能 (学生信息用文件保存 ) 。(3) 输出学生信息、浏览学生信息功能。(4) 查询和排序功能: (至少一种查询方式 ) ,如按学号查询、按学历查询等。(5) 学生信息删除、修改功能 (任选项 )。指导教师: _年月日课程设计评语成绩:指导教师: _年
2、月日专业资料整理WORD格式*理工学院课程设计报告【问题描述】学生信息管理软件设计。 对学生信息进展管理, 学生信息包括: 学号,*,年龄,性别,出生年月,地址, E-mail 等。试设计一个学生信息管理软件。【根本要求】一、输入的形式和输入值的X围形式:用 scanf 输入学生的学号,*,年龄,性别,出生年月,地址,电话, E-mail 。输入一个学生信息一个回车。用输入的学号p1->num来控制输入,当输入的学号为 0 时,用 break 跳出循环。即 if(p1->num=0)break。输入值的X围:学号、年龄为整型long num; int age;*为字符串型15 个字
3、节 char name15;性别为字符串型, 10 个字节 char sex10;出生为字符串型, 20 个字节 char chushen20;地址为字符串型, 30 个字节 char dizhi30;为字符串型,输入11 位数字 char email11。二、输出的形式输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第二行是显示第二个学生的信息。三、程序所能到达的功能对学生信息进展管理,学生信息包括职学号,*,年龄,性别,出生年月,地址, E-mail 。(1) 系统以菜单方式工作(2) 学生信息录入功能。专业资料整理WORD格式1专业资料整理WORD格式*理工学院课程设计报
4、告(3) 输出学生信息、浏览学生信息功能。(4) 查询和排序功能: ( 至少一种查询方式 ) ,如按学号查询、按*查询等。(5) 学生信息删除、修改功能 ( 任选项 ) 。(6) 添加学生信息。【测试数据】输入:设输入四个学生信息,以最后一个学生的学号为0 来完毕输入,学号是整型。预期的输出结果:预期的输出结果请参见程序后的运行结果。【数据构造】排序记录的数据元素表采用一维数组存储构造, 每个元素包含 8 个关键字段,其类型描述为:#include<stdio.h>#include<malloc.h>/分配 size 字节的存储区#include<string.h
5、>/包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数#define len sizeof(struct student)/宏定义求字节运算符#include<stdlib.h>/清屏功能struct student/声明一个构造体类型struct studentlong num;/定义学号为 long 型数据char name15;/定义*int age;/定义年龄char sex3;/定义性别char chushen10;/定义出生char dizhi20;/定义出生地址char phone11;/定义专业资料整理WORD格式2专业资料整理WORD格式*
6、理工学院课程设计报告char email20;/定义struct student *next;/next 是指针变量,指向构造体变量【算法思想】利用一维构造体存放所有学生的信息,输入后,在输出时要对学生按学号的上下排序,然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入学号可以找出该学生信息,然后选择修改学生信息,如果来了新学生,还可以添加学生信息。【总体设计】主菜单包括:输入函数、学号排序、浏览函数、删除函数、修改函数、添加函数。输入函数用键盘输入学生信息学生排序按学生学号上下排序输出学生信息以表格的形式输出学生信息显示主菜单删除学生信息输入一个学生学号,来删除该学生信息修改学生信
7、息输入学号,修改的学生信息添加学生信息在原有的学生上添加学生信息图 1-1 学生管理总体设计专业资料整理WORD格式3专业资料整理WORD格式*理工学院课程设计报告【模块划分】一、主函数: main()显示系统工作菜单,显示该系统的所有功能。告诉使用者所有将会调用的被调函数,再运用选择函数 switch 即可根据使用者所输入的学号进入对应的功能程序。并且对菜单做了一个循环,进展完一个选择后,按回车键可进展清屏功能,把屏幕上除了主菜单以外都清空,然后可以继续选择那些可以使用的功能,这样可以方便使用者使用,并且每一步都很清晰。以 8 退出系统。二、输入函数: struct student *cre
8、at()在该程序的前面已经定义了一个构造体structstudent 用来储存学生的所有信息,学号、年龄、*、性别、出生日期、地址、。定义 p1 和p2,struct student *p1,*p2;p1,p2 是指向 struct student类型数据的指针变量。定义一个 n=0,n 是输入的个数,主要作用是:如果输入一个学生信息,首地址指向 p1,head=p1; 否那么 p2 的下一个地址指向 p1, p2 指向 p1. p2->next=p1 ;p2=p1;学号控制循环。三、排序函数: void paixu(struct student *head)用一个 for语句做循环,不
9、是 NULL的话,指针指向下一个,按学生学号上下排序。整形直接交换,字符型用strcpy交换,类型相当于两个数据之间的交换。四、输出函数: void printlist(struct student *head)在主函数里边用while 控制循环,输出学生信息,然后指针指向下一个。专业资料整理WORD格式4专业资料整理WORD格式*理工学院课程设计报告五、查询函数: void findList_num(struct student *head)和void findList_num(struct student *head)输入一个学号或*,做一个 for 循环,即指针 pt 指向第一个地址,再
10、定义一个指针 p1,让它等于 pt ,他是紧跟着 pt 后面的一个指针,让 p1->next 不等于NULL,pt 指向下一个地址。这样就能修改最后一个学生信息了。如果要查询的学生的学号在学生里,就输出该学生信息,否那么,就输出查询的学生信息不存在。六、删除函数: int shanchu(struct student *head)输入一个学号,先找到这个学生的信息。如果输入的学号在学生信息中,就进展以下循环:如果输入的是第一个学生的话,就head 等于第二个学生信息;如果输入的学生信息是最后一个,就让倒数第二个等于NULL;否那么的话,就让下一个学生信息覆盖前一个。如果输入的学号不在学生
11、信息中,输出“此学生信息不存在。七、修改函数: structstudent*delList(structstudent*head,longdel_num)输入要修改的学号,找到该学生并且输出该学生的信息。然后屏幕上会出现学生信息的所有工程,用 switch 进展选择修改的工程。 选择后输入新的学生信息,用它来覆盖原来的学生信息。八、添加函数: void insert(struct student *head)用一个 while 语句 while(p2->next!=NULL) 控制循环, p2 的指针指向下一个地址,即 p2=p2->next; 这是找到最后一个地址, 然后开辟动态
12、存储区, p1=(structstudent *)malloc(len); 输入要添加的学号,用学号为 0 来终止循环,如果不为0,就继续输入学生信息。【源程序】#include<stdio.h>#include<malloc.h>/分配 size 字节的存储区#include<string.h>/包含字符串处理函数的头文件, 可以直接调用现有的字符串处理的一系列函数专业资料整理WORD格式5专业资料整理WORD格式*理工学院课程设计报告#define len sizeof(struct student)/求字节运算符#include<stdlib.h
13、>/清屏功能FILE *fp;struct student/声明一个构造体类型struct studentint num;/学号为整型char name20;/*为字符串char genter10;/性别为字符串int age;/年龄为整型char xueli20;/学历为字符串int gongzi;/学号为整型char address30;/地址为字符串char phone11;/为字符串struct student *next;/next 是指针变量,指向构造体变量;void menu()printf("= 学生信息管理系统 =nn");printf("
14、1、录入学生信息 n");printf("2、浏览学生信息 n");printf("3、查询学生信息 n");printf("4、删除学生信息 n");printf("5、插入学生信息 n");printf("6、修改学生信息 n");printf("7、排序学生信息 n");printf("8、退出管理系统 n");printf("=n");struct student *creat()/ 录入学生信息专业资料整理WORD格
15、式6专业资料整理WORD格式*理工学院课程设计报告int n;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *) malloc(len);scanf("%dt%dt%st%st%st%st%st%s",&p1->num,&p1->age,p1->name,p1->sex,p 1->chushen,p1->dizhi,p1->phone,p1->email);head=NULL;while(p1->num!=0)n
16、=n+1;if(n=1) head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(len);scanf("%dt%dt%st%st%st%st%st%s",&p1->num,&p1->age,p1->name,p1->s ex,p1->chushen,p1->dizhi,p1->phone,p1->email);p2->next=NULL;return(head);void insert(struct student *head) /插入
17、学生信息int search_num;struct student *p,*q,*s;专业资料整理WORD格式7专业资料整理WORD格式*理工学院课程设计报告p=head;printf(" 在哪个学生前插入请输入学号: n");scanf("%d",&search_num);while(p!=NULL)&&(p->num!=search_num)q=p;p=p->next;s=(struct student *)malloc(len);q->next=s;system("cls");print
18、f(" 请输入学生信息 :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->chus hen,s->dizhi,s->phone,s->email);s->next=p;void printList(struct student *head)/浏览全部学生信息struct stud
19、ent *p;p=head;if(head=NULL)printf(" 没有学生信息 !n");elsedo专业资料整理WORD格式8专业资料整理WORD格式*理工学院课程设计报告fread(p,len,1,fp);printf("%dt%dt%st%st%st%st%st%sn",p->num,p->age,p->name,p->sex,p->chus hen,p->dizhi,p->phone,p->email);p=p->next;while(p!=NULL);void findList_num
20、(struct student *head,long search_num) /按学号查找struct student *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->chus hen,p->dizhi,p->phone,p->email);elseprintf(" 没有该学
21、生信息 !n");void findList_name(struct student *head,char *search_name) /按*查找struct student *p;专业资料整理WORD格式9专业资料整理WORD格式*理工学院课程设计报告int cmp1=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->n
22、ame,p->sex,p->chus hen,p->dizhi,p->phone,p->email);p=p->next;cmp1=1;if(cmp!=0&&cmp1=0)printf(" 没有该学生信息 !n");void xiugai(struct student *p1,long xiu_num)/修改学生信息struct student *p2;p2=p1;while(p2!=NULL)&&(p2->num!=xiu_num)p2=p2->next;if(p2!=NULL)scanf(&
23、quot;%dt%dt%st%st%st%st%st%s",&p2->num,&p2->age,p2->name,p2->s专业资料整理WORD格式10专业资料整理WORD格式*理工学院课程设计报告ex,p2->chushen,p2->dizhi,p2->phone,p2->email);elseprintf(" 没有该学生信息 !n");struct student *delList(struct student *head,long del_num) / 删除学生信息struct student
24、*p,*q;p=head;q=head;while(p &&(p->num != del_num)q=p;p=p->next;if(p=NULL)printf(" 无此学号 !n");elseif(p = head)head = p->next;free(p);elseq->next = p->next;free(p);专业资料整理WORD格式11专业资料整理WORD格式*理工学院课程设计报告return head;void paixu(struct student *head)/按学号排序struct student *p,*
25、f,*t;char ch100;int i;t=f=p=head;for(p=head;p->next!=NULL;p=p->next)for(t=head,f=t->next;t->next!=NULL;t=t->next,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,
26、f->name);strcpy(f->name,ch);专业资料整理WORD格式12专业资料整理WORD格式*理工学院课程设计报告strcpy(ch,t->sex);strcpy(t->sex,f->sex);strcpy(f->sex,ch);strcpy(ch,t->chushen);strcpy(t->chushen,f->chushen);strcpy(f->chushen,ch);strcpy(ch,t->dizhi);strcpy(t->dizhi,f->dizhi);strcpy(f->dizhi
27、,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);/ return head;void save(struct student *head) /保存为磁盘文件struct student *p;if(fp=fopen("keshe","w")=NULL)/翻开一个文件专业资料整理WORD
28、格式13专业资料整理WORD格式*理工学院课程设计报告printf("cannot open this filen");exit(0);p=head;while(p!=NULL)fprintf(fp,"%dn",p->num);fprintf(fp,"%dn",p->age);fprintf(fp,"%sn",p->name);fprintf(fp,"%sn",p->sex);fprintf(fp,"%sn",p->chushen);fprint
29、f(fp,"%sn",p->dizhi);fprintf(fp,"%sn",p->phone);fprintf(fp,"%sn",p->email);p=p->next;fclose(fp);struct student *read()/从磁盘读取文件struct student *head=NULL;struct student *p=NULL;struct student *t=NULL;int a;/fp=fopen("keshe","r");if(fp=fopen
30、("keshe","r")=NULL)/翻开一个文件printf("cannot open this filen");专业资料整理WORD格式14专业资料整理WORD格式*理工学院课程设计报告exit(0);while(1)t=(struct student *)malloc(len);a=fscanf(fp,"%dt%dt%st%st%st%st%st%s",&t->num,&t->age,t->name,t->se x,t->chushen,t->dizhi,
31、t->phone,t->email);if(a=0|a=-1)return head;t->next=NULL;if(p=NULL)p=t;head=t;elsep->next=t;p=p->next;p->next=NULL;fclose(fp);void main()/主函数int code=0;struct student *pt = NULL;专业资料整理WORD格式15专业资料整理WORD格式*理工学院课程设计报告for(code=1;code+)/控制循环menu();/调用菜单函数printf(" 请输入序号 :n");/提
32、示输入序号scanf("%d",&code);system("cls");/清屏下边也是这样的功能switch(code)/选择序号进展功能选择case 1:system("cls");printf("=输入学生信息=n");printf("-n");printf(" 学号 t 年龄 t * t 性别 t 出生 t 地址 t te-mailn");pt=creat();/调用输入函数save(pt);/将数据存储到磁盘中system("cls");
33、printf("=输入学生信息=n");printf("-n");printf("*成功输入学生信息 *!nn");printf(" 按回车键返回主菜单 n");getchar();getchar();/按回车键返回system("cls");break;case 2:专业资料整理WORD格式16专业资料整理WORD格式*理工学院课程设计报告system("cls");printf("=学生信息表=n");printf("-n");pr
34、intf(" 学号 t 年龄 t * t 性别 t 出生 t 地址 t te-mailn");printList(read();/调用输出函数是从磁盘中读出的printf("=n");printf("-n");printf("n 按回车键返回主菜单 n");getchar();getchar();system("cls");break;case 3:int search=0;system("cls");printf("=查询学生信息=n");printf(
35、"-n");while(search!=3)/进入查询功能函数printf("1 、按学号查询 n2、按*查询 n3、退出查询 n");scanf("%d",&search);/ 插入查找的方式switch(search)专业资料整理WORD格式17专业资料整理WORD格式*理工学院课程设计报告case 1:/选择学号查询long search_num;system("cls");printf(" 请输入学生学号 n");scanf("%d",&search_
36、num);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("n 按回车键返回查询菜单n");getchar();getchar();system(&quo
37、t;cls");break;case 2:/按*查找char search_name15;system("cls");printf(" 请输入学生* n");scanf("%s",search_name);/输入要查找的学生的*system("cls");printf("=查询结果 =n");专业资料整理WORD格式18专业资料整理WORD格式*理工学院课程设计报告printf("-n");printf(" 学号 t 年龄 t * t 性别 t 出生 t
38、地址 t te-mailn");findList_name(read(),search_name);/ 调 用 姓 名 查 找 函 数printf("=n");printf("-n");printf("n 按回车键返回查询菜单n");getchar();getchar();system("cls");system("cls");break;case 4:/删除学生信息long del_num;system("cls");printf("=删除学生信息=n&
39、quot;);printf("-n");printf(" 请输入要删除学生信息的学号:n");scanf("%d",&del_num);/输入要删除的学号system("cls");pt=delList(read(),del_num);/调用删除函数save(pt);printf("=删除结果专业资料整理WORD格式19专业资料整理WORD格式*理工学院课程设计报告=n");printf("-n");printf(" 学号为 %d 的学生信息成功删除 n&q
40、uot;,del_num);printf("n 按回车键返回主菜单 n");getchar();getchar();system("cls");break;case 5:/插入函数system("cls");printf("=插入学生信息=n");printf("-n");insert(pt);/调用输入函数save(pt);/保存到磁盘中system("cls");printf("=插入学生信息=n");printf("-n");pr
41、intf("*插入学生信息成功 *!nn");printf(" 按回车键返回主菜单 n");getchar();getchar();system("cls");break;case 6:/修改函数long search_num;专业资料整理WORD格式20专业资料整理WORD格式*理工学院课程设计报告system("cls");printf(" 请输入要修改的学生学号:n");scanf("%d",&search_num); /输入要修改的学生学号 system(&q
42、uot;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
43、,search_num);/调用修改函数save(pt);/保存printf("=n");printf("-n");printf("*修改学生信息成功 *!nn");printf("n 按回车键返回查询菜单n");getchar();getchar();system("cls");break;case 7:/排序函数system("cls");printf("按学号从小到大排序专业资料整理WORD格式21专业资料整理WORD格式*理工学院课程设计报告nn");printf("=学生信息表=n");printf("-n");printf(" 学号 t 年龄 t * t 性别 t 出生 t 地址 t te-mailn");pt=read();paixu(pt);/调用排序函数printList(pt);/调用显示函数save(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论