学生信息管理系统课程设计实验报告.pdf
《学生信息管理系统课程设计实验报告.pdf》由会员分享,可在线阅读,更多相关《学生信息管理系统课程设计实验报告.pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、*大学大学课课 程程 设设 计计 报报 告告课程名称高级语言程序设计设计题目学生信息管理系统专业计算机科学与技术班级学号姓名完成日期课课 程程 设设 计计 任任 务务 书书设计题目:学生信息管理系统设计设计内容与要求:内容:对学生信息进行管理,学生信息包括学号、姓名、性别、年龄、学历、学号、住址、电话等(学号不重复)。要求:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)。(3)输出学生信息、浏览学生信息功能。(4)查询和排序功能:(至少一种查询方式),如按学号查询、按学历查询等。(5)学生信息删除、修改功能(任选项)。指导教师:_年月日课课 程程 设设 计计 评评 语语成
2、绩:成绩:指导教师:_年月日洛 阳 理 工 学 院课 程 设 计 报 告【问题描述】【问题描述】学生信息管理软件设计。对学生信息进行管理,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。试设计一个学生信息管理软件。【基本要求】【基本要求】一、输入的形式和输入值的范围一、输入的形式和输入值的范围形式:用 scanf 输入学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。输入一个学生信息一个回车。用输入的学号 p1-num 来控制输入,当输入的学号为 0 时,用 break 跳出循环。即 if(p1-num=0)break。输入值的范围:学号、年龄为整
3、型 long num;int age;姓名为字符串型 15 个字节 char name15;性别为字符串型,10 个字节 char sex10;出生为字符串型,20 个字节 char chushen20;地址为字符串型,30 个字节 char dizhi30;邮箱为字符串型,输入 11 位数字 char email11。二、输出的形式二、输出的形式输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第二行是显示第二个学生的信息。三、程序所能达到的功能三、程序所能达到的功能对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。(1)系统以菜单方
4、式工作(2)学生信息录入功能。1洛 阳 理 工 学 院课 程 设 计 报 告(3)输出学生信息、浏览学生信息功能。(4)查询和排序功能:(至少一种查询方式),如按学号查询、按姓名查询等。(5)学生信息删除、修改功能(任选项)。(6)添加学生信息。【测试数据】【测试数据】输入:设输入四个学生信息,以最后一个学生的学号为 0 来结束输入,学号是整型。预期的输出结果:预期的输出结果请参见程序后的运行结果。【数据结构】【数据结构】排序记录的数据元素表采用一维数组存储结构,每个元素包含 8 个关键字段,其类型描述为:#include#include/分配 size 字节的存储区#include/包含字符
5、串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数#define len sizeof(struct student)/宏定义求字节运算符#include/清屏功能struct student/声明一个结构体类型 struct studentlong num;/定义学号为 long 型数据char name15;/定义姓名int age;/定义年龄char sex3;/定义性别char chushen10;/定义出生char dizhi20;/定义出生地址char phone11;/定义电话2洛 阳 理 工 学 院课 程 设 计 报 告char email20;/定义邮箱struct
6、 student*next;/next 是指针变量,指向结构体变量【算法思想】【算法思想】利用一维结构体存放所有学生的信息,输入后,在输出时要对学生按学号的高低排序,然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入学号可以找出该学生信息,然后选择修改学生信息,如果来了新学生,还可以添加学生信息。【总体设计】【总体设计】主菜单包括:输入函数、学号排序、浏览函数、删除函数、修改函数、添加函数。输入函数用键盘输入学生信息添加学生信息在原有的学生上添加学生信息图 1-1 学生管理总体设计显示主菜单删除学生信息修改学生信息输入一个学生学号,来删除该学生信息学生排序按学生学号高低排序输出学生信
7、息以表格的形式输出学生信息输入学号,修改的学生信息3洛 阳 理 工 学 院课 程 设 计 报 告【模块划分】【模块划分】一、主函数:一、主函数:main()main()显示系统工作菜单,显示该系统的所有功能。告诉使用者所有将会调用的被调函数,再运用选择函数 switch 即可根据使用者所输入的学号进入对应的功能程序。并且对菜单做了一个循环,进行完一个选择后,按回车键可进行清屏功能,把屏幕上除了主菜单以外都清空,然后可以继续选择那些可以使用的功能,这样可以方便使用者使用,并且每一步都很清晰。以 8 退出系统。二、输入函数:二、输入函数:struct student*creat()struct s
8、tudent*creat()在该程序的前面已经定义了一个结构体 struct student 用来储存学生的所有信息,(学号、年龄、姓名、性别、出生日期、地址、电话、邮箱)。定义 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
9、)void paixu(struct student*head)用一个 for 语句做循环,不是NULL 的话,指针指向下一个,按学生学号高低排序。整形直接交换,字符型用 strcpy 交换,类型相当于两个数据之间的交换。四、输出函数:四、输出函数:void printlist(struct student*head)void printlist(struct student*head)在主函数里边用 while 控制循环,输出学生信息,然后指针指向下一个。4洛 阳 理 工 学 院课 程 设 计 报 告五、五、查询函数:查询函数:void findList_num(struct student
10、*head)void findList_num(struct student*head)和和void findList_num(struct student*head)void findList_num(struct student*head)输入一个学号或姓名,做一个for 循环,即指针pt 指向第一个地址,再定义一个指针 p1,让它等于pt,他是紧跟着pt 后面的一个指针,让p1-next 不等于NULL,pt 指向下一个地址。这样就能修改最后一个学生信息了。如果要查询的学生的学号在学生里,就输出该学生信息,否则,就输出查询的学生信息不存在。六、删除函数:六、删除函数:int shanch
11、u(struct student*head)int shanchu(struct student*head)输入一个学号,先找到这个学生的信息。如果输入的学号在学生信息中,就进行以下循环:如果输入的是第一个学生的话,就head 等于第二个学生信息;如果输入的学生信息是最后一个,就让倒数第二个等于 NULL;否则的话,就让下一个学生信息覆盖前一个。如果输入的学号不在学生信息中,输出“此学生信息不存在”。七、七、修改函数:修改函数:structstruct studentstudent*delList(struct*delList(struct studentstudent*head,long*h
12、ead,longdel_num)del_num)输入要修改的学号,找到该学生并且输出该学生的信息。然后屏幕上会出现学生信息的所有项目,用 switch 进行选择修改的项目。选择后输入新的学生信息,用它来覆盖原来的学生信息。八、添加函数:八、添加函数:void insert(struct student*head)void insert(struct student*head)用一个 while 语句 while(p2-next!=NULL)控制循环,p2 的指针指向下一个地址,即 p2=p2-next;这是找到最后一个地址,然后开辟动态存储区,p1=(structstudent*)malloc
13、(len);输入要添加的学号,用学号为 0 来终止循环,如果不为0,就继续输入学生信息。【源程序】【源程序】#include#include/分配 size 字节的存储区#include/包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数5洛 阳 理 工 学 院课 程 设 计 报 告#define len sizeof(struct student)/求字节运算符#include/清屏功能FILE*fp;struct student/声明一个结构体类型 struct studentint num;/学号为整型char name20;/姓名为字符串char genter10;/
14、性别为字符串int age;/年龄为整型char xueli20;/学历为字符串int gongzi;/学号为整型char address30;/地址为字符串char phone11;/电话为字符串struct student*next;/next 是指针变量,指向结构体变量;void menu()printf(=学生信息管理系统=nn);printf(1、录入学生信息n);printf(2、浏览学生信息n);printf(3、查询学生信息n);printf(4、删除学生信息n);printf(5、插入学生信息n);printf(6、修改学生信息n);printf(7、排序学生信息n);pri
15、ntf(8、退出管理系统n);printf(=n);struct student*creat()/录入学生信息6洛 阳 理 工 学 院课 程 设 计 报 告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,p1-chushen,p1-dizhi,p1-phone,p1-email);head=NULL;while(p1-num!=0)n=n+1;sca
16、nf(%dt%dt%st%st%st%st%st%s,&p1-num,&p1-age,p1-name,p1-sif(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struct student*)malloc(len);ex,p1-chushen,p1-dizhi,p1-phone,p1-email);p2-next=NULL;return(head);void insert(struct student*head)/插入学生信息int search_num;struct student*p,*q,*s;7洛 阳 理 工 学 院课 程 设 计 报 告p=head;p
17、rintf(在哪个学生前插入 请输入学号: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 地址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-email);vo
18、id printList(struct student*head)/浏览全部学生信息struct student*p;p=head;if(head=NULL)printf(没有学生信息!n);elsedo8s-next=p;洛 阳 理 工 学 院课 程 设 计 报 告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;while(p!=NULL);void findList_num(struct student
19、*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-chushen,p-dizhi,p-phone,p-email);elseprintf(没有该学生信息!n);void findList_name(struct student*head,char*search_name)/按姓名查找struct student*p;9
20、洛 阳 理 工 学 院课 程 设 计 报 告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-sex,p-chushen,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)/修改
21、学生信息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-s10洛 阳 理 工 学 院课 程 设 计 报 告ex,p2-chushen,p2-dizhi,p2-phone,p2-email);elseprintf(没有该学生信息!n);struct student*delList(struct student*head,long del_num)/删除学生信息struct
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 课程设计 实验 报告
限制150内