-
2022-06-07 21:39:28
第一章引言
1.1编写目的
为开发人员、维护人员、客户之间提供共同的协议而创立基础,对学生信息管理软件功能的实现作使命描述。
本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。
1.2背景
学生信息管理系统是校园网络中一个重要的应用系统,它大大改善了学校教学、科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。信息管理系统提供了强大的学生档案管理功能,方便管理员对学生信息的添加、修改、删除、查询等操作。本系统开发的总体任务就是实现学生信息管理的系统化、规范化、自动化、达到提高学生信息管理效率的目的。
1.3术语定义
SIMS: Student Information Management System 学生信息管理系统
SQL: Structured Query Language 关系数据库标准语言
1.4参考资料
[1]龙浩 王文乐 刘金 戴莉萍 《软件工程-软件建模与文档写作》[M] 人民邮电出版社
[2]丁宝康 《数据库原理》[M] 经济科学出版社
[3]王珊 陈红 《数据库系统原理》[M] 清华大学出版社
第2章 设计概述
2.1 限制和约束
本软件在开发的过程中,分为技术实现与软件工程两大部分,两部分都有侧重点,若技术支持出现故障或疑难问题无法解决、程序开发出现偏差,会延误工程进度,影响工程的按期完工。若软件工程陈述出现问题,部分描述含混不清,则会影响系统的完整性与可继承性。在管理方面,如管理者没有预见性,对出向的问题无法采用可行的解决手段,都会影响开发模块之间的互动,从而影响工程的顺利开展,导致工程无法按期完工。
2.2 设计原则和总体设计
(1)实用性原则
学生信息管理系统大大改善了学校教学、科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。信息管理系统提供了强大的学生档案管理功能,方便管理员对学生信息的添加、修改、删除、查询等操作。本系统开发可实现学生信息管理的系统化、规范化、自动化、以达到提高学生信息管理效率的目的。
(2)可扩展性原则与可维护性原则
数据库的维护,有效地利用数据是网站维护的重要内容,因此数据库的维护要受到重视;信息的更新、调整等;制定出相关的学生信息管理系统维护的规定以便将学生信息管理系统制度化、规范化。
(3)安全可靠性原则
系统环境要保证独立安全,防止外来无关人员窃取信息。各用户要分清权限,学生用户仅能查询、增添自己的相关信息,学号、学龄等。敏感信息仅能通过高级管理员修改。管理员增添信息需要严格依据学校提供的信息,修改信息需要向学生确认新信息正确性。学生信息管理系统仅在学校内部使用,需要防止无关人员进入系统。
(4)用户界面设计原则
为了使用户(学生)和系统管理人员,管理者(教师)使用此系统的时候更加快捷方便。系统功能设置就不需要十分繁琐,只要有较好用户图形设计界面使用起来方便快捷即可。
(5)数据库设计原则
系统使用最频繁的还是查询功能所以查询界面要简洁、明了,而且查询信息的速度至关重要,直接影响到用户的使用体验,所以Mysql数据库的设计是否合理,将直接影响到系统的性能
第3章 系统总体设计
3.1系统功能结构设计
学生信息管理系统:由系统管理、信息管理组成。功能结构图如图3-1。
(1)系统管理包括用户管理、角色管理、菜单管理。用户管理部分是对项目所有用户进行增删改查的操作;角色管理是对不同身份的用户进行权限分配;菜单管理就是操控我们所有的菜单。
(2)信息管理包括学生管理和教师管理,在这里展示所有教师以及学生信息。
图3-1学生信息管理系统功能结构图
3.2软件构成
学生信息管理系统,结构化方法下软件构成IPO图如3-2所示。
3.3系统构成
学生信息管里系统主要包括管理员身份验证、信息浏览、系统管理、学生信息管理以及用户操作等组件。 系统组件图如图3-3。
图3-3学生信息管理系统组件图
3.4系统配置
配置图主要说明如何配置系统的软件和硬件,学生信息管理系统的应用服务负责保存整个管理系统的应用程序,数据库是负责数据的管理,此外,还有多个终端,对于不同的用户,有不同的客户端,如图3-4表示了学生信息管理系统的配置图。
图3-4学生信息管理系统配置图
3.5数据库设计
需要创建学生表、超级管理员表、管理员(老师)表。
3.5.1数据库逻辑设计
该SIMS的SQL的逻辑结构如下图3-5。
图3-5 数据库E-R图
3.5.2数据库表设计
数据库表:
1)学生表结构 ,如下表3-6
表3-6students学生表
2)teacher教师表结构,如表3-7
表3-8 teacher教师类型表
3)admin超级管理员表结构,如下表3-8
表3-8admin超级管理员表
3.5.3 数据库物理设计(模式、子模式创建语句)
关系模式:
teacher(tid,name,gender,phone)
sys_user (id, username, nickname, gender, phone,)
student (sid, name, gender, academy, major,)
第4章 使用的开发技术和应该注意的事项
(1)鉴于开发条件有限,Microsoft SQL Server2008数据库设计约束,编程语言限制为Java、时间仓促,会优先保障关键功能的使用再完善其他功能。
(2)学生信息管理系统仅在学校内部使用,需要防止无关人员进入系统。
(3)本系统的开发完全按照老师和学生的要求设计,包括软件、硬件。
(4)为了使新用户和一些特殊用户方便使用,所以界面要简洁、明了,着重运行速度和安全。
第5章 专业术语以及有关缩写的定义
SIMS: Student Information Management System 学生信息管理系统
SQL: Server:所用的数据库管理系统
更多相关内容 -
基于PHP+MySQL的学生信息管理系统
2022-06-19 20:38:05系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。通过学生管理系统,...资源下载地址:https://download.csdn.net/download/sheziqiong/85697496
一、引言
1.1 1 设计开发的意义
学生信息档案的管理对于学校的管理者来说至关重要。作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。通过学生管理系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量。毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。
1.2 2 所设计应用系统的任务及目标
学生信息管理传统的手工管理主要包括学生档案管理,学生成绩管理。其中学生信息管理对大数据量要求较高,而教师排课系统由于需要十分专业的算法并且系统需求不断的变化,因此在实际应用时,往往会遇到很大的问题,需要进一步研究,目前一般的学校管理系统都包含了学生信息管理的功能。本系统不包含教师排课管理和教师管理的详细业务,只提供学生相关信息的查询。本系统以学校的学生信息管理为依托,结合教务教学管理,设计并开发一个学生信息管理系统,提供一个信息更新快捷、管理方便、功能设置合理的学生信息管理解决方案。针对学校大量的学生信息,就学生管理的几个方面,提供一个互动式的学生管理平台。系统目标如下:
通过学生信息管理系统的实现,使学校的学生信息管理更加科学化。
提供灵活、方便的操作。
节约学生信息管理的成本,提高学校管理的效率。
对系统提供必要的权限管理。
为学校考核学生的综合素质提供必要的数据支持。
1.3 3 设计开发及运行的软硬件环境
操作系统:Windows 7
数据库软件:MySQL
开发语言:PHP
开发 IDE:Zend Studio 10.1.0
二、系统分析与设计
2.1 1 系统需求分析
2.2 系统的目标任务
学生基本信息的增删改查,包括学生姓名、学号,出生日期,性别,电话,电子邮箱,地址,专业。
学生成绩信息的增删改查,包括数据结构,高等数学,计算机结构,大学英语,数据库设计。
对于新用户的登录注册,其中包括用户名,密码,以及用户的邮箱。
用户根据自己注册时的邮箱进行找回密码,以及根据用户名修改密码。
2.3 2 数据流图:
2.3.1 顶层数据流图
输出数据流和输入数据流为系统的输入数据和输出数据,表明系统的范围,以及与外部环境的数据交换关系。
2.3.2 数据字典:
数据字典可以用来对数据流图中的各部分进行定义,为系统的分析,设计及以后的实现提供有关元素一致性定义和详细的描述。
名字: 学生姓名;别名:name;描述:唯一学生姓名;定义:姓名=1{varchar}4 名字:学号;别名:stuNum;描述:标识每一个学生;定义:学号=1{char}8 名字:出生日期;别名:age;描述:学生的年龄;定义:出生日期=1{char}32 名字:性别;别名:sex;描述:学生的性别;定义:性别=1{char}4 名字:电话;别名:phone;描述:描述学生的联系方式;定义:电话={varchar}11 名字:电子邮箱;别名:email;描述:描述学生的电子邮箱;定义:电子邮箱={char}64 名字:地址;别名:address;描述:学生住址;定义:地址={char}128 名字:专业;别名:major;描述:标识学生所在的专业;定义:专业=1{char}128 名字:数据结构;别名:shuju;描述: 数据结构课程成绩;定义: 数据结构=1{tinyint}4 名字:高等数学;别名:math;描述: 高等数学课程成绩;定义: 高等数学=1{tinyint}4 名字:计算机结构;别名:computer;描述: 计算机结构课程成绩;定义: 计算机结构=1{tinyint}4 名字:大学英语;别名:engish;描述: 大学英语课程成绩;定义: 大学英语=1{tinyint}4 名字:数据库设计;别名:db;描述: 数据库设计课程成绩;定义: 数据库设计=1{tinyint}4 2.4 数据库概念结构设计
2.4.1 实体之间的 E-R 图
2.4.2 用户实体 E-R 图:
2.4.3 学生信息实体 E-R 图
2.4.4 学生成绩信息 E-R 图
2.5 4 数据库逻辑结构设计
2.5.1 根据以上 E-R 图,可以转换成如下逻辑结构:
学生表(姓名,学号,出生日期,性别,电话,电子邮箱,地址,专业)
成绩表(学号,数据结构,高等数学,计算机结构,大学英语,数据库设计)
学生表:
字段名 数据类型 字段长度 是否为空 姓名 Int 4 否 学号 Varchar 8 否 出生日期 Varchar 32 否 性别 Char 4 否 电话 Varchar 11 否 电子邮箱 Char 64 否 地址 Char 128 否 专业 char 128 否 2.5.2 数据库物理结构设计
学生基本信息表:
CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(4) NOT NULL DEFAULT '', `stuNum` char(8) NOT NULL DEFAULT '', `age` char(32) DEFAULT NULL, `sex` char(4) DEFAULT NULL, `phone` varchar(11) NOT NULL DEFAULT '', `email` char(64) NOT NULL DEFAULT '', `address` char(128) NOT NULL DEFAULT '', `major` char(128) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
2.6 5 数据库创建(创建表的界面、创建外码的界面)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xWvqTeb-1655642261700)(https://www.writebug.com/myres/static/uploads/2022/6/19/772bd6c68d9d8e1a654940748a9fef09.writebug)]
2.7 6 系统总体结构设计(给出系统总体结构图)
系统层次框图:
三、系统开发及实现
3.1 论述设计开发采用的技术及设计效果
1 用户注册模块:
新用户输入用户名和密码邮箱进行注册。其中两次密码必须输入一致。
学生信息浏览模块
该模块可以对学生的基本信息进行浏览,修改,或者删除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LSJHj0tt-1655642261703)(https://www.writebug.com/myres/static/uploads/2022/6/19/b21170d223b19792d625a369bddcc9a6.writebug)]
学生信息录入模块
资源下载地址:https://download.csdn.net/download/sheziqiong/85697496
-
Python学生信息管理系统详解(MySQL版)
2021-12-27 16:55:20二、建立主程序三、建立主菜单四、开始编写程序(一)、查询1、查询菜单2、按学号查询3、按姓名查询(二)、删除记录1、删除记录的菜单2、删除学生记录 前言 Hello 大家好我是小余,今天给大家带来一个算是我的第一...文章目录
前言
- Hello 大家好我是小余,今天给大家带来一个算是我的第一个完整的程序。
- 友情提醒:在该代码的SQL语句中请用 %s 充当占位符,不要用 ? 和 {} ,避免出错。
- 还有一点,execute() 是执行SQL语句的,而commit() 是写入的。
- 另外可能有时候游标会有报错,在本程序里我创建的是SScursor 流式游标,小余也对游标不熟,若代码运行出了问题,还请各位自行百度解决,也可以留言、私信。
数据库结构
数据源
21262174 余星舟 女 18 21大数据1班 大数据应用与技术 人工智能与大数据学院
21262175 肖琪锋 男 18 2021级软件2班 软件技术 人工智能与大数据学院
21262176 李鑫林 女 18 2021级软件3班 软件技术 人工智能与大数据学院
21262177 王春元 男 19 2021级数据1班 大数据应用与技术 人工智能与大数据学院
21262178 邓安杰 男 19 2021级软件3班 软件技术 人工智能与大数据学院
21262179 叶心仪 女 19 2021级软件3班 软件技术 人工智能与大数据学院
21262180 尹驰宇 男 19 21软件3班 软件技术 信息工程学院一、导入MySQL模块,并建立MySQL链接。
- 如果有小伙伴导入MySQL报错的话,请参照小余的置顶博客哦(有一篇专门讲了module安装)
- 图中就是我们需要链接MySQL的步骤,至于connect的时候建议大家还是按照关键字(代码中红色字字体)来写入,不然可能无法识别
二、建立主程序
- 和上一个文本版的一样建立一个主程序,只不过这次的主程序把原来的login 里面的验证身份加进来了。
三、建立主菜单
- 这个也是最基本的建设哦
四、开始编写程序
(一)、查询
1、查询菜单
- 该菜单和上面的菜单差不多哦
2、按学号查询
- 若我们不用for循环遍历输出:
- 下面是我们输出的结果
- 想必大家看到了吧,若不用for循环遍历输出的话,就会是这样,虽然说依旧输出了,但是不美观是吧。
3、按姓名查询
- 我们添加一个按姓名查询来预防查询学号不成,但确实有这个人
- 按姓名查询的格式和按学号一样,只不过数据不同。
(二)、删除记录
1、删除记录的菜单
- 虽然我觉得这个菜单有点多余
2、删除学生记录
(三)、增加记学生记录
- 若是sqlite3那么就要用add.Rowcount来提取影响的行数
(四)、修改记录
总结
- 总的来说MySQL版本比TXT版本好做的多,耗时少(当然那时候的txt是独立做出来的),对于这次的代码其实并不是最终的版本,只能说是能完成所有的需求,因为有一些是可以打包的代码并没有打包,因为对于定义函数之后括号内的内容调用有些不熟练,所以就没有再打包了,该版本也可以算是MySQL的成功版本了,大家好好观看吧。
- 有什么建议大家就留言哦,不懂的,错了的,不管是注释还是代码都可以留言私信
源码
''' function:StudentsInformationManageSystem author:Sherry Time:2021.12.26 ''' import pymysql #定义数据库链接参数 host = '127.0.0.1' #或者用local host port = 3306 db = 'student' user = 'root' password = '111111' conn = pymysql.connect(host=host, port=port, db=db, user=user, password=password) def non(): cursor = conn.cursor(pymysql.cursors.SSCursor) #流式游标,默认返回元组 return cursor #插入学生记录 def add_student(): cursor = non() id = int(input('学号:')) name = input('姓名:') genden = input('性别:') age = int(input('年龄:')) garden = str(input('班级:')) major = input('专业:') college = input('学院:') add = cursor.execute("insert into stu (id, name, genden, age, class, major, college)\ values(%s, %s, %s, %s, %s, %s, %s)", (id, name, genden, age, garden, major, college)) if add == 1: conn.commit() print('插入成功!') else: print('插入失败!') #按学号查询 def Q_by_id(): cursor = non() choose_id = int(input('请输入学号:')) cursor.execute('select * from stu where id =%s', (choose_id)) student = cursor.fetchall() for student in student: print('{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6])) re = input('\n是否继续查询y/n:') if re == 'y': Q_by_id() else: query_student() #按姓名查询(以防学号输入错误) def Q_by_name(): cursor = non() choose_name = input('请输入姓名:') cursor.execute('select * from stu where name =%s', (choose_name)) students = cursor.fetchall() for student in students: print('{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6])) re = input('\n是否继续查询y/n:') if re == 'y': Q_by_name() else: query_student() #查询所有学生 def Q_all(): cursor = non() cursor.execute('select * from stu') students = cursor.fetchall() for student in students: print('{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6])) #查询的菜单 def query_student(): while True: print('查询学生记录') print('================') print('1、按学号查询学生记录') print('2、按姓名查询学生记录') print('3、查询全部学生记录') print('4、返回上级菜单') print('=================') mc3 = int(input('请输入菜单号:')) if mc3 == 1: Q_by_id() elif mc3 == 2: Q_by_name() elif mc3 == 3: Q_all() else: break #删除学生记录 def D_student(): cursor = non() id = int(input('输入想要删除学生的学号:')) affect = cursor.execute('delete from stu where id = %s', (id)) if affect == 1: conn.commit() print('删除成功!') else: print('删除失败!') #删除的菜单 def delete_student(): print('============================') print('1、删除学生信息') print('2、回到上一级菜单') print('============================') mc4 = int(input('Input menu number:')) if mc4 == 1: D_student() elif mc4 == 2: login() #修改字段值 def modify_student(): cursor = non() ID = int(input('请输入想要修改学生的学号:')) cursor.execute('select * from stu where id = %s', (ID)) if cursor.fetchall() == []: print('未查找到学号是{}的学生'.format(ID)) mc3 = input('是否重新查询?y/n') if mc3 == 'y': modify_student() else: login() else: print('==============') print('1、修改姓名') print('2、修改性别') print('3、修改年龄') print('4、修改班级') print('5、修改专业') print('6、修改学院') print('7、返回上级菜单') print('==============') mc2 = int(input('请输入菜单号:')) if mc2 == 1: name = input('请输入修改后的值:') a = cursor.execute('update stu set name = %s where id = %s', (name, ID)) if a > 1: conn.commit() print('修改成功!') else: print('修改失败!') elif mc2 == 2: sex = input('请输入修改后的值:') a = cursor.execute('update stu set genden = %s where id = %s', (sex, ID)) if a > 1: conn.commit() print('修改成功!') else: print('修改失败!') elif mc2 == 3: age = int(input('请输入修改后的值:')) a = cursor.execute('update stu set age = %s where id = %s', (age, ID)) if a > 1: conn.commit() print('修改成功!') else: print('修改失败!') elif mc2 == 4: garden = input('请输入修改后的值:') a = cursor.execute('update stu set class = %s where id = %s', (garden, ID)) if a > 1: conn.commit() print('修改成功!') else: print('修改失败!') elif mc2 == 5: major = input('请输入修改后的值:') a = cursor.execute('update stu set major = %s where id = %s', (major, ID)) if a > 1: conn.commit() print('修改成功!') else: print('修改失败!') elif mc2 == 6: college = input('请输入修改后的值:') a = cursor.execute('update stu set college = %s where id = %s', (college, ID)) if a > 1: conn.commit() print('修改成功!') else: print('修改失败!') else: login() #登入后的菜单----展开 def login(): while True: print('学生管理系统') print('================') print('1、增加学生记录') print('2、查询学生记录') print('3、修改学生记录') print('4、删除学生记录') print('5、返回上级菜单') print('=================') mc2 = int(input('输入菜单号:')) if mc2 == 1: add_student() elif mc2 == 2: query_student() elif mc2 == 3: modify_student() elif mc2 == 4: delete_student() else: break #主程序 while True: print('登录系统') print('=========') print('1、登录') print('2、退出') print('=========') mc1 = int(input('输入菜单号:')) if mc1 == 1: username = input('请输入用户名:') password = input('请输入密码:') if username == 'admin' and password == '111111': login() else: print('账号或密码错误!') elif mc1 == 2: print('感谢使用!') break
-
学生信息管理系统项目开发总结报告.docx
2020-08-19 23:21:011 引言 1.1 编写目的 为了总结报告在工作过程中产生的问题 获得的经验 并且总结报告设计和制作者过 程中的逻辑和想法以便在以后的生产和学习过程中得到进一步提高 1.2 背景 说明 a 本项目名称学生信息管理系统 ... -
学生信息管理系统(C语言)
2022-01-17 13:17:36学生信息管理系统,链表实现,信息存入xls文件,c++实现- 系统开发背景
随着我国教育产业的飞速发展,社会对教育水平和教学管理软硬件的要求日益提高,尤其是对一个学校能够具有一套完善的教学管理软件提出了更多的要求。为了适应这种形式,教育系统尤其是大学不仅首先要有坚实的硬件基础,还要有一套完善的教学管理软件管理系统。而要实现这一功能,就要要求学校管理者配备一套高效的教育管理网络系统,以便在学校里实施良好的一套完善的管理且以最快的速度响应教师和学生的需求,及时为他们提供服务,为他们提供一个高效、便捷的环境。学生信息管理系统是校园网络中一个重要的应用系统,它大大改善了学校教学、科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。
- 系统需求
学生信息包括:学号,姓名,年龄,性别,出生年月,政治面貌,籍贯,家庭住址,
电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能(学生信息用文件保存)
(3)学生信息浏览功能
(4)学生信息排序、查询功能
对信息进行排序,可以按学号,按姓名,按性别,按出生年月日,按籍贯进行查询
(5)信息统计
a)可以按性别,按出生年,按籍贯统计学生人数
b)可以按班级统计学生人数
c)可以按政治面貌统计学生人数
按班级统计学生党员人数,团员人数,以及所占比例,设计并输出统计报表。
(6)学生信息的删除与修改
设计要求:
*界面比较美观;
*有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重
新输入;
*最好用链表的方式实现。- 系统总体设计
- 系统详细设计
系统中的每个功能模块流程图,伪代码
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct DATE {//学生生日年月日的结构体 int year; int month; int day; }date; typedef struct stu {//学生信息结构体 char num[20]; char name[20]; int old; char sex[10]; date birthday; char politic[20]; char native[20]; char address[200]; char phone[15]; char mail[50]; }STUDENT; typedef struct stus {//存储学生信息的单链表 STUDENT students; struct stus* next; }stus; int sum=0;//记录学生总数的全局变量 stus* enter(stus *head);//录入 int skim(stus* head);//浏览 int sort(stus* head);//学号排序 int query(stus* head);//查询 int statistics(stus* head);//统计 int delet(stus* head);//删除 int insert(stus* head);//插入 int input(stus *head) {//输入到文件的函数 FILE* fp; int i; if ((fp = fopen("text.xls", "a")) == NULL) { printf("\t\033[5;31m 打开失败!!! \033[0m "); return 0; }//打开文件 stus* pu; pu = head->next; while (pu != NULL) { fprintf(fp, "\n"); fprintf(fp, "%s\t", pu->students.num); fprintf(fp, "%s\t", pu->students.name); fprintf(fp, "%d\t", pu->students.old); fprintf(fp, "%s\t", pu->students.sex); fprintf(fp, "%d-%d-%d\t", pu->students.birthday.year, pu->students.birthday.month, pu->students.birthday.day); fprintf(fp, "%s\t", pu->students.politic); fprintf(fp, "%s\t", pu->students.native); fprintf(fp, "%s\t", pu->students.address); fprintf(fp, "%s\t", pu->students.phone); fprintf(fp, "%s\t", pu->students.mail); pu = pu->next; } } void menu(stus *head)//菜单函数 { stus* rear; rear = head; int key; do { printf("\t\033[33;5m *************************** \033[0m \n"); printf("\t\033[40;33m _________________________ \033[0m \n"); printf("\t\033[40;33m |_____学生信息管理系统____| \033[0m \n"); printf("\t\033[40;33m |_________________________| \033[0m \n"); printf("\t\033[40;33m |_____1.录入学生信息______| \033[0m \n"); printf("\t\033[40;33m |_____2.学生信息浏览______| \033[0m \n"); printf("\t\033[40;33m |_____3.学生信息排序______| \033[0m \n"); printf("\t\033[40;33m |_____4.学生信息查询______| \033[0m \n"); printf("\t\033[40;33m |_____5.学生信息统计______| \033[0m \n"); printf("\t\033[40;33m |_____6.学生信息删除______| \033[0m \n"); printf("\t\033[40;33m |_____7.学生信息插入______| \033[0m \n"); printf("\t\033[40;33m |_____8.退出信息系统______| \033[0m \n"); printf("\t\033[40;33m |_________________________| \033[0m \n"); printf("\t\033[40;33m |_______选择你的操作______| \033[0m \n"); printf("\t\033[40;33m |_________________________| \033[0m \n"); printf("\t\033[33;5m *************************** \033[0m \n"); printf("\t\033[33;32m 你的选择是= \033[0m "); scanf("%d", &key); switch (key) { case 1: {rear = enter(rear); }break; case 2: {skim(head); }break; case 3: {sort(head); }break; case 4: {query(head); }break; case 5: {statistics(head); }break; case 6: {delet(head); }break; case 7: {insert(head); }break; } } while (key!=8); input(head); } stus* enter(stus *rear) {//输入信息单链表中的函数 int i, x; int input(stus * head, int x); printf("\t\033[33;32m 录入学生个数= \033[0m "); scanf("%d", &x); for (i = 0; i < x; i++) { stus* student = (stus*)malloc(sizeof(stus)); student->next = NULL; printf("\t\033[33;32m 学生学号: \033[0m "); scanf("%s", student->students.num); printf("\t\033[33;32m 学生姓名: \033[0m "); scanf("%s", student->students.name); printf("\t\033[33;32m 学生年龄(大于零): \033[0m "); scanf("%d", &student->students.old); if (student->students.old < 0) { printf("\t\033[5;31m 输入错误!!! \n\033[0m "); break; } printf("\t\033[33;32m 学生性别(中文): \033[0m "); scanf("%s", student->students.sex); if (strcmp(student->students.sex, "男") != 0 && strcmp(student->students.sex, "女") != 0 && strcmp(student->students.sex, "f") != 0 && strcmp(student->students.sex,"F")!=0) { printf("\t\033[5;31m 输入错误!!! \n\033[0m "); break; }; printf("\t\033[33;32m 出生年月: \033[0m "); scanf("%d %d %d", &student->students.birthday.year, &student->students.birthday.month, &student->students.birthday.day); if (student->students.birthday.year < 1500|| student->students.birthday.year > 2021 ||student->students.birthday.month < 0|| student->students.birthday.month >12|| student->students.birthday.day< 0|| student->students.birthday.day>31) { printf("\t\033[5;31m 输入错误!!! \n\033[0m "); break; } printf("\t\033[33;32m 政治面貌(党员或共青团员): \033[0m "); scanf("%s", student->students.politic); printf("\t\033[33;32m 学生籍贯: \033[0m "); scanf("%s", student->students.native); printf("\t\033[33;32m 家庭住址: \033[0m "); scanf("%s", student->students.address); printf("\t\033[33;32m 学生电话: \033[0m "); scanf("%s", student->students.phone); printf("\t\033[33;32m E-mail : \033[0m "); scanf("%s", student->students.mail); printf("\n"); rear->next = student; rear = student; sum++; } return rear; } int skim(stus* head) {//输出函数 int i; if (head->next == NULL) { printf("\t\033[5;31m 未输入信息!!! \n\033[0m "); return(0); } stus* q; char title[10][20] = { {"学号"},{"姓名"}, {"年龄"},{"性别"}, {"出生年月"}, {"政治面貌"}, {"籍贯"} ,{"家庭住址"}, {"电话"} ,{"E-mail"} }; for (i = 0; i < 10; i++) { printf("%s\t", title[i]); } printf("\n"); q = head->next; while (q!= NULL){ printf( " %s\t", q->students.num); printf( " %s\t", q->students.name); printf( " %d\t", q->students.old); printf( " %s\t", q->students.sex); printf( " %d-%-d-%-d\t", q->students.birthday.year, q->students.birthday.month, q->students.birthday.day); printf( " %s\t", q->students.politic); printf( " %s\t", q->students.native); printf( " %s\t", q->students.address); printf( "%s\t", q->students.phone); printf( " %s\t", q->students.mail); printf("\n"); q = q->next; } } int sort(stus* head) {//排序函数 if (head->next == NULL) { printf("\t\033[5;31m 未输入信息!!! \n\033[0m "); return 0; } stus* temp = (stus*)malloc(sizeof(stus)); stus* p1 = head->next; if (p1->next == NULL) { printf("\t\033[5;31m 只有一个人!!! \n\033[0m "); return 0; } stus* p2 = p1->next; p1 = head->next; while (p1 != NULL) { p2 = p1->next; while (p2 != NULL) { if (strcmp(p1->students.num, p2->students.num) > 0) { temp->students = p2->students; p2->students = p1->students; p1->students = temp->students; } p2 = p2->next; } p1 = p1->next; } } int query(stus* head) {//查询函数 int key; do { printf("\t\033[33;5m *************************** \033[0m \n"); printf("\t\033[40;33m _________________________ \033[0m \n"); printf("\t\033[40;33m |_______学生信息查询______| \033[0m \n"); printf("\t\033[40;33m |________________________| \033[0m \n"); printf("\t\033[40;33m |_____1.学生学号查询______| \033[0m \n"); printf("\t\033[40;33m |_____2.学生姓名查询______| \033[0m \n"); printf("\t\033[40;33m |_____3.退出信息系统______| \033[0m \n"); printf("\t\033[40;33m |_________________________| \033[0m \n"); printf("\t\033[40;33m |_______选择你的操作______| \033[0m \n"); printf("\t\033[40;33m |_________________________| \033[0m \n"); printf("\t\033[33;5m *************************** \033[0m \n"); printf("\t\033[33;32m 你的选择是= \033[0m "); scanf("%d", &key); switch (key) { case 1: { char str[20]; int k = 0; printf("\t\033[33;34m 学生学号= \033[0m "); scanf("%s", str); stus* n = (stus*)malloc(sizeof(stus)); n = head->next; while (n != NULL && k!=1) { if(strcmp(str,n->students.num)==0){ k = 1; printf(" 学号:%-s\t", n->students.num); printf(" 姓名:%s\t", n->students.name); printf(" 年龄:%d\t", n->students.old); printf(" 性别:%s\t", n->students.sex); printf(" 出生年月:%d-%-d-%-d\t", n->students.birthday.year, n->students.birthday.month, n->students.birthday.day); printf(" 政治面貌:%s\t", n->students.politic); printf(" 籍贯:%s\t", n->students.native); printf(" 家庭住址:%s\t", n->students.address); printf(" 电话:%s\t", n->students.phone); printf(" E-mail:%s\t", n->students.mail); printf("\n"); } n = n->next; }if (k != 1)printf("\t\033[5;31m 未输入信息!!! \n\033[0m "); }break; case 2: { int k = 0; char str[20]; printf("\t\033[33;34m 学生姓名= \033[0m "); scanf("%s", str); stus* n = (stus*)malloc(sizeof(stus)); n = head->next; while (n != NULL && k != 1) { if (strcmp(str, n->students.name) == 0) { k = 1; printf("\t\033[33;34m 已找到!\n\033[0m "); printf(" 学号:%s\t", n->students.num); printf(" 姓名:%s\t", n->students.name); printf(" 年龄:%d\t", n->students.old); printf(" 性别:%s\t", n->students.sex); printf(" 出生年月:%d-%-d-%-d\t", n->students.birthday.year, n->students.birthday.month, n->students.birthday.day); printf(" 政治面貌:%s\t", n->students.politic); printf(" 籍贯:%s\t", n->students.native); printf(" 家庭住址:%s\t", n->students.address); printf(" 电话:%s\t", n->students.phone); printf(" E-mail:%s\t", n->students.mail); printf("\n"); } n = n->next; }if (k != 1)printf("\t\033[5;31m 未输入信息!!! \n\033[0m "); }break; } } while (key != 3); return 0; } int delet(stus* head) {//删除函数 int e; if (sum==0) { printf("\t\033[5;31m 未输入内容!!! \n\033[0m "); return 0; } printf("\t\033[33;32m 删除位置= \033[0m "); scanf("%d", &e); if (e > sum+1||e<1) { printf("\t\033[5;31m 位置错误!!! \n\033[0m "); return 0; } stus* p; p = head; stus* p2; p2 =p->next; for (int i = 1; i < e; i++) { p = p->next; p2 = p->next; } p->next = p2->next; sum--; } int insert(stus* head) {//插入函数 int e; stus* student = (stus*)malloc(sizeof(stus)); student->next = NULL; printf("\t\033[33;32m 学生学号: \033[0m "); scanf("%s", student->students.num); printf("\t\033[33;32m 学生姓名: \033[0m "); scanf("%s", student->students.name); printf("\t\033[33;32m 学生年龄(大于零): \033[0m "); scanf("%d", &student->students.old); if (student->students.old < 0) { printf("\t\033[5;31m 输入错误!!! \n\033[0m "); return 0; } printf("\t\033[33;32m 学生性别(中文): \033[0m "); scanf("%s", student->students.sex); if (strcmp(student->students.sex, "男") != 0 && strcmp(student->students.sex, "女") != 0 && strcmp(student->students.sex, "f") != 0 && strcmp(student->students.sex, "F") != 0) { printf("\t\033[5;31m 输入错误!!! \n\033[0m "); return 0; }; printf("\t\033[33;32m 出生年月: \033[0m "); scanf("%d %d %d", &student->students.birthday.year, &student->students.birthday.month, &student->students.birthday.day); if (student->students.birthday.year < 1500 || student->students.birthday.year > 2021 || student->students.birthday.month < 0 || student->students.birthday.month >12 || student->students.birthday.day < 0 || student->students.birthday.day>31) { printf("\t\033[5;31m 输入错误!!! \n\033[0m "); return 0; } printf("\t\033[33;32m 政治面貌(党员或共青团员): \033[0m "); scanf("%s", student->students.politic); printf("\t\033[33;32m 学生籍贯: \033[0m "); scanf("%s", student->students.native); printf("\t\033[33;32m 家庭住址: \033[0m "); scanf("%s", student->students.address); printf("\t\033[33;32m 学生电话: \033[0m "); scanf("%s", student->students.phone); printf("\t\033[33;32m E-mail : \033[0m "); scanf("%s", student->students.mail); printf("\n"); printf("\t\033[33;32m 插入位置= \033[0m "); scanf("%d", &e); if (e > sum+1||e<0) { printf("\t\033[5;31m 位置错误!!! \n\033[0m "); return 0; } stus* p; p = head; for (int i = 1; i < e; i++) { p = p->next; } student->next = p->next; p->next = student; sum++; } int statistics(stus* head) {//统计函数 int key; do { printf("\t\033[33;5m *************************** \033[0m \n"); printf("\t\033[40;33m _________________________ \033[0m \n"); printf("\t\033[40;33m |_______学生信息统计______| \033[0m \n"); printf("\t\033[40;33m |________________________| \033[0m \n"); printf("\t\033[40;33m |_____1.学生性别统计______| \033[0m \n"); printf("\t\033[40;33m |_____2.党员人数统计______| \033[0m \n"); printf("\t\033[40;33m |_____3.退出信息系统______| \033[0m \n"); printf("\t\033[40;33m |_________________________| \033[0m \n"); printf("\t\033[40;33m |_______选择你的操作______| \033[0m \n"); printf("\t\033[40;33m |_________________________| \033[0m \n"); printf("\t\033[33;5m *************************** \033[0m \n"); printf("\t\033[33;32m 你的选择是= \033[0m "); scanf("%d", &key); switch (key) { case 1: { int M=0; char str[20]; if (head->next == NULL) { printf("\t\033[5;31m 未输入信息!!! \n\033[0m "); return 0; } stus* sex = (stus*)malloc(sizeof(stus)); sex = head->next; while (sex != NULL) { if (strcmp(sex->students.sex, "男") == 0 || strcmp(sex->students.sex, "m") == 0 || strcmp(sex->students.sex,"M")==0) { M++; }sex = sex->next; }printf("\n\t\033[33;34m 一共有%d名学生,女生%d名,男生%d名 \n\033[0m ", sum, sum - M, M); }break; case 2: { int D=0; if (head->next == NULL) { printf("\t\033[5;31m 未输入信息!!! \n\033[0m "); return 0; } stus* d = (stus*)malloc(sizeof(stus)); d = head->next; while (d != NULL) { if (strcmp(d->students.politic, "党员") == 0) { D++; } d = d->next; }printf("\n\t\033[33;34m 一共有%d名学生,团员%d名,党员%d名\n\033[0m ", sum, sum - D,D); }break; } } while (key != 3); return 0; } int main() {//主函数 stus* head = (stus*)malloc(sizeof(stus)); head->next = NULL; FILE* fp; int i=0; if ((fp = fopen("text.xls", "w")) == NULL) { printf("\t\033[5;31m 打开失败!!! \033[0m "); return 0; } char title[10][20] = { {"学号"},{"姓名"}, {"年龄"},{"性别"}, {"出生年月"}, {"政治面貌"}, {"籍贯"} ,{"家庭住址"}, {"电话"} ,{"E-mail"} };//xls表头数组 for (i = 0; i < 10; i++) { fprintf(fp, "%s\t", title[i]); }建立数组 menu(head); return 0; }
-
学生信息管理系统2020年7月7日.zip
2020-07-09 20:45:578.学生管理模块 45 9. 成绩管理模块 46 10. 课程管理模块 48 (二) 测试 49 1. 模块测试 49 2. 子系统测试 91 3. 系统测试 102 4. 验收测试 103 六、总结与展望 123 (一)总结 123 (二)展望 124 包括源码+... -
基于Java的学生作业管理系统毕业设计程序
2020-07-29 18:02:42采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计... -
学生信息管理系统系统设计说明书.doc
2020-06-09 06:29:16精品文档 你我共享 AAAAAA 学生信息管理系统设计说明书 项目名称 学生信息管理系统 项目负责人 傅平 项目开发单位 上海第二工业大学 1引言 1.1编写目的 作为C#课程结课设计验证自身的学习效果同时希望利用所学的基本... -
系统分析报告 ——首都经济贸易大学学生学籍和选课信息管理系统 一、引言.docx
2022-06-23 06:05:56系统分析报告 ——首都经济贸易大学学生学籍和选课信息管理系统 一、引言 -
学生信息管理系统软件测试计划书.doc
2021-07-23 07:05:07文档标识:201091601学生信息管理系统软件测试编 写 李宝刚校 对小组成员 李宝刚孔维一李宇杰二OO年目录1.引言11.1.目的11.2.背景11.3.范围11.4.定义11.5.参考资料12.测试内容13.测试规则23.1.进入准则23.2.暂停/... -
C语言学生信息管理系统设计实验报告
2021-05-19 08:11:57C语言学生信息管理系统设计实验报告 中南民族大学中南民族大学 软件课程设计报告软件课程设计报告 电信电信 学院学院 1010 级级光信光信专业专业 题目题目学生信息管理系统学生信息管理系统 姓名姓名 张宇(组长)张宇... -
学生信息管理系统报告及总结.docx
2020-02-26 09:56:10计算机与通信工程学院 数据库系统课程设计报告 题目:学生学籍信息管理系统 课程代号: 课程名称数据库系统课程设计 学号 姓名 班级 指导教师 完成日期2011 年 12 月 第一章 第二章 2.1 目录 引言4 系统分析与设计4 ... -
学生信息管理系统课程设计报告
2020-12-17 06:59:39一、引言(简要说明设计题目的目的、意义、内容、主要任务等)1实验目的在全面掌握《C语言程序设计》课程的知识点的前提下,培养了我们分析实际问题的能力,并能够自己编写程序实现对实际问题的处理,掌握程序项目开发... -
2学生信息管理系统.doc
2022-06-17 09:39:00电子科技大学成都学院计算机系 实践专周设计报告 课 程 名 称: C++课题设计 设 计 题 目: 学生信息管理系统 指导 教师 组: 组长学号姓名: 组员学号姓名: 组员学号姓名: 组员学号姓名: 计算机系制 2013年12月 ... -
基于JAVA学生信息管理系统.docx
2020-10-22 20:18:26成绩: 江西科技师范大学 毕业设计论文 学生姓名 题目中文 基于Java的学生信息管理系统 外文 Student Information Management System based on Java 院系 数学与计算机科学学院 专 业 计算机科学与技术 年 级 学号 ... -
Python实现的学生信息管理系统
2021-04-08 19:24:44Python实现的学生信息管理系统引言功能需求2.1 功能菜单的实现2.2 录入学生信息2.3 删除学生信息2.4 修改学生信息2.5 查找学生信息2.6 查找学生总人数2.7 查看学生数据2.8 排序学生数据总结合理的创建标题,有助于... -
学生信息管理系统毕业设计
2011-06-04 12:25:494.1.6 学生信息管理模块 36 4.1.7 课程信息管理模块 49 4.1.8 成绩信息管理模块 54 4.1.9 年份信息管理模块 58 4.2 系统工作流程(时序图) 61 第五章 系统测试 62 结束语 63 致谢 64 主要参考文献 65 附录(附图) ... -
Java程序设计学生信息管理系统x_学生信息管理系统程序设计报告
2020-06-21 21:23:03Java 程序设计课程设计 目录 摘要 - 2 - 一引言 - 3 - 一问题提出 - 3 - 二需求与系统分析 - 3 - 1 需求分析 - 3 - 2 系统分析 - 3 - 二程序的主要功能 - 4 - 一录入学生信息 - 4 - 二查询学生信息 - 4 - 三修改学生... -
基于javaSwing+文本存储的学生信息管理系统设计实现
2021-08-16 23:05:04学生信息管理系统是一个教育单位不可缺少的部分。 一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担, 它的内容对于学校的决策者和管理者来说都至关重要。 所以学生信息管理系统... -
学生信息管理系统总结(二)——回首需求分析,建模
2016-06-10 16:35:03在敲学生的过程中没有好好总结,一开始也不知道该怎么总结才好,所以总结的就特别乱,不过在后面又看到同学们的博客,总结的都很好,期中包括遇到的错误...学生信息管理系统主要是实现对学生学籍信息,班级信息,课程信 -
(定稿)毕业论文基于java的学生信息管理系统设计报告(完整版)最新版
2021-02-12 11:01:00《【毕业论文】基于java的学生信息管理系统设计报告.doc》由会员分享,可免费在线阅读全文,更多与《(定稿)毕业论文基于java的学生信息管理系统设计报告(完整版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档... -
c++学生信息管理系统
2020-02-19 10:33:34c++学生信息管理系统 引言 这是我写的第一篇博客,是关于一个小的c艹课程设计,其中还有许多不足的地方,例如我使用的是UTF-8编码,但输出中文还是会有乱码的情况;还有就是从文件读出和存入是无法控制格式,以及我... -
学生XX信息学习管理系统总体设计.docx
2020-11-13 16:30:04学生管理系统总体设计 引言 编写目的 由于现在的学校规模在逐渐的扩大 设置的专业类别 分支机构及老师 学生人数越来越多 对于过去的学生信息管理系统 不能满足当前学生信息管理的服务性能要求本报告对于开发新的 ... -
学生信息管理系统软件测试计划书
2014-03-06 17:09:08总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对了这些要求设计了学生信息管理系统。 1.2 背景 -
学生信息管理系统总体设计.pdf
2020-08-20 08:56:21学生管理系统总体设计 1 引言 1.1 编写目的 由于现在的学校规模在逐渐的扩大 设置的专业类别 分支机构及老师 学 生人数越来越多 对于过去的学生信息管理系统 不能满足当前学生信息管理的 服务性能要求 本报告对于... -
学生信息管理系统概要设计.pdf
2020-08-15 09:37:13精品文档 学生信息管理系统 概 要 设 计 班级 姓名 学号 1 欢迎下载 精品文档 1引言 1.1 编写目的 由于现在的学校规模在逐渐的扩大 设置的专业类别 分支机构 及老师学生人数越来越多对于过去的学生信息管理系统不能... -
学生信息管理系统范文样本.docx
2020-09-09 23:58:05资料内容仅供您学习参考如有不"|之...学生信息管理系统 1引言 1.1项目背景 随着信息技术在管理上越来越深入而广泛的应用管理信息 系统的实施在技术上已逐步成熟管理信息系统是一个不断发展的 新型学科任何一个单位要生 -
学生信息管理系统83583.doc
2020-01-18 12:39:34学生信息管理系统 1 引言 1.1 项目背景 随着信息技术在管理上越来越深入而广泛的应用管理信息系统的实施在技术上已逐步成熟管理信息系统是一个不断发展的新型学科任何一个单位要生存要发展要高效率地把内部活动有机... -
【MYSQL】学生信息管理系统(学习及总结)
2022-01-05 17:57:25基于mysql的学生信息管理系统的实现 -
可行性分析报告-学生信息管理系统
2022-01-04 16:43:121、引言 1.1编写目的 编写本可行性研究报告的... 因此,编写一个学生管理系统可以为学校办公管理提供一个快速、简单规范的管理平台,使学院在学生信息管理方面更加规范化,快捷化。 注意:本文很多地方有缺陷,仅供参考