学生信息管理系统程序设计
学生信息管理系统设计

管理信息系统(实践)课程设计题目:学生信息系统开发专业:建筑经济管理(独立本科段)班级:1118Z121班学号:101813111姓名:吉宝花可行性分析对现有系统的分析(一).技术可行性要开发该系统必须具备一定的网络知识和数据库知识,最好能熟练掌握一门面向对象语言。
到目前为止,我们已经学习了三门程序设计语言,其中java就是一种很好的面向对象开发语言,java 中的多线程和多媒体技术完全可以实现此功能。
从理论上来说,技术上没问题。
(二).经济可行性随着社会的发展及经济的繁荣,知识经济已成趋势并在某些方面尤其突出,各大高校都随之扩招。
学生也日趋增多,这个给学籍管理带来了沉重的压力,使用人力来管理已经不可能了,一个好的有规模的学籍管理系统已经迫在眉睫了,所以在经济上是十分可行的。
(三).社会可行性学生管理系统是学校管理非常实用的一款软件,对老师管理学生、学生选课、查询成绩都非常方便,简单可视化操作,易于管理。
该项目为独立开发。
在法律方面不会存在侵犯专利权、侵犯版权等问题,完全按照合同的规定履行。
综合评价和论证结论学生管理系统是一款非常简洁实用的软件,通过分析认为值得去开发。
需求分析(一)目的与任务:学校学生管理信息系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统(Management Information System)。
它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。
能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。
通过该系统,用户可以查看学生的基本资料、学习成绩等各方面的资料,能够方便的了解学生总体情况。
该管理系统为用户提供了一些简单的数据查询、输出各种信息等。
学生用户通过输入学生基本信息、课程基本信息等,由系统自行生成相应的数据以供学生查询,另外人事处的管理用户还可以对这些基本信息进行更新和删除, 学校学生管理信息系统力求给用户方便快捷的途径去管理这些繁琐的数据。
学生信息管理系统c语言程序设计

学生信息管理系统c语言程序设计
一、主要思想。
(1)使用结构体数组来存储学生信息;
(2)创建查询、添加、修改、删除等操作函数来实现学生信息的管理;
(3)设置菜单,程序通过switch-case语句来识别用户输入,实现
不同的操作。
二、具体实现。
(1)定义一个学生信息的结构体,存储学号、姓名、年龄、性别等
信息;
(2)为学生信息管理系统添加菜单,当用户输入要求时,通过
switch语句来调用响应的函数;
(3)定义查询函数:用户可以根据学号、姓名或性别查询学生信息;
(4)定义添加函数:根据用户输入添加学生信息,需要排重处理;
(5)定义修改函数:根据学号查询到学生的信息后,用户可以修改
相应的内容;
(6)定义删除函数:根据学号查询学生信息后,用户可以删除学生
信息;
(7)定义退出系统函数:用户输入0,就可以退出学生信息管理系统。
高级语言程序设计大作业实验报告(学生信息管理系统)

高级语言程序设计实验报告目录高级语言程序设计大作业实验报告 (3)一. 作业题目 (3)二. 开发软件 (3)用QT creator和小型数据库sqlite (3)三. 课题要求 (3)四. 主要流程 (3)1.整体流程 (3)2.遇到的困难 (4)1)用数据库的时候好多数据库的选择,但是下不好,最后选择了一个轻量级的sqlite (4)2)数据库与QT连接过程中一直显示找不到文件,好像是因为库最开始一直没建好。
(4)3)在代码实现过程中,两个窗口的信号的设置以及触发也卡了好久 (4)4)在代码实现排序过程中以及显示,还要用sql语言以实现QT中输入能改变库45)UI界面拖拽的美化以及资源上传 (4)3.代码的实现 (4)1)使用下述代码实现QT与sqlite的连接 (4)2)sql语言,使QT后来界面的操作与库联系在一起 (5)3)最终实现下面界面及功能 (5) (5) (6)五. 收获 (6)1)了解到QT大概的使用 (6)2)通过构建类和析构函数实现查询功能 (6)3)通过信号和槽来实现不同窗口的转化和唤醒 (6)4)QT与数据库的连接,以及大致的关系 (6)高级语言程序设计大作业实验报告一. 作业题目设计一个学生管理系统,可以用管理员身份和学生身份分别登录和查看信息二. 开发软件用QT creator和小型数据库sqlite三. 课题要求1)面向对象。
2)分对话框设计3)模型部分4)验证四. 主要流程1.整体流程1)在初始阶段,有一个初步关于学生管理系统的构想,分别以管理员身份构建和学生身份进入两种方式打开此系统。
2)此功能需要至少两个窗口来实现,一个是登陆界面,一个是登陆后查看界面,见俩QT项目设计师类,用MainWindow来实现3)登陆界面设为父类,其中一个Button设置一个信号,使其可以触发,打开查看窗口。
4)查看窗口需要有两种模式,一种是管理员模式,一种是学生模式,学生为只读模式,且只可以查看自己的信息。
学生信息管理系统java课程设计(含源代码)

