一、程序功能
1、概述
利用Python完成一个学生信息的增删改查的程序,主要涉及知识点:程序控制结构(实现可进可退的多级菜单)、文件读写操作(学生信息要保存到磁盘上的文件里)、利用函数实现功能模块化。
2、思维导图
二、学生实体
1、思维导图
2、关系模式
- 学生(学号, 姓名, 性别, 年龄, 班级, 专业, 系部, 电话)
3、学生表
- 行——记录——元祖
- 列——字段——属性
学号 | 姓名 | 性别 | 年龄 | 班级 | 专业 | 系部 | 电话 |
---|---|---|---|---|---|---|---|
2021001 | 肖小涵 | 女 | 19 | 2021级软件技术4班 | 软件技术 | 人工智能与大数据学院 | 12894763846 |
2021002 | 李晓红 | 女 | 18 | 2021级软件技术4班 | 软件技术 | 人工智能与大数据学院 | 18273649304 |
2021003 | 唐丽琳 | 女 | 19 | 2021级软件技术4班 | 软件技术 | 人工智能与大数据学院 | 13762738377 |
2021004 | 肖浩宇 | 男 | 20 | 2021级大数据1班 | 软件技术 | 人工智能与大数据学院 | 18987876361 |
2021005 | 王晓刚 | 男 | 18 | 2021级大数据1班 | 软件技术 | 人工智能与大数据学院 | 13678363763 |
2021006 | 张三丰 | 男 | 20 | 2021级大数据1班 | 软件技术 | 人工智能与大数据学院 | 15887367678 |
-
先将学生信息保存到文本文件里,用空格来隔开每个字段。
-
如果用的电脑自带的记事本,则需要将编码改为ANSI,具体步骤如下:
-
1)将保存好的文本文件另存为
-
2)将编码更改为ANSI
三、读取学生文件
- 文件结构是由若干行若干列构成,一行一行地读取,每一行读取出来的字符串,通过空格拆分成一个元组,所有行读取出来之后就自然构成元组的列表。
1、用元祖的列表保存多个学生信息
- 创建
- 运行结果
2、读取学生文件数据,保存到元组的列表里
-
创建
-
运行结果
-
格式化输出students列表
-
运行结果
四、对学生元组的列表进行增删改查操作
1、增加学生记录
- 添加一个新的学生元组
学号 | 姓名 | 性别 | 年龄 | 班级 | 专业 | 系部 | 电话 |
---|---|---|---|---|---|---|---|
2021007 | 杨潇 | 男 | 20 | 2021级大数据1班 | 大数据技术 | 人工智能与大数据学院 | 18273645767 |
- 运行结果
2、查询学生记录
1)按学号查询学生记录
- 运行结果
2)按姓名查找学生记录
- 运行结果
- 按其他的属性查找可以以此类推
3、修改学生记录
- 运行结果
4、删除学生记录
- 运行结果
五、将学生元组的列表写入文件
- 运行结果
- 查看写入的文件
六、构建学生信息管理多级菜单系统
1、构建多级菜单系统
- 运行结果
2、实现学生信息管理功能模块
1)编写查询全部学生记录功能
编写:
-
get_all_students()函数
-
display_all_students()函数
-
运行结果
2)编写增加学生记录功能
编写
- add_student()函数
- 运行结果
- 查看记事本里的新纪录
3)编写修改学生记录功能
编写
- modify_student()函数
- 修改学生的年龄和电话号码
- 运行结果
- 如果学号不存在的情况
4)编写删除学生记录功能
编写
- delete_student()函数
- 运行结果
- 查看记事本里的新纪录
- 删除成功
5)编写按学号查询学生记录功能
编写
- display_id_student()函数
- 运行代码
6)编写按姓名查询学生记录功能
编写
- display_name_student()函数
- 运行结果
七、学生信息管理程序
- 代码
# -*- coding: utf-8 -*-
"""
功能:学生信息管理
作者:小小榕
日期:2021年12月28日
"""
def get_all_student():
students =[]
f = open('学生.txt')
for line in f:
line = line.replace('\n', ' ')
student = line.split(' ')
students.append(student)
f.close()
return students
def add_student():
students = get_all_student()
id = input('学号:')
name = input('姓名:')
gender = input('性别:')
age = input('年龄:')
clas = input('班级:')
major = input('专业:')
department = input('系部:')
telephone = input('电话:')
students.append([id, name, gender, age, clas, major, department, telephone])
f = open('学生.txt', 'w')
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
print('\n恭喜,学生记录添加成功!\n')
def display_all_student():
students = get_all_student()
for i in range(len(students)):
for j in range(len(students[i])):
print(students[i][j], end= ' ')
print()
def display_id_student():
students = get_all_student()
f = open('学生.txt')
id = input('请输入需要查询的学号:')
found = False
for student in students:
if (student[0] == id):
found = True
for i in range(len(student)):
print(student[i], end=' ')
break
if not found:
print('学号为[{}]的学生没有找到!'.format(id))
def display_name_student():
students = get_all_student()
f = open('学生.txt')
name = input('请输入待查学生姓名:')
found = False
for student in students:
if (student[1] == name):
found = True
for i in range(len(student)):
print(student[i], end=' ')
break
if not found:
print('姓名为[{}]的学生没有找到!'.format(name))
def query_student():
while True:
print('查询学生记录')
print('=' * 20)
print('1.按学号查询学生记录')
print('2.按姓名查询学生记录')
print('3.查询全部学生记录')
print('4.返回上一级菜单')
print('=' * 20)
mc3 = int(input('输入菜单号:'))
if mc3 == 1:
display_id_student()
elif mc3 == 2:
display_name_student()
elif mc3 == 3:
display_all_student()
else:
break
def modify_student():
students = get_all_student()
f = open('学生.txt','w')
id = input('输入待改学生的学号:')
found = False
for student in students:
if (student[0] == id):
found = True
student = list(student)
new_age = input('输入新的年龄:')
new_telephone = input('输入新的电话:')
student[3] = new_age
student[7] = new_telephone
student = tuple(student)
print('恭喜:学生记录修改成功!')
break
if not found:
print('学号为[{}]的学生没找到!'.format(id))
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
def delete_student():
students = get_all_student()
f = open('学生.txt', 'w')
id = input('输入待删的学生学号:')
found = False
for student in students:
if (student[0] == id):
found = True
students.remove(student)
print('删除记录成功!')
break
if not found:
print('学号为[{}]的学生没有找到!'.format(id))
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
def login():
username = input('输入用户名:')
password = input('输入密码:')
if username == 'xiaoxiaorong' and password == '202542':
while True:
print('学生信息管理')
print('=' * 20)
print('1.增加学生记录')
print('2.查询学生记录')
print('3.修改学生记录')
print('4.删除学生记录')
print('5.返回上级菜单')
print('=' * 20)
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
else:
print('\n用户名或密码错误,请重新登录\n')
while True:
print('用户登录')
print('=' * 20)
print('1.登录')
print('2.退出')
print('=' * 20)
mc1 = int(input('输入菜单号:'))
if mc1 == 1:
login()
elif mc1 == 2:
print('\n谢谢使用本程序!\n')
break