(1) 题目:学生信息管理系统、或其他自选信息管理系统(功能至少包括:增、删、改、查、排序、统计等) (2) 编程语言:Python (3) 成果提交:可运行程序+《xx系统实践报告》 (4) 提交方式:在Educoder普通作业中提交一个压缩文件,源代码文件和实践报告打包成一个压缩文件,压缩文件命名格式规范如下:班级_学号_姓名_学生信息管理系统 3. 系统功能描述 (1) 功能选择界面:给用户提供系统功能选择界面。 (2) 查找功能:主要包含两个功能:一是按照一定格式输出所有学生信息;二根据学号查找输出对应学生信息。 (3) 添加功能:添加新的学生信息 (4) 修改功能:根据学号修改对应学生的信息 (5) 删除功能:根据学号删除对应学员的信息 (6) 文件读写功能:所有学员信息以字典和列表嵌套的格式存储为一个json文件,具体的数据存储结构自行设计。要求在程序中所有的增删改查操作均在文件中体现,即查找功能通过读取该文件内容来实现,而添加、修改、删除功能则需要通过对文件内容进行写操作来实现。 (7) 其他功能:以上为系统必需功能,也可以根据自己的想法自由发挥,增加其他功能。

时间: 2023-12-29 12:06:46 浏览: 30
学生信息管理系统实践报告 一、需求分析 学生信息管理系统是一款用于管理学生信息的软件,其主要功能包括查找、添加、修改、删除等。系统需要提供一个功能选择界面,方便用户选择需要使用的功能。 在查找功能中,系统需要支持按照一定格式输出所有学生信息以及根据学号查找输出对应学生信息的功能。在添加、修改、删除功能中,系统需要支持对学生信息进行增加、修改、删除操作。 为了保证数据的完整性和可靠性,系统需要支持文件读写功能,即所有学员信息以字典和列表嵌套的格式存储为一个json文件,并且在程序中所有的增删改查操作均在文件中体现。 二、设计思路 1. 数据存储结构 为了实现系统的需求,我们设计了以下数据存储结构: ``` { "students": [ { "id": "20210001", "name": "张三", "age": 18, "gender": "男", "class": "1班" }, { "id": "20210002", "name": "李四", "age": 19, "gender": "女", "class": "2班" } ] } ``` 其中,students是一个包含多个学生信息的列表,每个学生信息由id、name、age、gender、class五个属性组成。 2. 程序架构 程序的主要架构如下: ``` +--------------------------+ | 功能选择界面 | +--------------------------+ | | | 查找 添加 修改 | | | | 删除 | | | | 其他功能 | | | +--------------------------+ | 文件读写 | +--------------------------+ ``` 在程序的运行过程中,先从文件中读取学生信息,然后根据用户的选择执行相应的操作,最后将修改后的学生信息写回文件。 3. 程序实现 具体的程序实现可以参考以下代码: ```python import json # 从文件中读取学生信息 def load_students(): try: with open('students.json', 'r') as f: students = json.load(f)['students'] except: students = [] return students # 将学生信息写入文件 def save_students(students): with open('students.json', 'w') as f: json.dump({'students': students}, f) # 查找所有学生信息 def show_students(students): print('{:<10}{:<10}{:<10}{:<10}{:<10}'.format('学号', '姓名', '年龄', '性别', '班级')) for s in students: print('{:<10}{:<10}{:<10}{:<10}{:<10}'.format(s['id'], s['name'], s['age'], s['gender'], s['class'])) # 根据学号查找学生信息 def find_student(students, sid): for s in students: if s['id'] == sid: return s print('未找到该学生') return None # 添加学生信息 def add_student(students): sid = input('请输入学号:') name = input('请输入姓名:') age = input('请输入年龄:') gender = input('请输入性别:') cls = input('请输入班级:') student = {'id': sid, 'name': name, 'age': age, 'gender': gender, 'class': cls} students.append(student) print('添加成功') return students # 修改学生信息 def modify_student(students, sid): student = find_student(students, sid) if student is not None: student['name'] = input('请输入姓名:') student['age'] = input('请输入年龄:') student['gender'] = input('请输入性别:') student['class'] = input('请输入班级:') print('修改成功') return students # 删除学生信息 def delete_student(students, sid): student = find_student(students, sid) if student is not None: students.remove(student) print('删除成功') return students # 主程序 def main(): students = load_students() while True: print('+--------------------------+') print('| 功能选择界面 |') print('+--------------------------+') print('| |') print('| 1. 查找学生信息 |') print('| 2. 添加学生信息 |') print('| 3. 修改学生信息 |') print('| 4. 删除学生信息 |') print('| |') print('| 0. 退出程序 |') print('| |') print('+--------------------------+') choice = input('请选择功能(0-4):') if choice == '1': print('+--------------------------+') print('| 查找学生信息 |') print('+--------------------------+') print('| |') print('| 1. 查找所有学生信息 |') print('| 2. 根据学号查找学生信息|') print('| |') print('| 0. 返回上级菜单 |') print('| |') print('+--------------------------+') sub_choice = input('请选择功能(0-2):') if sub_choice == '1': show_students(students) elif sub_choice == '2': sid = input('请输入学号:') student = find_student(students, sid) if student is not None: print('{:<10}{:<10}{:<10}{:<10}{:<10}'.format('学号', '姓名', '年龄', '性别', '班级')) print('{:<10}{:<10}{:<10}{:<10}{:<10}'.format(student['id'], student['name'], student['age'], student['gender'], student['class'])) elif choice == '2': students = add_student(students) elif choice == '3': sid = input('请输入学号:') students = modify_student(students, sid) elif choice == '4': sid = input('请输入学号:') students = delete_student(students, sid) elif choice == '0': save_students(students) print('谢谢使用,再见!') break else: print('无效的选择,请重新选择!') if __name__ == '__main__': main() ``` 三、系统测试 我们可以通过以下测试用例来验证系统的功能是否正常: 1. 添加学生信息 输入:1 输出: ``` 请输入学号:20210001 请输入姓名:张三 请输入年龄:18 请输入性别:男 请输入班级:1班 添加成功 ``` 2. 查找所有学生信息 输入:1 -> 1 输出: ``` 学号 姓名 年龄 性别 班级 20210001 张三 18 男 1班 ``` 3. 根据学号查找学生信息 输入:1 -> 2 -> 20210001 输出: ``` 学号 姓名 年龄 性别 班级 20210001 张三 18 男 1班 ``` 4. 修改学生信息 输入:3 -> 20210001 -> 张三 -> 19 -> 女 -> 2班 输出: ``` 请输入姓名:张三 请输入年龄:19 请输入性别:女 请输入班级:2班 修改成功 ``` 5. 删除学生信息 输入:4 -> 20210001 输出: ``` 请输入学号:20210001 学号 姓名 年龄 性别 班级 未找到该学生 ``` 四、总结 通过本次实践,我们学习了如何使用Python实现一个简单的学生信息管理系统,并且了解了如何使用文件读写来存储和管理数据。同时,我们也学习了如何设计程序的架构和数据存储结构,以及如何通过测试用例来验证程序的正确性。