JAVA 程序设计 课程设计陈述宇文皓月课 题: 学生信息管理系统 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间:目 录1、需要实现的功能32、设计目的3 1、功能模块划分32、数据库结构描述43、系统详细设计文档64、各个模块的实现方法描述95、测试数据及期望结果11一、系统描述1、需求实现的功能1.1、录入学生基本信息的功能学生基本信息主要包含:学号、姓名、年龄、出生地、专业、班级总学分,在拔出时,如果数据库已经存在该学号,则不克不及再拔出该学号。
1.2、修改学生基本信息的功能在管理员模式下,只要在表格中选中某个学生,就可以对该学生信息进行修改。
评阅意见:评定成绩:指导老师签名:年 月 日1.3、查询学生基本信息的功能可使用“姓名”对已存有的学生资料进行查询。
1.4、删除学生基本信息的功能在管理员模式下,只要选择表格中的某个学生,就可以删除该学生。
1.5、用户登陆用分歧的登录权限可以进入分歧的后台界面,从而实现权限操纵。
1.6、用户登陆信息设置可以修改用户登陆密码2、设计目的学生信息管理系统是一个教育单位不成缺少的部分。
一个功能齐全、简单易用的信息管理系统不单能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。
所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将发生大量的文件和数据,这对于查找、更新和维护都带来了很多困难。
随着科学技术的不竭提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理无法比较的优点。
例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
基于微信小程序的学生信息管理系统的设计与研发

基于微信小程序的学生信息管理系统的设计与研发学生信息管理系统是一个重要的系统,它能够帮助学校及教育机构方便地管理学生的信息,管理学生成绩,管理课程安排等,因此,该系统对学校来说至关重要。
随着移动互联网时代的到来,微信已成为普遍使用的社交工具,微信小程序作为其中的一个重要组成部分,已成为学生信息管理系统建设的新选择。
本文基于微信小程序,提出了一种学生信息管理系统的设计方案,主要包括前端UI设计以及后台数据库的构建,为学生信息管理系统在微信小程序平台上的研发提供了一定思路和技术支持。
具体设计如下:1. 前端UI设计:基于微信小程序的学生信息管理系统前端UI设计需要简洁明了,并且美观易用,从而能够方便学生及其他相关人员对系统的操作。
在系统的设计中,我们应该尽量避免繁琐的操作流程,提供简单、明了的界面,让用户直接能够找到自己所需要的功能。
此外,我们还需要根据不同用户的需求,提供不同的UI界面,例如针对学生提供学籍信息、成绩查询、课程安排等信息,针对老师提供学生信息管理、成绩录入、课程管理等功能。
2. 后台数据库的构建:学生信息管理系统的后台数据库是支撑整个系统运行的核心,因此,我们需要建立一个完善、稳定的数据库系统。
在构建数据库系统时,要注意分类存储,例如,分别存储学生信息、成绩信息、老师信息、课程信息等,以便快速高效地完成系统的查询和管理。
4. 系统安全设计:学生信息管理系统对于学校来说是至关重要的,如果系统设计不合理,就会存在一定的安全隐患。
因此,学生信息管理系统应该具备完善的安全措施和维护机制,防止数据泄露和系统攻击。
我建议,在系统设计中加入信息加密与解密机制,加强对系统中出现的异常行为进行监控,并配备完善的系统后台保障。
C++语言程序设计学生管理系统

