#_*_ coding:utf-8 _*_

import re #导入正则表达式模块

import os #导入操作系统模块

filename= "students.txt" #定义保存学生信息的文件名

defmenu():#输出菜单

print('''╔———————学生信息管理系统————————╗

│ │

│ =============== 功能菜单 =============== │

│ │

│ 1 录入学生信息 │

│ 2 查找学生信息 │

│ 3 删除学生信息 │

│ 4 修改学生信息 │

│ 5 排序 │

│ 6 统计学生总人数 │

│ 7 显示所有学生信息 │

│ 0 退出系统 │

│ ========================================== │

│ 说明:通过数字或↑↓方向键选择菜单 │

╚———————————————————————╝''')defmain():

ctrl= True #标记是否退出系统

while(ctrl):

menu()#显示菜单

option = input("请选择:") #选择菜单项

option_str = re.sub("\D", "", option) #提取数字,去除字符串空格

if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']:

option_int=int(option_str)if option_int == 0: #退出系统

print('您已退出学生成绩管理系统!')

ctrl=Falseelif option_int == 1: #录入学生成绩信息

insert()elif option_int == 2: #查找学生成绩信息

search()elif option_int == 3: #删除学生成绩信息

delete()elif option_int == 4: #修改学生成绩信息

modify()elif option_int == 5: #排序

sort()elif option_int == 6: #统计学生总数

total()elif option_int == 7: #显示所有学生信息

show()'''1 录入学生信息'''

definsert():

stdentList= [] #保存学生信息的列表

mark = True #是否继续添加

whilemark:

id= input("请输入ID(如 1001):")if not id: #ID为空,跳出循环

breakname= input("请输入名字:")if not name: #名字为空,跳出循环

break

try:

english= int(input("请输入英语成绩:"))

python= int(input("请输入Python成绩:"))

c= int(input("请输入C语言成绩:"))except:print("输入无效,不是整型数值....重新录入信息")continuestdent= {"id": id, "name": name, "english": english, "python": python, "c": c} #将输入的学生信息保存到字典

stdentList.append(stdent) #将学生字典添加到列表中

inputMark = input("是否继续添加?(y/n):")if inputMark == "y": #继续添加

mark =Trueelse: #不继续添加

mark =False

save(stdentList)#将学生信息保存到文件

print("学生信息录入完毕!!!")#将学生信息保存到文件

defsave(student):try:

students_txt= open(filename, "a") #以追加模式打开

exceptException as e:

students_txt= open(filename, "w") #文件不存在,创建文件并打开

for info instudent:

students_txt.write(str(info)+ "\n") #按行存储,添加换行符

students_txt.close() #关闭文件

'''2 查找学生成绩信息'''

defsearch():

mark=True

student_query= [] #保存查询结果的学生列表

whilemark:

id= ""name= ""

if os.path.exists(filename): #判断文件是否存在

mode = input("按ID查输入1;按姓名查输入2:")if mode == "1":

id= input("请输入学生ID:")elif mode == "2":

name= input("请输入学生姓名:")else:print("您的输入有误,请重新输入!")

search()#重新查询

with open(filename, 'r') as file: #打开文件

student = file.readlines() #读取全部内容

for list instudent:

d= dict(eval(list)) #字符串转字典

if id is not "": #判断是否按ID查

if d['id'] ==id:

student_query.append(d)#将找到的学生信息保存到列表中

elif name is not "": #判断是否按姓名查

if d['name'] ==name:

student_query.append(d)#将找到的学生信息保存到列表中

show_student(student_query) #显示查询结果

student_query.clear() #清空列表

inputMark = input("是否继续查询?(y/n):")if inputMark == "y":

mark=Trueelse:

mark=Falseelse:print("暂未保存数据信息...")return

'''3 删除学生成绩信息'''

defdelete():

mark= True #标记是否循环

whilemark:

studentId= input("请输入要删除的学生ID:")if studentId is not "": #判断要删除的学生是否存在

if os.path.exists(filename): #判断文件是否存在

with open(filename, 'r') as rfile: #打开文件

student_old = rfile.readlines() #读取全部内容

else:

student_old=[]

ifdel= False #标记是否删除

if student_old: #如果存在学生信息

with open(filename, 'w') as wfile: #以写方式打开文件

d = {} #定义空字典

for list instudent_old:

d= dict(eval(list)) #字符串转字典

