admin管理员组文章数量:1794759
Python:学习成绩管理系统
目录
前言
一、需求分析
1、概念设计
2、流程图设计
3、主界面设计
二、功能实现
1、主函数定义
2、录入学生信
(1)功能实现
(2)输出界面
3、删除学生信
(1)功能实现
(2)输出界面
4、修改学生信
(1)功能实现
(2)输出界面
5、查找学生信
(1)功能实现
(2)输出界面
6、排序
(1)功能实现
(2)输出界面
7、统计学生总人数
(1)功能实现
(2)输出界面
8、显示所有学生信
(1)功能实现
(2)输出界面
三、项目打包
四、总结
前言
对于此系统我所使用的是window11系统,所用Python解释器版本:python3.8,建议在pycharm进行
编写.基于对Python基础知识的掌握,对学生成绩管理系统进行全方位刨析,一步一步讲解,希望对
有需要的人有所帮助。
一、需求分析 1、概念设计针对学生们对自己成绩的查询便捷性,自主编写了一套简易的班级学习成绩管理系统。其中学生成绩管理系统主要包括录入学生信、查找学生信、删除学生信、修改学生信、排序学生信、统计学生总数、显示学生信,这几项功能。其中录入学生的信包括学号、姓名、C语言程序设计成绩、Python成绩、Java成绩、绩点;查询学生信分为按学号和按姓名查找两种;删除学生信是输入学号进行查找,查找到学生信之后,对学生信进行删除;修改学生信是输入学号后,查询到学生信之后,对学生信进行修改;排序学生信的排序方式可选择升序和降序,可选择按C语言程序设计成绩、Python成绩、Java成绩、绩点进行排序;统计学生总数 就是输出信管理系统中有几个学生的信。学生成绩管理系统,说难也难,说简单也简单,对于初学者的我们也算一项不小的挑战了,对于这个系统,它的功能等等很多,所以我们需要有一个大概的思路,来让我们更好的完成它。
2、流程分析编号 | 功能 |
0 | 退出系统 |
1 | 录入学生信insert() |
2 | 查找学生信search() |
3 | 删除学生信delete() |
4 | 修改学生信modity() |
5 | 排序sort() |
6 | 统计学生总人数total() |
7 | 显示所有学生信show() |
大致样式如图所示:
代码:
import os def main (): while True: menu() //调用菜单函数 choice=int(input('请选择:')) if choice in [0,1,2,3,4,5,6,7]: if choice==0: answer = input ('请确定要退出系统?y/n:') if answer == 'y' or answer == 'Y': print ('谢谢你的使用') break else: continue elif choice==1: insert() elif choice==2: search () elif choice==3: delete() elif choice==4: modify() elif choice==5: sort() elif choice==6: total() elif choice==7: show() else: print('请正确输入数字!') def menu(): print ('=========================学生成绩管理系统=========================') print ('----------------------------功能模块----------------------------') print ('\\t\\t\\t\\t\\t\\t1.录入学生信') print ('\\t\\t\\t\\t\\t\\t2.查找学生信') print ('\\t\\t\\t\\t\\t\\t3.删除学生信') print ('\\t\\t\\t\\t\\t\\t4.修改学生信') print ('\\t\\t\\t\\t\\t\\t5.排序') print ('\\t\\t\\t\\t\\t\\t6.统计学生总人数') print ('\\t\\t\\t\\t\\t\\t7.显示所有学生信') print ('\\t\\t\\t\\t\\t\\t0.退出系统') print ('-------------------------------------------------------------') if __name__ == '__main__': //程序开始运行 main() 二、功能实现 1、主函数定义用户根据输入功能模块对应的数字编号进行操作,功能使用完成后再次返回主页面。用户如果输入数字0后,根据提示输入y则退出系统,否则继续返回主界面
def main (): while True: menu() choice=int(input('请选择:')) if choice in [0,1,2,3,4,5,6,7]: if choice==0: answer = input ('请确定要退出系统?y/n:') if answer == 'y' or answer == 'Y': print ('谢谢你的使用') break else: continue elif choice==1: insert() elif choice==2: search () elif choice==3: delete() elif choice==4: modify() elif choice==5: sort() elif choice==6: total() elif choice==7: show() else: print('请正确输入数字!') 2、录入学生信录入学生信函数代码部分,在这个函数中实现的功能是录入学生信,包括学号、姓名、C语言成绩、Python成绩、Java成绩,并将其写入文件中,每一行为一个学生的信存储。
(1)功能实现 def insert(): //插入学生信功能 stu_lst = [] while True: no=int(input('请输入学号(例如1001):')) if not no: break name=input('请输入姓名:') if not name: break try: c = int (input ('请输入C语言成绩:')) python = int (input ('请输入Python的成绩:')) java = int (input ('请输入Java的成绩:')) except: print('输入无效,请重新输入!') continue student={'id':no,'name':name,'C语言':c,'Python':python,'Java':java} stu_lst.append(student) save (stu_lst) print ('信录入成功!') stu_lst.clear() choice=input('是否继续?y/n:') if choice=='y' or choice=='Y': continue else: break def save(lst): //存储列表数据 try: stu_txt=open(filename,'a',encoding='utf-8') except: stu_txt=open(filename,'w',encoding='utf-8') for item in lst: stu_txt.write(str(item)+'\\n') stu_txt.close() (2)输出界面 3、删除学生信删除学生信函数代码部分,此函数主要功能是执行删除操作,输入学号进行查找,查找到学生信之后,对学生信进行删除。
(1)功能实现 def delete(): //删除学生信功能 while True: student_id=int(input('请输入学生的id:')) if student_id: if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student_old = file.readlines() else: student_old=[] flag=False if student_old: with open(filename,'w',encoding='utf-8') as files: for item in student_old: d = dict (eval (item)) if d['id']!=student_id: files.write(str(d)+'\\n') else: flag=True if flag: print (f'学号为{student_id}的学生信已删除!') else: print (f'没有找到id为{student_id}的学生信') else: print('无学生记录') break show() choice = input ('是否继续?y/n:') if choice == 'y': continue else: break def show(): //显示文本中的数据 student_lst=[] if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student=file.readlines() for item in student: student_lst.append(eval(item)) if student_lst: show_student(student_lst) else: print('暂未保存学生数据!') (2)输出界面 4、修改学生信修改学生信函数代码部分,此函数的主要功能是对学生信进行修改,当输入学号后,查询到学生信之后,对学生各科成绩进行修改。
(1)功能实现 def modify(): show() if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: student_lst=file.readlines() else: return student_id=int(input('请输入学生id:')) with open(filename,'w',encoding='utf-8') as file1: for item in student_lst: d = dict (eval (item)) if d ['id'] == student_id: print(f'已经找到id为{student_id}的学生') while True: try: d ['name'] = input ('请输入学生姓名:') d ['C语言'] = int (input ('请输入C语言成绩:')) d ['Python'] = int (input ('请输入Python的成绩:')) d ['Java'] = int (input ('请输入Java的成绩:')) except: print('输入的信有误,重新输入!!') else: break file1.write(str(d)+'\\n') print('修改信成功!!!!!!!') else: file1.write(str(d)+'\\n') switch = input ('是否要修改信?y/n:') if switch == 'y': modify() (2)输出界面5、查找学生信
查询学生信函数代码部分,此函数主要功能是查询时分为按学号和按姓名查询两种,若查无此人则输出“l列表中无此学生信”。
(1)功能实现 def search(): //定义查找学生信函数 search_qurry=[] while True: id='' name='' if os.path.exists(filename): choice = int (input ('Id查询请按1,名字查询请按2:')) if choice == 1: id=int(input('请输入学生id:')) elif choice==2: name=input('请输入学生姓名:') else: print('输入有误,重新输入!') search() with open(filename,'r',encoding='utf-8') as file: student_lst=file.readlines() for item in student_lst: d = dict (eval (item)) if id!='': if d['id']==id: search_qurry.append(d) elif name!='': if d['name']==name: search_qurry.append(d) show_student(search_qurry) search_qurry.clear() a=input('是否继续查找?y/n:') if a=='y': continue else: break def show_student(lst): //显示学生成绩列表 if len(lst)==0: print('列表中无此学生的信') return student_title='{:^6}\\t{:^12}\\t{:^8}\\t{:^10}\\t{:^10}\\t{:^8}' print(student_title.format('ID','姓名','C语言成绩','Python成绩','Java成绩','绩点')) student_data='{:^6}\\t{:^12}\\t{:^8}\\t{:^8}\\t{:^8}\\t{:^8}' for item in lst: print(student_data.format(item.get('id'),item.get('name'),item.get('C语言'),item.get('Python'),item.get('Java'),round((int(item.get('C语言'))+int(item.get('Python'))+int(item.get('Java'))-180)/30,2))) print ('\\n') (2)输出界面 6、排序排序学生信函数功能是对学生信进行排序,排序方式可选择升序和降序,排序条件可选择按英C语言、Python、Java成绩以及三门成绩折算的绩点进行排序。
(1)功能实现 def sort(): show() if os.path.exists(filename): with open(filename,'r',encoding='utf-8')as file: student_lst=file.readlines() student_new=[] for item in student_lst: d=dict(eval(item)) student_new.append(d) else: return switch=input('排序方式(0.升序,1.降序)') if switch=='0': switch_bool=False elif switch=='1': switch_bool=True else: print('输入错误!') sort() choice=input('请选择排序方式(1.C语言成绩,2.Python成绩,3.Java成绩,4.绩点)') if choice=='1': student_new.sort(key=lambda x:int(x['C语言']),reverse=switch_bool) elif choice=='2': student_new.sort (key=lambda x: int (x ['Python']), reverse=switch_bool) elif choice=='3': student_new.sort (key=lambda x: int (x ['Java']), reverse=switch_bool) elif choice=='4': student_new.sort (key=lambda x: round((int (x ['C语言'])+int (x ['Python'])+int (x ['Java'])),2), reverse=switch_bool) else: print('选择错误!重新输入') sort() show_student(student_new) (2)输出界面 7、统计学生总人数统计学生总数函数代码部分,此函数主要是输出信管理系统存储数据文本文件中有几个学生的信。
(1)功能实现 def total(): if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as file: students=file.readlines() if students: print('系统内有{}个学生'.format(len(students))) else: print('系统内无学生记录!') else: print('暂未保存学生信!') (2)输出界面 8、显示所有学生信显示学生信函数代码部分,此函数是将文件存储的学生信全部显示出来(学号、姓名、C语言成绩、Python成绩、Java成绩、绩点)
(1)功能实现 def show_student(lst): if len(lst)==0: print('列表中无此学生的信') return student_title='{:^6}\\t{:^12}\\t{:^8}\\t{:^10}\\t{:^10}\\t{:^8}' print(student_title.format('ID','姓名','C语言成绩','Python成绩','Java成绩','绩点')) student_data='{:^6}\\t{:^12}\\t{:^8}\\t{:^8}\\t{:^8}\\t{:^8}' for item in lst: print(student_data.format(item.get('id'),item.get('name'), item.get('C语言'),item.get('Python'),item.get('Java'),round((int(item.get('C语言'))+int(item.get('Python'))+int(item.get('Java'))-180)/30,2))) print ('\\n') (2)输出界面 三、项目打包项目打包: 安装第三方模块:1,按win+R,输入cmd,打开cmd命令界面,
在线安装模式:pip install Pyinstaller
2,执行打包操作
pyinstaller -F E:\\PyhonProject\\Chap1\\system.py 四、总结如果有特殊要求,代码复制后可自行更改。相信看完后对Python的知识有更进一步的认识,希望对初学者和小白有一定的基础。谢谢!
版权声明:本文标题:Python:学习成绩管理系统 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686589893a85094.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论