学生信息管理系统课程设计报告实验报告.docx_第1页
学生信息管理系统课程设计报告实验报告.docx_第2页
学生信息管理系统课程设计报告实验报告.docx_第3页
学生信息管理系统课程设计报告实验报告.docx_第4页
学生信息管理系统课程设计报告实验报告.docx_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.*大学课程设计报告课程名称高级语言程序设计设计题目学生信息管理系统专业计算机科学与技术班级学号姓名完成日期专业资料.课程设计任务书设计题目:学生信息管理系统设计设计容与要求:容:对学生信息进行管理,学生信息包括学号、姓名、性别、年龄、学历、学号、住址、等(学号不重复)。要求:(1) 系统以菜单式工作(2) 学生信息录入功能 (学生信息用文件保存 ) 。(3) 输出学生信息、浏览学生信息功能。(4) 查询和排序功能: (至少一种查询式 ) ,如按学号查询、按学历查询等。(5) 学生信息删除、修改功能 (任选项 )。指导教师: _年月日课程设计评语成绩:专业资料.指导教师: _年月日专业资料.【

2、问题描述】学生信息管理软件设计。 对学生信息进行管理, 学生信息包括: 学号,姓名,年龄,性别,出生年月,地址,E-mail 等。试设计一个学生信息管理软件。【基本要求】一、输入的形式和输入值的围形式:用 scanf 输入学生的学号,姓名,年龄,性别,出生年月,地址,E-mail。输入一个学生信息一个回车。 用输入的学号p1-num 来控制输入,当输入的学号为 0 时,用 break 跳出循环。即 if(p1-num=0)break。输入值的围:学号、年龄为整型long num; int age;姓名为字符串型15 个字节 char name15;性别为字符串型, 10 个字节 char se

3、x10;出生为字符串型, 20 个字节 char chushen20;地址为字符串型, 30 个字节 char dizhi30;为字符串型,输入11位数字 char email11。二、输出的形式输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第二行是显示第二个学生的信息。三、程序所能达到的功能对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月,地址,E-mail。(1)系统以菜单式工作(2) 学生信息录入功能。专业资料.(3) 输出学生信息、浏览学生信息功能。(4) 查询和排序功能: ( 至少一种查询式 ),如按学号查询、按姓名查询等。(5) 学生信息删除、修

4、改功能 ( 任选项 )。(6) 添加学生信息。【测试数据】输入:设输入四个学生信息,以最后一个学生的学号为0 来结束输入,学号是整型。预期的输出结果:预期的输出结果请参见程序后的运行结果。【数据结构】排序记录的数据元素表采用一维数组存储结构, 每个元素包含 8 个关键字段,其类型描述为:#include#include/ 分配 size 字节的存储区#include/ 包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数#define len sizeof(struct student)/ 宏定义求字节运算符#include/ 清屏功能struct student/ 声明一个结

5、构体类型struct studentlong num;/ 定义学号为 long 型数据char name15;/ 定义姓名int age;/ 定义年龄char sex3;/ 定义性别char chushen10;/ 定义出生char dizhi20;/ 定义出生地址char phone11;/ 定义专业资料.char email20;/ 定义struct student *next;/next 是指针变量,指向结构体变量【算法思想】利用一维结构体存放所有学生的信息,输入后,在输出时要对学生按学号的高低排序,然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入学号可以找出该学生信息,然后

6、选择修改学生信息,如果来了新学生,还可以添加学生信息。【总体设计】主菜单包括:输入函数、学号排序、浏览函数、删除函数、修改函数、添加函数。输入函数用键盘输入学生信息学生排序按学生学号高低排序输出学生信息以表格的形式输出学生信息显示主菜单删除学生信息输入一个学生学号,来删除该学生信息修改学生信息输入学号,修改的学生信息添加学生信息在原有的学生上添加学生信息图 1-1学生管理总体设计专业资料.【模块划分】一、主函数: main()显示系统工作菜单,显示该系统的所有功能。告诉使用者所有将会调用的被调函数,再运用选择函数 switch 即可根据使用者所输入的学号进入对应的功能程序。并且对菜单做了一个循

7、环,进行完一个选择后,按回车键可进行清屏功能,把屏幕上除了主菜单以外都清空,然后可以继续选择那些可以使用的功能,这样可以便使用者使用,并且每一步都很清晰。以 8 退出系统。二、输入函数: struct student *creat()在该程序的前面已经定义了一个结构体struct student 用来储存学生的所有信息,(学号、年龄、姓名、性别、出生日期、地址、)。定义 p1 和 p2 ,struct student *p1,*p2;p1 ,p2 是指向 struct student 类型数据的指针变量。定义一个 n=0 ,n 是输入的个数,主要作用是:如果输入一个学生信息,首地址指向 p1,

