Python程序设计之 —— 简易学生信息管理系统
大家好,我是 Enovo飞鱼,今天分享一个 Python程序设计之 —— 简易学生信息管理系统 ,小白或者正在学习Python的小伙伴推荐阅读,加油💪。
目录
Java程序设计之(一)MySQL的交互-学生信息成绩管理系统:
http://t.csdn.cn/JKoQIhttp://t.csdn.cn/JKoQI
前言
Python 简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
-
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
-
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
-
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
-
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
Python 特点
-
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
-
2.易于阅读:Python代码定义的更清晰。
-
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
-
4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
-
5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
-
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
-
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
-
8.数据库:Python提供所有主要的商业数据库的接口。
-
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
-
10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
一、项目来源及背景
学生信息管理系统是学生在每学年记录学生升学,转学,退学等的主要应用,具有较强的实用性,贴近实际,便于完成系统的分析与设计,适用于多用户。
二、功能设计
实现一个学生信息的管理系统:主要功能有:
-
添加学生信息
-
删除学生信息
-
查询学生信息
-
统计学生总人数
-
显示所有学生信息
-
排序(以总成绩分数)
-
退出学生信息管理系统
三、步骤分析
-
显示功能界面
-
用户输入功能序号
-
对不同序号的功能实现具体函数
3.1 定义函数
3.2 调用函数
四、需求实现
-
显示功能界面 menu()
-
用户输入程序指令 choice = int(input('请输入您的程序指令:'))
-
按照用户输入的功能序号,执行不同的功能(函数)
-
添加学生信息 insert()
-
删除学生信息 delete()
-
查询学生信息 search()
-
统计学生总人数
total() -
显示所以学生信息 show()
-
排序(以总成绩分数)sort()
-
退出学生信息管理系统 if choice == 0:
五、具体代码
系统功能进行循环使用,直到用户输入0,退出系统。
功能界面部分:
def menu(): print('==============================学生信息管理系统==============================') print('︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽功能菜单︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽') print("*" * 74) print("******", " " * 60, "******") print("******\t 1.添加学生信息", " " * 18, "4.统计学生总人数\t\t ******") print("******\t 2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t ******") print("******\t 3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t ******") print("******\t 0.退出学生信息管理系统", " " * 18, "\t\t\t\t\t******") print("******", " " * 60, "******") print("*" * 74) print('︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾')def save(lst): stu_txt = open(fileName, 'a', encoding='utf-8') for item in lst: stu_txt.write(str(item) + '\n') stu_txt.close()
主要部分代码:
# 定义函数main()def main(): while True: menu() choice = int(input('请输入您的程序指令:')) if choice in [0, 1, 2, 3, 4, 5, 6]: if choice == 0: print("您确定要退出吗?yes/no") answer = input() if answer == 'yes': print('感谢您的使用!!!') break # 终止 else: continue # 中止 elif choice == 1: insert() elif choice == 2: delete() elif choice == 3: search() elif choice == 4: total() elif choice == 5: show() elif choice == 6: sort() else: print('输入的指令不在范围内,请重新输入!!!')
那么根据上面的代码,需要实现具体的功能函数,主要功能代码部分如下:
4.1 添加学生信息
# 录入学生信息def insert(): global phone student_list = [] while True: id = input('请输入学号: ') if not id: break name = input('请输入姓名: ') if not name: break sex = input('请输入性别: ') if not sex: break # phone = input('请输入手机号: ') # if not phone: count = 0 for i in range(1, 4): phone = input("请输入你的手机号: ") # 利用正则表达式进行限定 tel = re.match(r"^1[3456789]\d{9}$", phone) if tel: print("输入成功!") break if tel != phone: count += 1 if (count == 3): print("录入失败,请30秒后重试!") if (count != 3): print("录入错误,请核对你的手机号!") try: # 智育分满分70分,德育分满分20分,体育分满分10分 zyf = int(input('请输入你的智育分:')) dyf = int(input('请输入你的德育分:')) tyf = int(input('请输入你的体育分:')) except: print('请您输入数字成绩!') continue # 将录入的学生信息保存到字典中 student = {'id': id, 'name': name, 'sex': sex, 'phone': phone, 'zyf': zyf, 'dyf': dyf, 'tyf': tyf} # 将学生信息添加到列表中 # 可删!!!!! student_list.append(student) answer = input('是否继续添加?yes/no\n') if answer == 'yes': continue else: break # 保存学生信息 save(student_list) # 封装 print('学生信息录入完毕!!!')
4.2 删除学生信息
# 删除学生信息def delete(): while True: student_id = input('请输入要删除学生的学号:') 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: d = {} 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'学号为{student_id}的学生信息已经删除') else: print(f'学生表中没有找到学号为{student_id}的学生') else: print('学生表已中无任何学生个人信息') break show() # 重新显示所有学生信息 answer = input('是否继续删除?yes/no\n') if answer == 'yes': continue else: break print('删除学生信息已结束,请你进行下一步操作!!!')
4.3 查询学生信息
# 查询学生信息def search(): while True: stu_query = [] id = '' # 判断文件是否存在 if os.path.exists(fileName): # if的使用 if id == '': id = input('请输入要查找的学生学号:') else: print('您的输入有误,请重新输入!') continue # 如果文件存在,并且用户输入了正确的查询标号,则打开文件 with open(fileName, 'r', encoding='utf-8') as rfile: students = rfile.readlines() # 转换为字典类型 for item in students: d = dict(eval(item)) if id != '': if id == d['id']: stu_query.append(d) # 追加 # 显示查询结果 show_student(stu_query) # 是否继续查询其他学生信息 answer = input('还要查询其他学生吗?yes/no\n') if answer == 'yes': continue else: break else: print('学生信息不存在!') return print('学生信息查询结束,请进行下一步操作!!!')
4.4 统计学生总人数
# 统计学生总人数def total(): # 判断文件是否存在,如果存在则打开文件,读取信息 if os.path.exists(fileName): with open(fileName, 'r', encoding='utf-8') as rfile: students = rfile.readlines() # 判断读取到的学生信息是否为空 if students: print('一共有{}名学生'.format(len(students))) else: print('学生系统中还没有录入学生信息!') else: print('学生信息不存在!') return print('学生总人数统计完毕,请进行下一步操作!!!')
4.5 显示所有学生信息
# 显示所有学生信息def show(): student_list = [] # 判断文件是否存在,如果存在则打开文件,读取信息 if os.path.exists(fileName): with open(fileName, 'r', encoding='utf-8') as rfile: students = rfile.readlines() # 判断读取到的学生信息是否为空 if students: for item in students: student_list.append(eval(item)) # 展示学生信息 show_student(student_list) else: print('学生文件中还没有录入学生信息!') else: print('学生文件不存在!') return print('学生信息已成功显示,请你进行下一步操作!!!')
排序 (以总成绩分数)
# 对总学生成绩进行排序def sort(): # 判断文件是否存在,如果存在则打开文件,读取信息 if os.path.exists(fileName): with open(fileName, 'r', encoding='utf-8') as rfile: students_list = rfile.readlines() students_new = [] # 判断读取到的学生信息是否为空 if students_list: # 将所有的item加入到students_new中 for item in students_list: d = dict(eval(item)) students_new.append(d) # 利用匿名函数与sort方法进行排序 # True为降序,False升序 students_new.sort(key=lambda x: int(x['zyf']) + int(x['dyf']) + int(x['tyf']), reverse=True) # 将排序后的成绩进行输出 show_student(students_new) print('学生信息排序完成并成功显示,请你进行下一步操作!!!')
五、运行效果
如上图所示可以看到我们的运行效果,及示例,并且我们输入的信息会存入一个文本文件,那怎么实现的呢?请看下方代码
# 建立一个名为student.text的文本用于保存文件fileName = 'student.txt'
六、完整代码
# 导入模块import osimport re# 建立一个名为student.text的文本用于保存文件fileName = 'student.txt'# 定义函数main()def main(): while True: menu() choice = int(input('请输入您的程序指令:')) if choice in [0, 1, 2, 3, 4, 5, 6]: if choice == 0: print("您确定要退出吗?yes/no") answer = input() if answer == 'yes': print('感谢您的使用!!!') break # 终止 else: continue # 中止 elif choice == 1: insert() elif choice == 2: delete() elif choice == 3: search() elif choice == 4: total() elif choice == 5: show() elif choice == 6: sort() else: print('输入的指令不在范围内,请重新输入!!!')def menu(): print('==============================学生信息管理系统==============================') print('︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽功能菜单︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽') print("*" * 74) print("******", " " * 60, "******") print("******\t 1.添加学生信息", " " * 18, "4.统计学生总人数\t\t ******") print("******\t 2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t ******") print("******\t 3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t ******") print("******\t 0.退出学生信息管理系统", " " * 18, "\t\t\t\t\t******") print("******", " " * 60, "******") print("*" * 74) print('︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾')def save(lst): stu_txt = open(fileName, 'a', encoding='utf-8') for item in lst: stu_txt.write(str(item) + '\n') stu_txt.close()# 录入学生信息def insert(): global phone student_list = [] while True: id = input('请输入学号: ') if not id: break name = input('请输入姓名: ') if not name: break sex = input('请输入性别: ') if not sex: break # phone = input('请输入手机号: ') # if not phone: count = 0 for i in range(1, 4): phone = input("请输入你的手机号: ") # 利用正则表达式进行限定 tel = re.match(r"^1[3456789]\d{9}$", phone) if tel: print("输入成功!") break if tel != phone: count += 1 if (count == 3): print("录入失败,请30秒后重试!") if (count != 3): print("录入错误,请核对你的手机号!") try: # 智育分满分70分,德育分满分20分,体育分满分10分 zyf = int(input('请输入你的智育分:')) dyf = int(input('请输入你的德育分:')) tyf = int(input('请输入你的体育分:')) except: print('请您输入数字成绩!') continue # 将录入的学生信息保存到字典中 student = {'id': id, 'name': name, 'sex': sex, 'phone': phone, 'zyf': zyf, 'dyf': dyf, 'tyf': tyf} # 将学生信息添加到列表中 # 可删!!!!! student_list.append(student) answer = input('是否继续添加?yes/no\n') if answer == 'yes': continue else: break # 保存学生信息 save(student_list) # 封装 print('学生信息录入完毕!!!')def show_student(lst): # 传过来空列表 if len(lst) == 0: print('没有查找到该生信息!') return # 定义标题显示格式 format_title = '{:^5}\t{:^23}{:^5}\t{:^11}\t{:^12}\t{:^10}\t{:^10}\t{:^6}\t{:^6}\t' print(format_title.format('学号', '姓名', '性别', '手机号', '智育分', '德育分', '体育分', '总成绩', '分数等级')) # 定义内容的显示格式 format_data = '{:^6}\t{:^6}\t{:^6}\t{:^31}{:^3}\t{:^10}\t{:^9}\t{:^12}\t{:^12}\t' for item in lst: sum = int(item['zyf']) + int(item['dyf']) + int(item['tyf']) # grade等级的使用 grade = '' if sum >= 85: grade = 'A' if 75 <= sum < 85: grade = 'B' if 65 <= sum < 75: grade = 'C' if 60 <= sum < 65: grade = 'D' if sum < 60: grade = 'error' # sum,grade的输出格式不同 # format_data.format(sum,grade)) print(format_data.format(item['id'], item['name'], item['sex'], item['phone'], item['zyf'], item['dyf'], item['tyf'], sum, grade)) print('全部学生信息显示完毕!!!')# 查询学生信息def search(): while True: stu_query = [] id = '' # 判断文件是否存在 if os.path.exists(fileName): # if的使用 if id == '': id = input('请输入要查找的学生学号:') else: print('您的输入有误,请重新输入!') continue # 如果文件存在,并且用户输入了正确的查询标号,则打开文件 with open(fileName, 'r', encoding='utf-8') as rfile: students = rfile.readlines() # 转换为字典类型 for item in students: d = dict(eval(item)) if id != '': if id == d['id']: stu_query.append(d) # 追加 # 显示查询结果 show_student(stu_query) # 是否继续查询其他学生信息 answer = input('还要查询其他学生吗?yes/no\n') if answer == 'yes': continue else: break else: print('学生信息不存在!') return print('学生信息查询结束,请进行下一步操作!!!')# 删除学生信息def delete(): while True: student_id = input('请输入要删除学生的学号:') 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: d = {} 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'学号为{student_id}的学生信息已经删除') else: print(f'学生表中没有找到学号为{student_id}的学生') else: print('学生表已中无任何学生个人信息') break show() # 重新显示所有学生信息 answer = input('是否继续删除?yes/no\n') if answer == 'yes': continue else: break print('删除学生信息已结束,请你进行下一步操作!!!')# 统计学生总人数def total(): # 判断文件是否存在,如果存在则打开文件,读取信息 if os.path.exists(fileName): with open(fileName, 'r', encoding='utf-8') as rfile: students = rfile.readlines() # 判断读取到的学生信息是否为空 if students: print('一共有{}名学生'.format(len(students))) else: print('学生系统中还没有录入学生信息!') else: print('学生信息不存在!') return print('学生总人数统计完毕,请进行下一步操作!!!')# 显示所有学生信息def show(): student_list = [] # 判断文件是否存在,如果存在则打开文件,读取信息 if os.path.exists(fileName): with open(fileName, 'r', encoding='utf-8') as rfile: students = rfile.readlines() # 判断读取到的学生信息是否为空 if students: for item in students: student_list.append(eval(item)) # 展示学生信息 show_student(student_list) else: print('学生文件中还没有录入学生信息!') else: print('学生文件不存在!') return print('学生信息已成功显示,请你进行下一步操作!!!')# 对总学生成绩进行排序def sort(): # 判断文件是否存在,如果存在则打开文件,读取信息 if os.path.exists(fileName): with open(fileName, 'r', encoding='utf-8') as rfile: students_list = rfile.readlines() students_new = [] # 判断读取到的学生信息是否为空 if students_list: # 将所有的item加入到students_new中 for item in students_list: d = dict(eval(item)) students_new.append(d) # 利用匿名函数与sort方法进行排序 # True为降序,False升序 students_new.sort(key=lambda x: int(x['zyf']) + int(x['dyf']) + int(x['tyf']), reverse=True) # 将排序后的成绩进行输出 show_student(students_new) print('学生信息排序完成并成功显示,请你进行下一步操作!!!')if __name__ == '__main__': main()
上述内容就是我们,Python学生信息管理系统 的全部内容了,希望可以得到大家的支持!
以上就是课程实践作业—— 学生信息管理系统 的全部程序设计分析及相关代码,供大家学习使用,希望可以帮助到大家!如果各位有疑问的话,欢迎私信,发现错误,也希望可以指出,共同改进学习,加油💪!
获取源码?私信?关注?点赞?收藏?
👍+✏️+⭐️+🙇
有需要源码的小伙伴可以 关注下方微信公众号 " Enovo开发工厂 ",回复 关键词 " python-m1 "
来源地址:https://blog.csdn.net/m0_63244368/article/details/128820177
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341