if d['id'] !=studentId:

wfile.write(str(d)+ "\n") #将一条学生信息写入文件

else:

ifdel= True #标记已经删除

ififdel:print("ID为 %s 的学生信息已经被删除..." %studentId)else:print("没有找到ID为 %s 的学生信息..." %studentId)else: #不存在学生信息

print("无学生信息...")break #退出循环

show() #显示全部学生信息

inputMark = input("是否继续删除?(y/n):")if inputMark == "y":

mark= True #继续删除

else:

mark= False #退出删除学生信息功能

'''4 修改学生成绩信息'''

defmodify():

show()#显示全部学生信息

if os.path.exists(filename): #判断文件是否存在

with open(filename, 'r') as rfile: #打开文件

student_old = rfile.readlines() #读取全部内容

else:returnstudentid= input("请输入要修改的学生ID:")

with open(filename,"w") as wfile: #以写模式打开文件

for student instudent_old:

d= dict(eval(student)) #字符串转字典

if d["id"] == studentid: #是否为要修改的学生

print("找到了这名学生,可以修改他的信息!")while True: #输入要修改的信息

try:

d["name"] = input("请输入姓名:")

d["english"] = int(input("请输入英语成绩:"))

d["python"] = int(input("请输入Python成绩:"))

d["c"] = int(input("请输入C语言成绩:"))except:print("您的输入有误,请重新输入。")else:break #跳出循环

student = str(d) #将字典转换为字符串

wfile.write(student + "\n") #将修改的信息写入到文件

print("修改成功!")else:

wfile.write(student)#将未修改的信息写入到文件

mark = input("是否继续修改其他学生信息?(y/n):")if mark == "y":

modify()#重新执行修改操作

'''5 排序'''

defsort():

show()#显示全部学生信息

if os.path.exists(filename): #判断文件是否存在

with open(filename, 'r') as file: #打开文件

student_old = file.readlines() #读取全部内容

student_new =[]for list instudent_old:

d= dict(eval(list)) #字符串转字典

student_new.append(d) #将转换后的字典添加到列表中

else:returnascORdesc= input("请选择(0升序;1降序):")if ascORdesc == "0": #按升序排序

ascORdescBool = False #标记变量,为False表示升序排序

elif ascORdesc == "1": #按降序排序

ascORdescBool = True #标记变量,为True表示降序排序

else:print("您的输入有误,请重新输入!")

sort()

mode= input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):")if mode == "1": #按英语成绩排序

student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)elif mode == "2": #按Python成绩排序

student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)elif mode == "3": #按C语言成绩排序

student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)elif mode == "0": #按总成绩排序

student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)else:print("您的输入有误,请重新输入!")

sort()

show_student(student_new)#显示排序结果

'''6 统计学生总数'''

deftotal():if os.path.exists(filename): #判断文件是否存在

with open(filename, 'r') as rfile: #打开文件

student_old = rfile.readlines() #读取全部内容

ifstudent_old:print("一共有 %d 名学生!" %len(student_old))else:print("还没有录入学生信息!")else:print("暂未保存数据信息...")'''7 显示所有学生信息'''

defshow():

student_new=[]if os.path.exists(filename): #判断文件是否存在

with open(filename, 'r') as rfile: #打开文件

student_old = rfile.readlines() #读取全部内容

for list instudent_old:

student_new.append(eval(list))#将找到的学生信息保存到列表中

ifstudent_new:

show_student(student_new)else:print("暂未保存数据信息...")#将保存在列表中的学生信息显示出来

defshow_student(studentList):if notstudentList:print("(o@.@o) 无数据信息 (o@.@o) \n")returnformat_title= "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"

print(format_title.format("ID", "名字", "英语成绩", "Python成绩", "C语言成绩", "总成绩"))

format_data= "{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}"

for info instudentList:print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),

str(info.get("c")),

str(info.get("english") + info.get("python") + info.get("c")).center(12)))if __name__ == "__main__":

main()