8、head=p1;否则 p2 的下一个地址指向 p1, p2 指向 p1. p2-next=p1 ; p2=p1 ;学号控制循环。三、排序函数: void paixu(struct student *head)用一个 for 语句做循环,不是NULL 的话,指针指向下一个,按学生学号高低排序。整形直接交换, 字符型用 strcpy 交换,类型相当于两个数据之间的交换。四、输出函数: void printlist(struct student *head)在主函数里边用while 控制循环,输出学生信息,然后指针指向下一个。专业资料.五、 查询函数: void findList_num(struc

9、t student *head)和void findList_num(struct student *head)输入一个学号或姓名,做一个for 循环,即指针 pt 指向第一个地址,再定义一个指针 p1,让它等于 pt ,他是紧跟着 pt 后面的一个指针,让 p1-next 不等于NULL,pt 指向下一个地址。 这样就能修改最后一个学生信息了。 如果要查询的学生的学号在学生里,就输出该学生信息,否则,就输出查询的学生信息不存在。六、删除函数: int shanchu(struct student *head)输入一个学号,先找到这个学生的信息。如果输入的学号在学生信息中,就进行以下循环: 如

10、果输入的是第一个学生的话,就 head 等于第二个学生信息; 如果输入的学生信息是最后一个,就让倒数第二个等于NULL ;否则的话,就让下一个学生信息覆盖前一个。如果输入的学号不在学生信息中,输出“此学生信息不存在”。七、修改函数: struct student *delList(struct student *head,long del_num)输入要修改的学号,找到该学生并且输出该学生的信息。然后屏幕上会出现学生信息的所有项目, 用 switch 进行选择修改的项目。 选择后输入新的学生信息,用它来覆盖原来的学生信息。八、添加函数: void insert(struct student *

11、head)用一个 while 语句 while(p2-next!=NULL)控制循环, p2 的指针指向下一个地址,即 p2=p2-next;这是找到最后一个地址, 然后开辟动态存储区, p1=(structstudent *)malloc(len); 输入要添加的学号,用学号为0 来终止循环,如果不为0,就继续输入学生信息。【源程序】#include#include/ 分配 size 字节的存储区#include/ 包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数专业资料.#define len sizeof(struct student)/ 求字节运算符#include

12、/ 清屏功能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(1、录入学生信息 n);

13、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()/ 录入学生信息int n;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *) malloc(len);scanf(%dt%dt%st%st%st%st%s

14、t%s,&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;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-nam e,p1-sex,p1-chushen,p1-dizhi,p1-phone,p1-email);p2-next=NULL;return(h

15、ead);void insert(struct student *head) /插入学生信息专业资料.int search_num;struct student *p,*q,*s;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);printf( 请输入学生信息 :n);printf( 学号 t 年龄 t 姓名 t 性别 t 出生 t 地址

16、 tte-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-email);s-next=p;void printList(struct student *head)/ 浏览全部学生信息struct student *p;p=head;if(head=NULL)printf( 没有学生信息 !n);else专业资料.dofread(p,len,1,fp);printf(%dt%dt%st%st%st%st%st%sn,p-num,p-age,p-name,p-s

17、e x,p-chushen,p-dizhi,p-phone,p-email);p=p-next;while(p!=NULL);void findList_num(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-se x,p-chushen,p-dizhi,p-phone,p-email);els

18、eprintf( 没有该学生信息 !n);void findList_name(struct student *head,char *search_name)/ 按姓名查找专业资料.struct student *p;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-name,p-se x,p-chushen,p-dizhi,p-phone,p-email);p=p-next;

19、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(%dt%dt%st%st%st%st%st%s,&p2-num,&p2-age,p2-name,p2-sex,p2-chushen,p2-dizhi,p2-phone,p2-email);elseprintf( 没有该学生信

20、息 !n);struct student *delList(struct student *head,long del_num)/删除学生信息struct student *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);else专业资料.q-next = p-next;free(p);return head;void paixu(struct student *head)/ 按学号排序struc

21、t student *p,*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-numf-num0)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

22、);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,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(s

23、truct student *head)/ 保存为磁盘文件struct student *p;专业资料.if(fp=fopen(keshe,w)=NULL)/ 打开一个文件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);fprintf(fp,%sn,p-dizhi);fprintf(fp,%sn,

24、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(keshe,r)=NULL)/ 打开一个文件专业资料.printf(cannot open this filen);exit(0);while(1)t=(struct student *)malloc(len);