海南大学信息学院C++语言程序设计课程设计实验报告题目:学生信息管理系统专业:计算机科学与技术 ____________ 学号:************** _____ 姓名:*** ___________完成日期:2011年6月10日一.功能1.学生学号登陆;2.学生个人信息查询;3.老师密码登陆;4.查看全部学生信息;5.查找学生信息;6.添加学生信息;7.删除学生信息;8.返回;9.退出;二.测试截图1.登陆界面;2.老师登陆;3.密码登陆:123;4.添加学生信息5.查看全部学生信息;6.学生学号登陆;7.查看个人信息;三、心得体会在编写过程中发现写代码是一个需要细心和耐心的过程,这也是我第一次系统的写一个程序,过程中参考过一些资料,发现课本上的东西不够用,写的过程也是一个学习的过程,学到很多课本上没有的东西。
而C++课本之外的东西还有很多很多,课本只是一个入门引导,然你认识到c++编程的魅力。
想要真正地掌握这门语言,还要学好多东西。
当你熟悉它了以后,你会发现C++在你手里就像一支画笔,每一个写出的程序都是你绘制出的一件艺术品。
四、源代码# include <stdio.h># include <string># include <stdlib.h>struct list{char number[20] ; /*学生学号*/char name[40] ; /*学生姓名*/char college[40] ; /*学院*/char sex[40] ; /*性别*/double age ; /*年龄*/};struct list b[40] ;int w=0;void studententer();void techerenter();void search_allinformation(struct list b[]) ; /*查看全部学生信息*/void check_information (struct list b[]); /*查找学生信息*/void add_information (struct list b[]); /*添加学生信息*/void delete_information (struct list b[]); /*删除学生信息*/int main (){int choice;int i = 0 ;FILE *fp ;printf(" *************************************\n");printf(" ******欢迎进入学生信息管理系统*******\n");printf(" *************************************\n");fp = fopen ("h:\\student.txt" , "r") ;if(fp == NULL){printf("Can not open the file !\n") ;exit (0) ;}while (! feof(fp)){fscanf(fp,"%s%s%s%s%lf" , /*调用函数将文件中的数据读入结构变量中*/b[i].number,b[i].name,b[i].college,b[i].sex,&b[i].age) ;i++ ;}w=i-1;fclose (fp) ;do {printf("##################################################################### ###\n");printf("# 登陆对象:#\n");printf("# 1:学生#\n") ;printf("# 2:老师#\n") ;printf("# 0:退出系统#\n") ;printf("##################################################################### ###\n");printf("请选择操作:");scanf("%d" , &choice);switch (choice){case 1 :studententer();break ;case 2 :techerenter();break ;case 0 :break ;}}while (choice != 0);printf("谢谢使用!\n");return 0;}void studententer(){int i,flag=0;char s[20];printf("输入学号:\n") ; /*提示输入学生学号*/scanf("%s" , s);for(i=0;i<w;i++)if(strcmp(s, b[i].number)==0){int choice1;do {printf("########################################################################\ n") ;printf("# 功能选项: #\n") ;printf("# 1:查看学生信息#\n") ;printf("# 0:返回#\n") ;printf("########################################################################" );printf("请选择操作:");scanf("%d" , &choice1);switch (choice1){case 1 :printf("该学生的相关信息: 学号姓名学院性别年龄\n");printf(" %s %s %s %s %.2f\n",b[i].number, b[i].name, b[i].college, b[i].sex,b[i].age);break ;case 0 :break ;}}while (choice1 != 0);printf("谢谢使用!\n");flag= 1 ;break;}if (flag == 0){printf("学号输入错误或不存在!\n");printf("是否要继续查找? 1:是; 2:否\n") ;getchar();switch(getchar()){case '1':studententer() ; /*调用函数本身继续查找*/case '2' :break ;}}}void techerenter(){char a[20]="123";char s[20];printf("输入密码:\n") ;scanf("%s" , s);if(strcmp(s, a)==0){int choice1;do {printf("########################################################################\ n") ;printf("# 功能选项: #\n") ;printf("# 1:查看全部学生信息#\n") ;printf("# 2:查找学生信息#\n") ;printf("# 3:添加学生信息#\n") ;printf("# 4:删除学生信息#\n") ;printf("# 0:返回#\n") ;printf("########################################################################\ n");printf("请选择操作:");scanf("%d" , &choice1);switch (choice1){case 1 :search_allinformation (b);break ;case 2 :check_information( b );break ;case 3 :add_information (b );break ;case 4 :delete_information( b);break ;case 0 :break ;}}while (choice1 != 0);printf("谢谢使用!\n");}if (strcmp(s,a)!=0){printf("密码输入错误!\n");printf("是否要继续输入? 1:是; 2:否\n") ;getchar();switch(getchar()){case '1':techerenter() ;case '2' :break ;}}}/*查看全部学生信息*/void search_allinformation (struct list b[]){int i;printf(" ####################################\n");printf(" # 查看全部学生信息! #\n");printf(" ####################################\n");printf("学生的相关信息: 学号姓名学院性别年龄\n");for(i=0;i<w;i++){printf(" %s %s %s %s %.2f\n", /*将数据输出到屏幕中*/b[i].number, b[i].name, b[i].college, b[i].sex, b[i].age);}printf("%d " , w);}/*查找学生信息*/void check_information(struct list b[]){int i, flag=0;char s[20];printf("输入编号:\n") ; /*提示输入学生学号*/scanf("%s" , s);printf(" #####################################\n");printf(" # 查找学生信息! #\n");printf(" #####################################\n");for(i=0;i<w;i++)if (strcmp(s, b[i].number)==0){printf("该学生的相关信息: 学号姓名学院性别年龄\n");printf(" %s %s %s %s %.2f\n",b[i].number, b[i].name, b[i].college, b[i].sex, b[i].age);flag = 1;break;}if (flag == 0){printf("该学生编号不存在!\n");printf("是否要继续查找? 1:是; 2:否\n") ;getchar();switch(getchar()){case '1':check_information( b ) ;case '2' :break ;}}}/*添加学生信息*/void add_information(struct list b[] ){int i, count=0, choice3;struct list p ;FILE *fp2 ;printf(" #####################################\n");printf(" # 添加学生信息! #\n");printf(" #####################################\n");printf("请输入该学生的相关信息:\n") ;printf("学号姓名学院性别年龄\n");scanf(" %s %s %s %s %lf",p.number , ,p.college,p.sex,&p.age);printf(" 添加成功!\n");printf(" 是否显示添加后的信息? 1:是; 2:否\n");printf(" 请选择:");scanf("%d" , &choice3);switch (choice3){case 1 :{for(i=0;i<w;i++)if(strcmp(p.number,b[i].number)>0)count ++ ;for(i=w;i>count;i--)b[i] = b[i-1] ;b[i] = p ;w++; /*每添加一名学生,学生数目都会增加一个*/fp2 = fopen ("h:\\student.txt" , "w") ;if(fp2 == NULL){printf("Can not open the file !\n");exit (0) ;}for(i=0;i<w;i++)fprintf(fp2," %s %s %s %s %.2f\n" ,b[i].number, b[i].name, b[i].college, b[i].sex, b[i].age);fclose (fp2) ;for(i=0;i<w;i++)printf(" %s %s %s %s %.2f\n" ,b[i].number, b[i].name, b[i].college, b[i].sex, b[i].age);}case 2 :break ;}}/*删除学生信息*/void delete_information (struct list b[] ){int i, flag= 0,choice4;char s[20] ;printf(" #####################################\n");printf(" # 删除学生信息#\n");printf(" #####################################\n");printf("请输入学生编号:");scanf("%s", s);for(i=0;i<w;i++)if(strcmp(s,b[i].number)==0){printf(" 删除成功!\n");printf(" 是否显示删除后的信息? 1:是; 2:否\n");printf(" 请选择:");scanf("%d" , &choice4);switch (choice4){case 1 :{printf("删除后的图书信息: 学号姓名学院性别年龄\n");for(i=0;i<w;i++){if(strcmp(s,b[i].number)!=0)printf(" %s %s %s %s %.2f\n",b[i].number, b[i].name, b[i].college, b[i].sex, b[i].age);}case 2 :break ;}}flag = 1 ;break ;}if(flag == 0)printf("该学生编号不存在!\n");}。
学生信息管理系统课程设计实验报告

