(1) 题目:学生信息管理系统、或其他自选信息管理系统(功能至少包括:增、删、改、查、排序、统计等) (2) 编程语言:Python (3) 成果提交:可运行程序+《xx系统实践报告》 (4) 提交方式:在Educoder普通作业中提交一个压缩文件,源代码文件和实践报告打包成一个压缩文件,压缩文件命名格式规范如下:班级_学号_姓名_学生信息管理系统 3. 系统功能描述 (1) 功能选择界面:给用户提供系统功能选择界面。 (2) 查找功能:主要包含两个功能:一是按照一定格式输出所有学生信息;二根据学号查找输出对应学生信息。 (3) 添加功能:添加新的学生信息 (4) 修改功能:根据学号修改对应学生的信息 (5) 删除功能:根据学号删除对应学员的信息 (6) 文件读写功能:所有学员信息以字典和列表嵌套的格式存储为一个json文件,具体的数据存储结构自行设计。要求在程序中所有的增删改查操作均在文件中体现,即查找功能通过读取该文件内容来实现,而添加、修改、删除功能则需要通过对文件内容进行写操作来实现。 (7) 其他功能:以上为系统必需功能,也可以根据自己的想法自由发挥,增加其他功能。
时间: 2023-12-29 16:06:46 浏览: 84
学生信息管理系统实践报告
一、需求分析
学生信息管理系统是一款用于管理学生信息的软件,其主要功能包括查找、添加、修改、删除等。系统需要提供一个功能选择界面,方便用户选择需要使用的功能。
在查找功能中,系统需要支持按照一定格式输出所有学生信息以及根据学号查找输出对应学生信息的功能。在添加、修改、删除功能中,系统需要支持对学生信息进行增加、修改、删除操作。
为了保证数据的完整性和可靠性,系统需要支持文件读写功能,即所有学员信息以字典和列表嵌套的格式存储为一个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实现一个简单的学生信息管理系统,并且了解了如何使用文件读写来存储和管理数据。同时,我们也学习了如何设计程序的架构和数据存储结构,以及如何通过测试用例来验证程序的正确性。
阅读全文