25、a=fscanf(fp,%dt%dt%st%st%st%st%st%s,&t-num,&t-age,t-na me,t-sex,t-chushen,t-dizhi,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;for(code=1;code+)/ 控制循环menu();/ 调用菜单函数pri

26、ntf( 请输入序号 :n);/ 提示输入序号scanf(%d,&code);system(cls);/ 清屏(下边也是这样的功能)switch(code)/ 选择序号进行功能选择case 1:system(cls);printf(=输 入 学生信息=n);printf(-n);printf( 学号 t 年龄 t 姓名 t 性别 t 出生 t 地址 tte-mailn);pt=creat();/ 调用输入函数save(pt);/ 将数据存储到磁盘中system(cls);printf(=输入学生信息=n);printf(-n);printf(*成功输入学生信息 *!nn);printf( 按回

27、车键返回主菜单 n);getchar();getchar();/ 按回车键返回专业资料.system(cls);break;case 2:system(cls);printf(=学生信息表=n);printf(-n);printf( 学号 t 年龄 t 姓名 t 性别 t 出生 t 地址 tte-mailn);printList(read();/ 调用输出函数(是从磁盘中读出的)printf(=n);printf(-n);printf(n 按回车键返回主菜单 n);getchar();getchar();system(cls);break;case 3:int search=0;system(

28、cls);printf(=查询学生信息=n);printf(-n);while(search!=3)/ 进入查询功能函数专业资料.printf(1 、按学号查询 n2 、按姓名查询 n3 、退出查询 n);scanf(%d,&search);/ 插入查找的式switch(search)case 1:/ 选择学号查询long search_num;system(cls);printf( 请输入学生学号 n);scanf(%d,&search_num);system(cls);printf(=查询结果=n);printf(-n);printf( 学号 t 年龄 t 姓名 t 性别 t 出生 t 地

29、址 tte-mailn);findList_num(read(),search_num);/ 调用查找函数, 将数据从磁盘中读出printf(=n);printf(-n);printf(n 按回车键返回查询菜单 n);getchar();getchar();system(cls);break;case 2:/ 按姓名查找专业资料.char search_name15;system(cls);printf( 请输入学生姓名 n);scanf(%s,search_name);/ 输入要查找的学生的姓名system(cls);printf(=查询结果=n);printf(-n);printf( 学号

30、 t 年龄 t 姓名 t 性别 t 出生 t 地址 tte-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);printf(-n);printf( 请输入要删除学生信息的学号:n);scanf(%d,&del_num);

31、/ 输入要删除的学号system(cls);pt=delList(read(),del_num);/ 调用删除函数save(pt);printf(=删除结果=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(cls);printf(=插

32、入学生信息=n);printf(-n);printf(*插入学生信息成功 *!nn);专业资料.printf( 按回车键返回主菜单 n);getchar();getchar();system(cls);break;case 6:/ 修改函数long search_num;system(cls);printf( 请输入要修改的学生学号:n);scanf(%d,&search_num);/ 输入要修改的学生学号system(cls);printf(=修改学生信息=n);printf(-n);printf( 学号 t 年龄 t 姓名 t 性别 t 出生 t 地址 tte-mailn);findLis

33、t_num(read(),search_num);/ 调用查找函数printf(n);printf( 请输入修改信息 :n);printf( 学号 t 年龄 t 姓名 t 性别 t 出生 t 地址 tte-mailn);pt=read();xiugai(pt,search_num);/ 调用修改函数save(pt);/保存printf(=n);printf(-n);printf(*修改学生信息成功 *!nn);printf(n 按回车键返回查询菜单n);getchar();专业资料.getchar();system(cls);break;case 7:/ 排序函数system(cls);pri

34、ntf(按学号从小到大排序nn);printf(=学生信息表=n);printf(-n);printf( 学号 t 年龄 t 姓名 t 性别 t 出生 t 地址 tte-mailn);pt=read();paixu(pt);/ 调用排序函数printList(pt);/ 调用显示函数save(pt);printf(=n);printf(-n);printf(n 按回车键返回主菜单 n);getchar();getchar();system(cls);break;case 8:read();break;/ 返回函数专业资料.【测试情况】1.打开程序,进入主菜单, “学生信息管理系统” ,包括七项功能,(1)输入学生信息,以输入学号位 0 结束;( 2)浏览学生信息;( 3)按学生好号或姓名查询学生信息;(4)按学号删除学生信息;( 5)按学号找出要修改的学生信息,再修改该学生信息;(6)添加学生信息;(8)退出系统。图 1-2 菜单2.选择( 1),输入四个学生信息,输入的学号为0 结束输入。如图 1-3。专业资料.图 1-3 输入3.选择功能( 2)浏览学生信息,如1-4。1-4 浏览学生信息4.选择功能(3),进行查询学生信息, 如下图,查找的是学号为12 的学生信息。同时要查找的学生信息不在学生表中,就会输出“学生信息不存在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论