WORD格式*********大学课程设计报告课程名称高级语言程序设计设计题目学生信息管理系统专业计算机科学与技术班级学号姓名完成日期课程设计任务书设计题目:学生信息管理系统设计设计内容与要求:内容:对学生信息进行管理,学生信息包括学号、姓名、性别、年龄、学历、学号、住址、电话等(学号不重复)。
要求:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)。
(3)输出学生信息、浏览学生信息功能。
(4)查询和排序功能:(至少一种查询方式),如按学号查询、按学历查询等。
(5)学生信息删除、修改功能(任选项)。
指导教师:_______________年月日课程设计评语成绩:指导教师:_______________年月日【问题描述】学生信息管理软件设计。
对学生信息进行管理,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一个学生信息管理软件。
【基本要求】一、输入的形式和输入值的范围形式:用scanf输入学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。
输入一个学生信息一个回车。
用输入的学号p1->num来控制输入,当输入的学号为0时,用break跳出循环。
即if(p1->num==0)break。
输入值的范围:学号、年龄为整型longnum;intage;姓名为字符串型15个字节charname[15];性别为字符串型,10个字节charsex[10];出生为字符串型,20个字节charchushen[20];地址为字符串型,30个字节chardizhi[30];邮箱为字符串型,输入11位数字charemail[11]。
二、输出的形式输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第二行是显示第二个学生的信息。
三、程序所能达到的功能对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。
软件工程课程设计-学生信息管理系统

