【Python学生成绩管理系统】

本文介绍了使用Python编写的学生成绩管理系统,包括添加、删除、修改和查询学生信息,以及将数据存储和读取到文本文件的功能。
摘要由CSDN通过智能技术生成

Python学生成绩管理系统
这是我写的第一个PY代码,先备存,方便以后查看

import os.path
# 创建一个学生列表,存放学生信息,每个元素都是字典类型
studentsList = [] 

def file11(no):# 文本读写相关操作代码
    try:
        with open(fn,"r",encoding='utf-8') as f:
            lines = f.read().splitlines()  #按行遍历整个文件,并将每一行的换行符去掉
            for i in lines:       #遍历每行内容
                x=i.split(",") #用逗号来切割元素
                #print(x,x[0])
                if x[0]==no:
                    return True
            return False
    except:
            #使用学生信息,创建学生对象  学生类(参数)
            #s1 = S1(sno1, name1, age1)

            #将学生对象添加到字典中
            #student_list.append({"id":s1.sno,"name":s1.name,"age":s1.age})

            #将列表转为字符串后再写入文本文件中存储起来,'a'表示追加模式。如果文件不存在,则创建文件。如果文件已存在,则将新内容添加到文件末尾
            with open("ss.txt","a",encoding="utf-8") as f:
                f.writelines(str("")+"\n")#必须要把结果转换为字符串后在写入


def insert():# 添加学生信息,然后写入到文本中
    while True:
        flagStudentId = 0  # 标记学生学号是否重复,0表示没有重复,1表示重复
        sn1= str(input('请输入学生ID(如1001):'))
        #判断学生信息是否存在, 学号是否存在. 判断字典的key是否存在
        for i in studentsList:
            if i['studentId'] == sn1:
                flagStudentId = 1 # 有重复学号,修改标记
        if flagStudentId==1:
            print('此学号已存在,请重新输入!') 
        else:  
            name1 = input('姓名:')     
            age1 = input('成绩:')
            # 将上面数据放到字典当中,方便管理
            student = {
                'studentId': sn1,
                'name': name1,
                'age': age1,
                }
            studentsList.append(student)  # 将学生信息添加到studentsList中
            print(f"{student}添加成功")
            save() # 退出目录前,将信息保存到文件当中
            answer = input('是否继续添加学生信息(y/n):')
            if answer == 'y' or answer == 'Y':
                continue
            else:
                break

def delete():
    while True:
        student_id = input('请输入需要删除的学生ID:')
        if student_id != '':    #判断学生ID不为空
            flagStudentId = 0  # 标记学生学号是否存在
            for stu in studentsList:     #遍历所有学生信息
                if str(stu['studentId']) == student_id:  
                    flagStudentId = 1  
                    studentsList.remove(stu)   
                    print("删除成功!") 
                    break
                else:
                    flagStudentId = 0  
            save()#调用save()函数,保存除需要删除的学生ID那一条信息外的所有信息到文本文件中            
            if flagStudentId==0:
                print("此ID不存在,无法删除")   
        else:
            print("此ID为空,无法删除")    
        answer = input('是否继续删除学生信息(y/n):')
        if answer == 'y' or answer == 'Y':
            continue
        else:
            break

def update():
    while True:
        student_id = input('请输入要修改资料的学生ID:')
        if student_id != '':    #判断学生ID不为空
            flagStudentId = 0  # 标记学生学号是否存在
            for stu in studentsList:     #遍历所有学生信息
                if str(stu['studentId']) == student_id:  
                    flagStudentId = 1  
                    name1 = input('姓名:')     
                    age1 = input('成绩:')
                    stu['name'] =name1
                    stu['age'] =age1 
                    print("修改成功!")  
                    break
                else:
                    flagStudentId = 0  
            save()#调用save()函数,保存除需要删除的学生ID那一条信息外的所有信息到文本文件中    
            if flagStudentId==0:
                print("此ID不存在,无法修改")   
        else:
            print("此ID为空,无法修改")    
        answer = input('是否继续修改学生信息(y/n):')
        if answer == 'y' or answer == 'Y':
            continue
        else:
            break

def check():
    while True:
        student_id = input('请输入需要查询的学生ID:')
        if student_id != '':    #判断学生ID不为空
            flagStudentId = 0  # 标记学生学号是否存在
            for stu in studentsList:     #遍历所有学生信息
                if str(stu['studentId']) == student_id:  
                    flagStudentId = 1  
                    print(f"查询成功,学号:{stu['studentId']},姓名:{stu['name']},成绩:{stu['age']}") 
                    break
                else:
                    flagStudentId = 0           
            if flagStudentId==0:
                print("此ID不存在,无法查询")   
        else:
            print("此ID为空,无法查询")    
        answer = input('是否继续查询学生信息(y/n):')
        if answer == 'y' or answer == 'Y':
            continue
        else:
            break