python项目主界面_python项目案例相关推荐

  1. python网络安全工具箱界面_Python开发案例:设计启动工具箱,显示图形界面的方式...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于云+社区,作者 用户2870857 转载地址 https://bl ...

  2. python页面自动化测试代码覆盖率_Python项目在Jenkins中的自动化测试实践(语法检查、单元测试,coverage(代码覆盖率)、自动打包)...

    requirments OS: Ubuntu 14.04+ Gitlab 8.1 + Jenkins 2.19.0 + 使用Jenkins对Python项目进行自动化测试主要依赖nose(单元测试). ...

  3. python基础课程设计项目_python项目

    泉州信息工程学院 软件学院 课程设计报告书 课程名:python课程设计 课程设计项目名称:基于Django的中餐厅网站的设计与实现 团队成员: 刘冬华.杨艺萍 一.项目简介 1.1 项目博客地址 1 ...

  4. python实现语音播放_Python学习案例之Web版语音合成播报

    前言 语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速.音调.音量设置,打破传统文字式人机交互的方式,让人机沟通更自然. 应用场景 将游戏场景中的公告.任务或派单信息通过语音 ...

  5. python制作软件界面_python界面设计工具Qtdesigner

    QtDesigner Qtdesigner是python中的界面设计工具.创建的界面保存为ui类型的文件,再用Pyuic工具把UI界面文件转化为py代码. 安装PyQt5-tools 先要安装pyqt ...

  6. python成绩登录界面_python实现登录界面

    关注公众号:Python爬虫数据分析挖掘,回复[开源源码]免费获取更多源码 本例,展示了通过登录界面打开主界面的实现方式. 其中,登录的账号与密码判断都比较简单,请大家根据自己需要,自行完善补充. [ ...

  7. python制作窗口界面_python爬虫如何制作可视化界面?(pyqt5环境配置篇)

    却道天凉好个秋~ pyqt5+python+qtdesigner+pycharm制作一个可视化的GUI爬虫工具 前言: 最近闲来无聊又开始了py之路,这次需要的是制作一个贴吧的关键词搜索相关帖子的工具 ...

  8. 汉化python语言编程界面_python设置中文界面实例方法

    下面,小编将通过一组实例演示,让大家更直观,更清楚明白的了解要设置中文这一内容的操作步骤. 首先展示实例代码: import pygame from pygame.locals import * de ...

  9. python软件运行界面_python运行界面 python的图形用户界面怎么运行

    为什么用Python开发界面应用程序 1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidgets好用,而不是为了可以移植. 2)Py ...

最新文章

  1. win8系统服务器地址怎么查,win8服务器地址怎么查
  2. Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法...
  3. 【英语学习】【Daily English】U06 Shopping L01 We are out of pasta.
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的电影购票系统
  5. 基建管控系统_催生智慧园区三维管控系统解决方案,新基建背景下构建可视化监控平台...
  6. 51nod 1274 最长递增路径(DP)
  7. [Vue warn]: Cannot find element: #main
  8. 2013.8.4thinkPHp学习
  9. linux cp覆盖每次都有提示
  10. 嵌入式Linux_ARM裸机_ARM汇编指令用法说明1:global/ldr,str/mcr,mrc/bic,orr/bl b/ 汇编写延时
  11. 3D游戏模型之鼻子的建模
  12. WebPack+React.Js+BootStrap 实现进制转换工具
  13. ChatGPT介绍以及一些使用案例
  14. 我爬取交通学博士分享的GIS资源
  15. 四川多多开店:拼多多如何获取好的评价
  16. Qt笔记(四十一)之qtcreator添加pri文件
  17. 牛客网sql练习题解(22-32)
  18. MACbook安装双系统,启动转换助理提示“需要64位windows10或更高版本的ISO文件”
  19. 【Android】自定义FlowLayout,支持多种布局优化--android-flowlayout
  20. scrapy简单爬取内容

热门文章

  1. fatal error: nsync_cv.h: No such file or directory
  2. Bitmap和YUV的转换
  3. java 文档注释不显示泛型_使用Swagger进行说明 - 使用泛型时无法生成文档资源模型...
  4. hive load data inpath 空目录_走近大数据之Hive进阶(一、Hive数据的导入)
  5. 一次数据库泄露的解决经历
  6. qt c语言程序运行时间,c – 在Qt中计时事件的最佳方法
  7. 用g++编译生成动态连接库*.so的方法及连接(dlopen() dlsym() dlclose())
  8. matlab mnl,LaTex中插入VISO 和 MATLAB 经验总结
  9. 计算机组成原理DMA方式原理,计算机组成原理4(程序查询方式、程序中断方式、DMA方式及其I/O接口电路)...
  10. 初识好朋友计算机课件,初识电脑朋友.ppt