学生管理系统需求文档
需求:
采取控制台的方式去书写学生管理系统
分析:
初始菜单:
欢迎登陆学生管理系统
1.新增学生信息
2.查看学生信息
3.修改学生信息
4.删除学生信息
5.退出程序
学生类:
属性:学号, 姓名,性别,年龄,班级
添加功能:
键盘录入每一个学生的信息并添加;
要求:
- 学号唯一。
查看功能:
打印所有的学生信息;
要求:
- 如果没有学生信息,打印输出“空”
- 如果有学生信息,需要安装一下格式打印输出。
学号 姓名 性别 年龄 班级
1001 admin 男 22 一班
1002 root 女 23 二班
修改功能:
键盘录入要修改学生的学号;
要求:
- 学号存在,继续录取其他修改信息。
- 学号不存在,提示不存在,并回到初始菜单。
删除功能:
键盘录入要删除学生的学号;
要求:
- 学号存在删除,
- 学号不存在,提示不存在,并回到初始菜单
登录功能:
用户名密码登录;
要求:
- 用户名密码有三次错误机会。
- 登录成功后获取以前存储到“student.txt”文件的学生信息。
退出功能:
程序退出后:
要求:
- 将当前学生信息写入到“student.txt”文件中,用于存储学生信息。
其他功能:
- 菜单输入错误,提示:“请输入正确的菜单选项”,并重新输入。
- 文件读取异常处理。
- 请学生根据实际情况逐步完善其他功能。
具体代码如下:
# 创建学生列表
list = []
# 学生类
class student:
# 构造方法,定义学生属性
def __init__(self, uid, name, sex, age, classes):
self.uid = uid
self.name = name
self.sex = sex
self.age = age
self.classes = classes
# 学生信息文件
def files(list):
file = open("student.txt", "w", encoding="utf-8")
for stud in list:
file.write(stud.uid)
file.write(' ')
file.write(stud.name)
file.write(' ')
file.write(stud.sex)
file.write(' ')
file.write(stud.age)
file.write(' ')
file.write(stud.classes)
file.write('\n')
file.close()
# 读取存储的学生信息文件
def fetch():
file = open("student.txt", "r", encoding="utf-8")
filetitle = file.read()
if filetitle[0] == '':
pass
else:
liststuds = filetitle.split("\n")
liststud = liststuds
if liststuds[-1] == '':
liststud = liststuds[:-1]
for lis in liststud:
studs = lis.split(" ")
stud= student(studs[0], studs[1], studs[2], studs[3], studs[4])
list.append(stud)
# 添加
def addStudent():
while True:
uid = input("请输入学生编号:")
if contains(uid):
print("学号已存在,请重新输入!!!")
else:
break
name = input("请输入学生姓名:")
sex = input("请输入学生性别:")
age = input("请输入学生年龄:")
classes = input("请输入学生班级:")
stud = student(uid, name, sex, age, classes)
# 添加到学生列表中
list.append(stud)
print("添加成功")
# 查询
def selectStudent():
if len(list) == 0:
print("空")
return
print("学号\t姓名\t性别\t年龄\t班级")
for stud in list:
print("%s\t%s\t%s\t%s\t%s" %(stud.uid, stud.name, stud.sex, stud.age, stud.classes))
# 修改
def updateStudent():
uid = input("请输入你要修改的学号:")
index = getIndex(uid)
if index == -1:
print("学号不存在,修改失败")
return
stud = list[index]
newName = input("请输入你要修改的学生姓名:")
newSex = input("请输入你要修改的学生性别:")
newAge = input("请输入你要修改的学生年龄:")
newClasses = input("请输入你要修改的学生班级:")
stud.name = newName
stud.sex = newSex
stud.age = newAge
stud.classes = newClasses
# 删除
def deleteStudent():
uid = input("请输入你要删除的学号:")
index = getIndex(uid)
if index>= 0:
list.pop(index)
print("删除成功")
else:
print("学号不存在,删除失败")
# 查询uid是否存在
def contains(uid):
return getIndex(uid) >= 0
# 查询uid索引
def getIndex(uid):
# 学生列表为0,直接返回-1
if len(list) == 0:
return -1
# 遍历学生列表
for n in range(len(list)):
# 得到每一个学生对象
stud = list[n]
# uid比较,一样返回索引
if uid == stud.uid:
return n
# 当循环结束后还没有找到,就表示不存在,返回-1
return -1
def main():
count = 1
while count <= 3:
name = input("请输入用户名:")
password = input("请输入密码:")
if name == "admin" and password == "123":
print("欢迎登陆学生管理系统")
print("1.新增学生信息")
print("2.查看学生信息")
print("3.修改学生信息")
print("4.删除学生信息")
print("5.退出程序")
# 获取以前的学生信息
try:
fetch()
except:
# 没有文件时pass
pass
while True:
num = input("请选择菜单序号:")
if num == '1':
addStudent()
elif num == '2':
selectStudent()
elif num == '3':
updateStudent()
elif num == '4':
deleteStudent()
elif num == '5':
print("程序已退出")
files(list)
break
else:
print("请输入正确的菜单选项")
break
else:
if count == 3:
print("用户名或者密码错误")
else:
print("用户名或者密码错误,还有{}次机会".format((3 - count)))
count += 1
if __name__ == '__main__':
main()