数据库设计
数据表设计
01
根据系统需求,设计合理的数据表结构,包括学生信息表、课
程信息表、成绩信息表等。
数据关系设计
02
定义数据表之间的关系,如学生信息表和成绩信计
03
采用加密技术对敏感数据进行加密存储和传输,确保数据的安
全性。
界面设计
界面风格设计
版本控制
Git
关键代码实现
学生信息管理
实现学生信息的增删改查功能 ,包括基本信息、成绩、奖惩 情况等。
课程信息管理
实现课程信息的增删改查功能 ,包括课程名称、学分、任课 教师等。
用户登录验证
通过用户名和密码进行身份验 证,采用MD5加密密码确保安 全性。
班级信息管理
实现班级信息的增删改查功能 ,包括班级名称、班主任、学 生列表等。
THANKS
感谢观看
等。
课程管理
系统应支持课程的添加、修改、查询和删除 ,包括课程名称、课程描述、授课老师等。
用户管理
系统应提供用户注册、登录、权限分配等功 能,确保不同用户角色的操作权限。
非功能性需求
系统性能
系统应保证稳定运行,处理速 度快,响应时间合理。
数据安全
系统应采取必要的数据加密和 备份措施,确保学生信息的安 全性和完整性。
3
学生信息管理系统通常采用B/S或C/S架构,具有 用户界面友好、操作简便、数据安全性高等特点 。
设计目标与要求
实现学生信息的全面管 理,包括基本信息、成 绩信息、课程信息、奖
惩信息等。
01
保证数据的安全性和完 整性,采用合理的权限 控制和数据备份机制。
03
采用先进的软件开发技 术和工具,确保系统的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生信息管理系统程序设计1、软件开发目的该软件主要是实现对学生基本信息进行系统化的管理,首先可以对学生基本信息进行录入和存取,其次可以浏览学生的相关信息,然后可以删除和插入学生的相关信息,还有就是可按学号或按学生姓名查询此学生的相关信息。
由此来系统化管理学生基本信息,并达到简易操作的目的。
2、功能分析说明图3、各项功能说明(1)学生基本信息的录入和保存:在链表中的适当位置插入一个学生信息节点,一次添加一条学生信息(添加内容包含学号、姓名、年龄),如果添加的学号已经在文件中存在,则不能添加到文件中去,应显示错误提示语;如果添加成功,则显示成功提示语。
添加操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(2)显示学生信息:此功能是显示一个学生信息节点中的信息,并在屏幕上显示出来。
(3)删除学生信息:进入该项功能界面后,删除学生信息,一次删除一条学生信息。
(4)按学号查找学生信息:按学号查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。
查询操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(5)按姓名查找学生信息:按姓名查询学生信息,要求显示文件中与用户输入的学号相匹配的学生信息,要求显示学号、姓名、年龄等字段,如果文件中没有学生信息,则显示提示语。
查询操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(6)修改学生信息修改学生信息中的某一项信息,一次更新一条学生信息(更新内容包含学号、姓名、年龄等字段值),如果更新的学号在文件中不存在,则不能更新,应该显示错误提示语;如果更新成功,则显示成功提示语。
更新操作完毕后,应该询问用户是否继续执行此操作。
如果用户不继续,则退回到程序初始界面。
(7)退出系统,结束任务。
4、软件功能的验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
2.有严密正确的数据验证功能和数据处理功能,能够查询、插入、修改和删除学生信息。
3.系统要有一定的可靠性。
问题补充:不方便贴出来,发到我邮箱也可!最佳答案#include <>#include <>#include <>#include <>#define NULL 0#define LEN sizeof(struct student) #define FILE_DATA_PATH "c:\"struct student{long int num;char name[20];int age;char sex[4];char birthday[10];char address[30];long int tele_num;char E_mail[20];struct student *next;};int TOTAL_NUM = 0;struct student *head = NULL;void welcome();void mainmenu();void record();void insert(struct student *stu); void display(struct student *stu); void displayAll();void query();void query_by_num();void query_by_name();void readData();void writeData();void freeAll();void del();void change();void devise(struct student *p);int main(){char userName[9];char userPWD[7];int i;welcome();for(i = 0; i < 3; i++){printf("\n管理员初始用户名和密码均为admin\n"); printf("请输入您的用户名:");scanf("%s", userName);printf("\n请输入您的密码:");scanf("%s", userPWD);if ((strcmp(userName,"admin")==0) && (strcmp(userPWD,"admin")==0)){//用户名和密码正确,显示主菜单mainmenu();break;}else{if (i < 2){//用户名或密码错误,提示用户重新输入printf("用户名或密码错误,请重新输入!");}else{//连续3次输错用户名或密码,退出系统。
printf("您已连续3次将用户名或密码输错,系统将退出!");}}}return 0;}//显示欢迎信息void welcome(){printf("+---------------------------+\n");printf("| |\n");printf("| 欢迎使用学生信息管理系统 |\n");printf("| |\n");printf("+---------------------------+\n");}//系统主菜单void mainmenu(){int choice;choice = -1;readData();printf("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");do{printf("\n\n\n");printf("\t\t\t--------------------------------\n");printf("\t\t\t+ 学生信息管理系统 |\n");printf("\t\t\t--------------------------------\n"); printf("\t\t\t+ [1]----录入学生信息 |\n");printf("\t\t\t+ [2]----浏览学生信息 |\n");printf("\t\t\t+ [3]----查询学生信息 |\n");printf("\t\t\t+ [4]----删除学生信息 |\n");printf("\t\t\t+ [5]----修改学生信息 |\n");printf("\t\t\t+ [0]----退出系统 |\n");printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n");printf("\t\t\t--------------------------------\n");printf("请输入您的选择:");scanf("%d", &choice);switch(choice){case 0:writeData();freeAll();exit(0);case 1:record();break;case 2:displayAll(); break;case 3:query();break;case 4:del();break;case 5:change();break;default:printf("\n无效选项!"); break;}}while(choice != 0);}//录入学生信息void record(){struct student *p0;p0 = (struct student *)malloc(LEN); printf("请输入学生的学号:");scanf("%ld",&p0->num);printf("请输入学生的姓名:");scanf("%s",p0->name);printf("请输入学生的年龄:");scanf("%d",&p0->age);printf("请输入学生的性别:");scanf("%s",p0->sex);printf("请输入学生的出生年月:");scanf("%s",p0->birthday);printf("请输入学生的地址:");scanf("%s",p0->address);printf("请输入学生的电话:");scanf("%ld",&p0->tele_num);printf("请输入学生的E-mail:");scanf("%s",p0->E_mail);insert(p0);printf("该学生的信息为:\n");printf("-------------------------------------------------------------------------------");printf("学号\t姓名\t年龄\t性别\t出生年月\t\t地址\t电话\tE-mail\n");display(p0);}void insert(struct student *stu){struct student *p0, *p1, *p2;p1 = head;p0 = stu;if(head == NULL){head = p0;p0->next = NULL;}else{while((p0->num > p1->num)&&(p1->next != NULL)) {p2 = p1;p1 = p1->next;}if(p0->num <= p1->num){if(head == p1) head = p0;elsep2->next = p0; p0->next = p1; }else{p1->next = p0; p0->next = NULL; }}TOTAL_NUM++;}void display(struct student *p){printf("%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n", p->num, p->name, p->age, p->sex, p->birthday, p->address, p->tele_num, p->E_mail);}//浏览学生信息void displayAll(){struct student *p;printf("学生总数:%d\n", TOTAL_NUM);p = head;if(head != NULL){printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");printf("-------------------------------------------------------------------------------");do{display(p);p = p->next;}while(p != NULL);}printf("\n");}//查询学生信息void query(){int choice;choice = -1;do{printf("\n");printf("+--------------------+\n");printf("| 按学号查询请按 1 |\n");printf("| 按姓名查询请按 2 |\n"); printf("| 取消请按 0 |\n");printf("+--------------------+\n");printf("请输入您的选择:");scanf("%d", &choice);switch(choice){case 0:return;case 1:query_by_num();break;case 2:query_by_name();break;default:printf("\n无效选项!"); break;}}while(choice != 0);}//按学号查询学生信息void query_by_num(){int num;struct student *p1;printf("请输入学生的学号:");scanf("%ld", &num);if(head==NULL){printf("无学生记录!\n");return;}p1=head;while(num!=p1->num && p1->next!=NULL) p1=p1->next;if(num == p1->num){printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");printf("-------------------------------------------------------------------------------");display(p1);}elseprintf("没有该学生记录,请核对!");}//按姓名查询学生信息void query_by_name(){char name[20];struct student *p1;printf("请输入学生的姓名:");scanf("%s", name);if(head==NULL){printf("无学生记录!\n");return;}p1=head;while(strcmp(name, p1->name) && p1->next!=NULL)p1=p1->next;if(!strcmp(name, p1->name)){printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");printf("-------------------------------------------------------------------------------");display(p1);}elseprintf("没有该学生记录,请核对!");}//写入文件void writeData(){FILE* fp;//文件指针struct student *p;fp = fopen(FILE_DATA_PATH, "w");if (!fp){printf("文件打开错误!");return;}fprintf(fp,"%d\n", TOTAL_NUM);for(p = head; p!= NULL; p= p->next){fprintf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",p->num, p->name, p->age, p->sex, p->birthday, p->address, p->tele_num, p->E_mail);}fclose(fp);}void freeAll(){struct student *p1, *p2; p1=p2=head;while(p1){p2=p1->next;free(p1);p1=p2;}}//读取文件void readData(){FILE* fp;//文件指针struct student *p1, *p2;fp = fopen(FILE_DATA_PATH, "r");if (!fp){printf("文件打开错误!");return 0;}fscanf(fp,"%d\n", &TOTAL_NUM);head = p1 = p2 = (struct student *)malloc(LEN);fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",&p1->num, p1->name, &p1->age, p1->sex, p1->birthday, p1->address, &p1->tele_num, p1->E_mail);while(!feof(fp)){p1 = (struct student *)malloc(LEN);fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",&p1->num, p1->name, &p1->age, p1->sex, p1->birthday, p1->address, &p1->tele_num, p1->E_mail);p2->next = p1;p2 = p1;}p2->next = NULL;fclose(fp);}//删除学生信息void del(){struct student *p1, *p2;long int num;if(head == NULL)printf("无学生记录!\n");return;}printf("请输入您要删除的学生的学号:"); scanf("%ld", &num);p1 = head;while(num != p1->num && p1->next != NULL) {p2 = p1;p1 = p1->next;}if(num == p1->num)if(p1 == head)head = p1->next;else p2->next = p1->next;free(p1);TOTAL_NUM--;}elseprintf("没有该学生记录,请核对!\n"); }//修改学生信息void change(){struct student *p1, *p2;long int num;if(head == NULL){printf("无学生记录!\n");return;}printf("请输入您要修改的学生的学号:"); scanf("%ld", &num);p1 = head;while(num != p1->num && p1->next != NULL) {p2 = p1;p1 = p1->next;}if(num == p1->num)devise(p1);elseprintf("没有该学生记录,请核对!\n");}void devise(struct student *p){int choice;choice = -1;do{printf("请选择您要修改的学生的信息内容:\n"); printf("+----------------------+\n"); printf("| 姓名请按 1 |\n");printf("| 年龄请按 2 |\n"); printf("| 性别请按 3 |\n");printf("| 出生年月请按 4 |\n");printf("| 地址请按 5 |\n");printf("| 电话请按 6 |\n");printf("| E-mail 请按 7 |\n");printf("| 取消请按 0 |\n");printf("+----------------------+\n"); printf("请输入您的选择:");scanf("%d", &choice);switch(choice){case 0:return;case 1:printf("请输入新姓名:");scanf("%s", p->name);break;case 2:printf("请输入新年龄:");scanf("%d", &p->age);break;case 3:printf("请输入新性别:");scanf("%s", p->sex);break;case 4:printf("请输入新出生年月:"); scanf("%s", p->birthday);case 5:printf("请输入新地址:");scanf("%s", p->address);break;case 6:printf("请输入新电话:");scanf("%ld", &p->tele_num);break;case 7:printf("请输入新E-mail:"); scanf("%s", p->E_mail);break;default:printf("\n无效选项!");}}while(choice != 0);。