def show():
    print('[显示学生] 开始!')
    print('学号\t\t 姓名\t\t 成绩')
    for s in studentsList: # 循环打印学生信息
        print(f"{s['studentId']}\t\t {s['name']}\t\t {s['age']}")
    print(f'[显示学生] 结束, 总共显示了{len(studentsList)}个学生信息!')

def save():
    with open('ss.txt', 'w', encoding = 'utf8') as f: # 打开文件,f为文件对象,encoding是指定编码格式为utf8
        for s in studentsList:
            # 存到文件中的时候,每个信息间隔一个逗号,方便后面取出
            f.write(f"{s['studentId']},{s['name']},{s['age']}\n")

def load():
    if os.path.exists("ss.txt"):  # 若是存在保存学生信息的文件
        with open('ss.txt',"r",encoding="utf-8") as f:
                for line in f: # 每次读取一行
                # 针对每一行数据,按水平制表符划分,并存入到列表当中
                # 切分前先将每一行数据后面的换行符去掉,strip()此方法可以将字符串首尾的空白符去掉(空白符包括:换行、制表符、空格等)
                    line = line.strip() #此方法可以将字符串首尾的空白符去掉
                    alist = line.split(',') # 按逗号切分字符串,并存入到列表中
                    if len(alist) != 3: # 检测数据是否划分正确
                        return
                        print('文件内容格式错误!')
                    student = {
                        'studentId': alist[0],
                        'name': alist[1],
                        'age': alist[2],
                    }
                    studentsList.append(student)
    else:
        print('暂无学生数据!!!')


def meun(): #打印目录函数
        print('================学生信息管理功能================')
        print('<1>--------添加学生信息')#insert
        print('<2>--------删除学生信息')#delete
        print('<3>--------修改学生信息')#update
        print('<4>--------显示所有信息')#show
        print('<5>--------按ID查学生信息')#check
        print('<0>--------返回目录')#return
        #print('<6>----------加载学生数据')#load
        #print('<7>----------保存学生数据')#save
        print('----------------------------------------------')

def main1(): #子函数1,系统运行过程中可循环选择使用哪个功能
    while True:
        meun() #打印功能目录
        try:
            select=int(input("请输入数字来选择功能:"))
            if select in [1,2,3,4,5,6,0]:
                if select==1:
                    insert()
                elif select==2:
                    delete()
                elif select==3:
                    update()
                elif select==4:
                    show()
                elif select==5:
                    check()
                elif select==6:
                    print("load")
                elif select==0:
                    print("返回目录")
                    save() # 退出目录前,将信息保存到文件当中
                    break
            else:
                print("输入有误,请重新输入")
        except:
            print("输入有误,请重新输入")

def main0():
    # 主控函数
    load() # 程序每次运行前,先将TXT文件中存储的数据加载过来
    while True:
        print('学生信息管理系统CYUN-v1.0'.center(40, '='))
        print('1  -------学生基本信息管理')
        print('0  -------退出系统')
        print(''.center(48, '='))
        try:
            sh = int(input('输入指令:'))
            if sh == 1:
                main1()      #调用子函数1
            elif sh == 0:
                print('程序已退出,感谢您的使用!')
                break
            else:
                print('输入有误,请重新输入')
        except:
            print('输入有误,请重新输入')


if __name__ == '__main__':
    main0()      #调用主控函数



  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.学生成绩管理系统分为三个用户角色,登录界面可以选择三种不同的角色进行登录系统 2.管理员角色登录系统可以有以下功能: 管理考试信息:可以对考试批次信息进行增删改查操作 管理教师信息:可以对教师个人信息进行增删改查操作,包括教师的姓名/所属班级/生日/性别/登录密码/家庭住址身份证等信息 管理班级信息:可以对班级名称信息进行增删改查操作 管理学生信息:可以对学生个人信息进行增删改查操作,包括教师的姓名/所属班级/生日/性别/登录密码/家庭住址身份证等信息 查看学生成绩:可以查看学生的所属班级,考试批次,姓名,科目,成绩信息 管理课程信息:可以添加课程,也可以从编辑删除操作 管理专业信息:可以添加专业,也可以从编辑删除操作 注销退出系统 3.教师登录系统可以拥有以下功能: 教师个人信息:可以查看自己的个人信息,可以编辑修改自己的信息 教师录入成绩:可以录入学生的成绩:包含学生的所属班级,考试批次,姓名,科目,成绩,可以编辑删除操作 教师查看班级:可以查看现在的班级情况 教师查看专业:可以查看现在的专业情况 修改密码:可以修改个人的登录密码功能 注销退出系统 4.学生登录系统可以拥有以下功能: 学生个人信息:可以查看自己的个人信息,可以编辑自己的信息 学生查看成绩:可以查看学生的成绩,包含班级,考试批次,姓名成绩等属性,也可以按照考试批次快速检索学生信息 学生成绩排名:可以按照成绩高低排名进行查看 学生选择课程:可以添加学生自己的选课信息,可以编辑删除操作 修改密码:可以修改个人的登录密码功能 注销退出系统 备注:系统使用django+mysql进行开发,前端界面大方美观

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值