python编写学生成绩管理系统的逻辑结构及功能怎么实现
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇"python编写学生成绩管理系统的逻辑结构及功能怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,
千家信息网最后更新 2025年02月02日python编写学生成绩管理系统的逻辑结构及功能怎么实现
这篇"python编写学生成绩管理系统的逻辑结构及功能怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"python编写学生成绩管理系统的逻辑结构及功能怎么实现"文章吧。
学生信息系统
提示:python编写的学生成绩管理系统,包括8个功能和打包教程
一、功能界面
def menum(): print('==================student_manger=================') print('---------------------功能界面---------------------') print('\t\t1.录入学生信息') print('\t\t2.查找学生信息') print('\t\t3.删除学生信息') print('\t\t4.修改学生成绩') print('\t\t5.排序') print('\t\t6.统计学生总人数') print('\t\t7.显示所有学生信息') print('\t\t8.显示功能介绍按钮') print('\t\t0.退出') print('================================================')
二 、主函数
def main(): menum() while True: try: choice = int(input('请选择你想进行的操作: ')) except ValueError: print('输入的数据存在错误,只能输入0到7的整数!') try: choice = int(input('请重新输入: ')) except ValueError: print('重复输入错误,退出系统!') break if choice in [0, 1, 2, 3, 4, 5, 6, 7, 8]: if choice == 0: answer = input('你确定要退出系统吗?(Y/N): ') if answer == 'Y' or answer == 'y': print('谢谢使用!') break elif answer == 'N' or answer == 'n': print('即将返回上一步操作!') continue else: input('输入错误,即将返回主界面!') 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: menum() else: print('你选择的操作无效,请重新输入!:')
三 、学生信息录入功能
逻辑结构图
def insert(): student_list = [] id_list = [] while True: id = input('请输入ID: ') if not id: break name = input('请输入姓名:') if not name: break try: english = float(input('请输入英语成绩:')) math = float(input('请输入数学成绩:')) python = float(input('请输入Python成绩:')) except ValueError: print('数据输入错误!') continue # 将录入的学生信息存放到字典中 student = {'id': id, 'name': name, 'english': english, 'math': math, 'Python': python} # 将每个学生的信息存放在列表中 if student['id'] in id_list: # student['id'] = value(id) print('已存在相同ID:') for i in range(len(student_list)): if student_list[i][id] == student[id]: # 输出重复id元素 print(student_list[i].items()) break print('请重新录入!') else: id_list.append(str(student['id'])) student_list.append(student) # 是否继续添加学生信息 answer = input('是否继续添加学生信息?(Y/N): ') if answer == 'Y' or answer == 'y': continue elif answer == 'N' or answer == 'n': # 存储学生信息 save(student_list, filename) print('学生信息录入完毕!') break else: print('输入错误,即将返回主界面!') break
四 、学生信息查找功能
逻辑结构图
代码
def search(): while True: if os.path.exists(filename): with open(filename, 'r', encoding = 'utf-8') as s_file: student_qurey = s_file.readlines() # 将学生信息全部取出 id_list = [] name_list = [] for i in student_qurey: d = dict(eval(i)) id_list.append(d['id']) # 将所有学生的id存放在id_list中 name_list.append(d['name']) # 将所有学生的name存放在id_list中 try: mode = int(input('请选择查询模式: 1.按照ID查询 / 2.按照姓名查询 ')) except ValueError: print('数据类型输入错误!请重新输入!') else: if mode == 1: # 按照ID查询 id = input('请输入学生id: ') if id in id_list: print('已经查找到该名学生:') print('ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:') for item in student_qurey: if dict(eval(item))['id'] == id: p = dict(eval(item)) print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t {4}\t\t {5}'.format( p['id'], p['name'], p['english'], p['math'], p['Python'], float(p['english'])+float(p['math'])+float(p['Python']))) else: print('查无此人!') elif mode == 2: # 按照姓名查询 name = input('请输入学生姓名: ') if name in name_list: print('已经查找到该名学生:') print('ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:') for item in student_qurey: if dict(eval(item))['name'] == name: p = dict(eval(item)) print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t {4}\t\t {5}'.format( p['id'], p['name'], p['english'], p['math'], p['Python'], float(p['english']) + float(p['math']) + float(p['Python']))) else: print('查无此人!') else: print('输入错误,只能选择1/2两种模式!') answer = input('是否继续查询? (Y/N)') if answer == 'Y' or answer == 'y': continue elif answer == 'N' or answer == 'n': print('正在退出查询..') break else: print('输入错误,即将返回主界面!') break else: print('无学生信息文件!') return
五 、删除学生信息
逻辑结构图
代码
def delete(): while True: student_id = 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 wfile: for item in student_old: d = dict(eval(item)) # 转化为字典类型 if d['id'] != student_id: wfile.write(str(d)+'\n') else: flag = True if flag: print(f'id为{student_id}的学生信息已被删除!') else: print(f'没有找到id为{student_id}的学生信息!') else: print('无学生信息') break show() # 显示更新后的文件信息 answer = input('是否继续删除学生信息?(Y/N): ') if answer == 'Y' or answer == 'y': continue elif answer == 'N' or answer == 'n': break else: print('输入错误,即将返回主界面!') break
六 、学生信息修改功能
逻辑结构图
代码
def modify(): show() if os.path.exists(filename): with open(filename, 'r', encoding = 'utf-8') as rfile: student_old = rfile.readlines() # 直接将文本文件的内容整行读取到列表中 else: print('学生文件信息不存在!') student_id = input('请输入想要修改的学生的ID: ') with open(filename, 'w', encoding = 'utf-8') as just_file: # 判断学生是否在该系统中 id_list = [] for i in student_old: d = dict(eval(i)) id_list.append(d['id']) # 将所有学生的id存放在id_list中 if student_id in id_list: # 要修改的学生存在时 for item in student_old: e = dict(eval(item)) if e['id'] == student_id: print('已找到该名学生!') while True: try: e['name'] = input('请输入姓名: ') e['english'] = input('请输入英语成绩: ') e['math'] = input('请输入数学成绩: ') e['Python'] = input('请输入Python成绩: ') except ValueError: print('数据类型输入错误!请重新输入!') else: break # try...except..else: 输入为出错时,执行else语句 just_file.write(str(e) + '\n') print('修改成功!') else: just_file.write(str(e) + '\n') else: answer1 = input('查无此人!,是否执行插入操作? (Y/N)') if answer1 == 'Y' or answer1 == 'y': insert() else: print('结束当前操作') answer = input('是否继续修改其余学生信息?(Y/N): ') if answer == 'Y' or answer == 'y': modify() elif answer == 'N' or answer == 'n': print('结束修改,即将返回主界面..') else: print('输入错误,即将返回主界面!')
七 、学生成绩排序
逻辑结构图
代码
def sort(): student_new = [] if os.path.exists(filename): with open(filename, 'r', encoding = 'utf-8') as sort_file: student_list = sort_file.readlines() # 无序的学生信息列表 for item in student_list: d = dict(eval(item)) student_new.append(d) # 列表元素转化为字典 while True: try: sort_choice = int(input('请选择排序方式: 0:升序 / 1:降序\t')) except ValueError: print('输入的数据类型错误,请重新输入') else: if sort_choice == 0: Flag = False break elif sort_choice == 1: Flag = True break else: print('输入错误,只能在0/1中选择!') continue while True: try: asc_choice = int(input('请选择按照哪一门成绩进行排序: 英语:0 / 数学:1 / python:2\t\t')) except ValueError: print('输入的数据类型错误,请重新输入') else: if asc_choice == 0: student_new.sort(key = lambda x: int(x['english']), reverse = Flag) # 根据列表中的元素进行排序 show() break elif asc_choice == 1: student_new.sort(key = lambda x: int(x['math']), reverse = Flag) show() break elif asc_choice == 2: student_new.sort(key = lambda x: int(x['Python']), reverse = Flag) show() break elif asc_choice == 3: student_new.sort(key = lambda x: int(x['Python'])+int(x['english'])+int(x['math']), reverse = Flag) show() break else: print('输入错误,只能在0/1/2中选择!') continue else: print('学生信息文件不存在!')
八 、 学生人数统计
逻辑结构图
代码
def total(): nums = 0 if os.path.exists(filename): with open(filename, 'r', encoding = 'utf-8') as t_file: len_list = t_file.readlines() for i in range(len(len_list)): if len_list[i] != '': nums += 1 print('当前学生总人数为: ', nums) print('请选择你想进行的下一步操作: ') else: print('暂无学生信息文件')
九 、显示所有学生信息
逻辑结构图
代码
def show(): if os.path.exists(filename): with open(filename, 'r', encoding = 'utf-8') as show_file: student_list = show_file.readlines() if student_list: print('----全部学生信息如下----') print('ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:') for item in student_list: p = dict(eval(item)) print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t {4}\t\t {5}'.format( p['id'], p['name'], p['english'], p['math'], p['Python'], float(p['english']) + float(p['math']) + float(p['Python']))) else: print('暂无学生信息!') else: print('暂无学生信息!')
程序打包
在 pycharm 终端 或者 python命令界面, 使用:
pip install PyInstaller
下载python打包程序,下载完成后, 执行以下操作:
pyinstaller —F F:\xxxx\xxx\xx\x.py
其中:
-F 代表将程序打包为单个exe文件,
F:\xxx\xxx\xx.py 为你的学生成绩管理系统文件的绝对地址
打包完成后,提示信息倒数第二行:Appending语句后面即为exe文件位置,若无特殊显示,则在当前目录父文件下
以上就是关于"python编写学生成绩管理系统的逻辑结构及功能怎么实现"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
学生
输入
信息
成绩
错误
功能
结构
逻辑
文件
系统
界面
选择
姓名
结构图
查询
代码
内容
数学
数据
英语
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全防护技术与控制
软件开发项目上线
海珠区软件开发难吗
win7建dns服务器
2022赛季服选哪个服务器
数据库文件隐藏还能读写吗
文摘或者引文数据库优缺点
关于网络技术的会议
was服务器部署
马来西亚政府网络安全
数据库实验五复杂查询
洛阳理工学院软件开发
宁波web前端软件开发招聘
蓝谷海洋科技互联网平台
饥荒服务器管理员命令刷物品
网络技术安全保障
数据库不可为空语句
4u服务器性能
10万元并发服务器
lora网关做服务器
数据库包括哪些优化
恒聚互联网科技有限公司
和邮政快递有关的数据库系统
浙江正规软件开发配件
先锋数据库
数据库的状态位应该用什么类型
数据库MySQL毕业设计选题
软件开发类国家标准
杭州服务器淘汰公司哪家好
数据库新技术项目报告