相关推荐

最新推荐

recommend-type

小型自选商场综合管理系统系统设计与实施

小型自选商场综合管理系统系统设计与实施 ,代码设计 输入与输出设计 数据库存储设计 系统流程图
recommend-type

小型自选商场综合管理系统系统分析

小型自选商场综合管理系统系统分析 1.能够正确运用系统分析的过程与方法,结合一个模拟课题,复习、巩固、管理信息系统的系统分析知识,提高系统分析实践能力。  2.熟悉业务流程图、数据流程图、数据字典的绘制...
recommend-type

小型自选商场商品管理系统设计报告

1 开发背景 超市是当今社会重要的组成部分,是人们日常生活的主要活动场所。因此如何管理超市,提高超市的工作效率,不仅是关系一个超市企业的重要措施,也是关系人们日常生活的重要事情。如何更快、更好的管理超市...
recommend-type

药店管理信息系统分析与设计

4.在上述工作基础上,完成小型自选商场综合管理系统的系统化分析,提出新系统的逻辑方案。 5.针对个人在实验一中提出的数据库方案,提出修正或完善建议。 6.独立完成上述内容,提交包含下述内容的实验报告。
recommend-type

小型自选商场综合管理系统设计说明书

小型自选商场综合管理系统设计说明书
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章

![:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章](https://img-blog.csdnimg.cn/img_convert/69b98e1a619b1bb3c59cf98f4e397cd2.png) # 1. 目标检测算法概述 目标检测算法是一种计算机视觉技术,用于识别和定位图像或视频中的对象。它在各种应用中至关重要,例如自动驾驶、视频监控和医疗诊断。 目标检测算法通常分为两类:两阶段算法和单阶段算法。两阶段算法,如 R-CNN 和 Fast R-CNN,首先生成候选区域,然后对每个区域进行分类和边界框回归。单阶段算法,如 YOLO 和 SSD,一次性执行检
recommend-type

info-center source defatult

这是一个 Cisco IOS 命令,用于配置 Info Center 默认源。Info Center 是 Cisco 设备的日志记录和报告工具,可以用于收集和查看设备的事件、警报和错误信息。该命令用于配置 Info Center 默认源,即设备的默认日志记录和报告服务器。在命令行界面中输入该命令后,可以使用其他命令来配置默认源的 IP 地址、端口号和协议等参数。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。