学生管理系统【第一版】

学生管理系统需求文档

需求:

采取控制台的方式去书写学生管理系统

分析:

初始菜单:

欢迎登陆学生管理系统

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值