import os
import re #获取本机用户名,构建student.txt文件名创建在左面
import getpass
username=getpass.getuser()
print("当前登录用户名"+username)
filename="student.txt"
filename="C:\\Users\\"+username+"\\Desktop"+"\\"+filename
print(filename)
def main():
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=0
elif 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() def menu(): #first page
print(
"""
学生信息管理系统 ===============功能菜单===============
|
| 1 录入学生信息
| 2 查找学生信息
| 3 删除学生信息
| 4 修改学生信息
| 5 排序
| 6 统计学生总人数
| 7 显示所有学生信息
| 0 退出管理系统
=======================================
说明:通过数字或↑↓方向键选择菜单
"""
)
def insert(): #录入学生信息
studentlist=[]
mark=True
while mark:
id=input("请输入id如(1001):")
if not id:
break
name=input("请输入姓名")
if not name:
break
try:
english =int(input("请输入英语成绩"))
python = int(input("请输入python成绩"))
c = int(input("请输入c语言成绩"))
except:
print("输入成绩格式无效")
continue
student={"id":id,"name":name,"english":english,"python":python,"c":c}
studentlist.append(student)
inputmark=input("是否继续添加(Y/N):")
if inputmark=="Y" or inputmark=="y":
mark=1
else:
mark=0
print(studentlist)
save(studentlist)
print("学生信息录入完毕") def search():
mark=True
student_query=[]
while mark:
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 in student:
d=dict(eval(list))
if id is not "":
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" or inputmark=="Y":
mark=True
else:
mark=False
else:
print("暂未保存数据信息")
return
def delete():
mark=True
while mark:
studentid=input("请输入你要删除的学生id,如果输入为空则退出删除")
if studentid=="":
return 1
if studentid is not "": #此处判断输入是否为空,如果输入有效执行读取信息
if os.path.exists(filename):
with open(filename,"r") as rfile:
student_old=rfile.readlines()
else: #如过为获取到文件内容,则返回空列表。stuent_ol=[]=false
student_old=[]
ifdel=False
if student_old:
with open(filename,"w") as wfile:
d={}
for list in student_old:
d=dict(eval(list))
if d['id']!=studentid:
wfile.write(str(d)+"\n")
#此处相当于读取了所有学生信息,除了id为输入要删除的id以外,其他学生的信息全部重新写入
else: #如果 d['id']!=studentid ,那么ifdel=true,没有写入证明删除成功
ifdel=True
if ifdel:
print("id号为%s的学生信息已经删除"%studentid)
else:
print("没有找到id为%s的学生信息"%studentid)
else:
print("无学生信息")
break
show()
inputmark=input("是否继续删除(Y/N):")
if inputmark=="y" or inputmark=='Y':
mark=True
else:
mark=False
def modify():
show()
if os.path.exists(filename):
with open(filename,"r") as rfile:
student_old=rfile.readlines() else:
return
studentid=input("请输入你要修改的学生信息的id:")
with open(filename,"w") as wfile:
for student in student_old:
d=dict(eval(student))
if d['id']==studentid:
print("找到该学生id,可以修改信息")
while 1:
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" or mark == "Y":
modify()
else:
return 1 def sort():
show() #首先显示全部学生信息
if os.path.exists(filename):
with open(filename,"r") as file:
student_old=file.readlines()
student_new=[]
for list in student_old:
d=dict(eval(list))
student_new.append(d) #一个列表中的元素为字典,每个元素存储每个学生信息的字典
else:
return
ascordesc=input("请选择(0升序 / 1降序):")
if ascordesc=="0":
ascbool=False
if ascordesc=="1":
ascbool=True
else:
print("你的输入有误,请重新输入")
sort()
mode=input("""请选择排序方式(1 按英语成绩排序 2 按python成绩排序 3 按c语言成绩排序 0 按总成绩排序 )""")
if mode=="1":
student_new.sort(key=lambda x:x["english"],reverse=ascbool)
elif mode=="2":
student_new.sort(key=lambda x:x["python"],reverse=ascbool)
elif mode=="3":
student_new.sort(key=lambda x:x["c"],reverse=ascbool)
elif mode=="0":
student_new.sort(key=lambda x: x["english"]+x["python"]+x["c"], reverse=ascbool)
else:
print("输入有误,请重新输入")
sort()
show_student(student_new) def total():
if os.path.exists(filename):
with open(filename,"r") as rfile:
student_old=rfile.readlines()
if student_old:
print("一共有%d名学生"%len(student_old))
else:
print("还没有录入学生信息")
else:
print("暂时未保存数据信息")
def show():
student_new=[]
if os.path.exists(filename):
with open(filename,"r") as rfile:
student_old=rfile.readlines()
for list in student_old:
student_new.append(eval(list))
if student_new:
show_student(student_new)
else:
print("暂未找到数据信息")
def save(student):
try:
students_txt=open(filename,"a")
except Exception as e:
students_txt=open(filename,"w")
for info in student:
students_txt.write(str(info)+"\n")
students_txt.close()
def show_student(studentList):
if not studentList:
print("!!--无数据信息--!!\n")
return
format_title="{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"
print(format_title.format("id","姓名","英语成绩","python成绩","语言成绩","总成绩"))
format_data="{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}"
for info in studentList:
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("c")+info.get("python")).center(12)
))
main()

python学生管理系统的更多相关文章

  1. python开发的学生管理系统

    python开发的学生管理系统(基础版) #定义一个函数,显示可以使用的功能列表给用户 def showInfo(): print("-"*30) print(" 学生管 ...

  2. Python连接SqlServer+GUI嵌入式——学生管理系统1.0

    学生管理系统1.0 1.建学生数据库 2.数据库嵌入高级语言(Python) 3.界面设计 简化思路: 1.先通过SqlServer2012建立学生数据库,包括账号.密码,姓名.选课等信息 2.运用P ...

  3. 用python实现简易学生管理系统

    以前用C++和Java写过学生管理系统,也想用Python试试,果然“人生苦短,我用Python”.用Python写的更加简洁,实现雏形也就不到100行代码. 下面上代码 #!/usr/bin/pyt ...

  4. 如何用python做出老师看了都给满分的GUI学生管理系统毕设

    序 言 哈喽大家好鸭!我是小熊猫 最近有什么有趣的事情发生吗?快来说给我听听( •̀ ω •́ )✧表弟大学快毕业了,学了一个学期Python居然还不会写学生管理系统,真的给我丢脸啊,教他又不肯学,还 ...

  5. python简易版学生管理系统

    #coding=utf- def showInfo(): print("**************") print(" 学生管理系统") print(&quo ...

  6. 学生管理系统 Python语言

    def show_student(): print(('*'*20).center(55)) print('1.添加学生信息'.center(50)) print('2.修改学生信息'.center( ...

  7. 学生管理系统(python实现)

    # 定一个列表,用来存储所有的学生信息(每个学生是一个字典) info_list = [] def print_menu(): print("------------------" ...

  8. Python学习——实现文件交互的学生管理系统

    第一次用写博客,从前一直在博客园上学习,现在也来这里分享一下我的学习成果. 就开门见山的说吧.首先做了一个流程图,可能也不符合啥规范,就当草稿用,将就着看,明白个设计思路就行. 1.首先系统初始化,定 ...

  9. 饮冰三年-人工智能-Python-26 Django 学生管理系统

    背景:创建一个简单的学生管理系统,熟悉增删改查操作 一:创建一个Django项目(http://www.cnblogs.com/wupeiqi/articles/6216618.html) 1:创建实 ...

随机推荐

  1. 不同浏览器Cookie有效期问题

    昨天项目迁移了测试服务器,之后奇怪的问题出现了. IE.谷歌无法登陆,火狐可以登陆. 这个项目先后部署过两个测试服务器.一台正式服务器,登陆都是正常的,这次却突然出现这种奇怪的问题,很是纠结. 通过查 ...

  2. Consul 安装的与启动

    1.下载地址:https://www.consul.io/downloads.html linux 下载地址: wget https://releases.hashicorp.com/consul/0 ...

  3. Online开发初体验——Jeecg-Boot 在线配置图表

    Online开发——初体验(在线配置图表) 01 通过JSON数据,快速配置图形报表 02 通过SQL数据,快速配置图形报表 03 图表模板配置,实现不同数据源图表合并展示 04 图表布局,支持单排. ...

  4. Linux下c开发 之 线程通信

    Linux下c开发 之 线程通信 1.Linux“线程” 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身 ...

  5. XJOI夏令营501训练1——分配工作

    传送门:QAQQAQ 题意:某公司有工作人员x1,x2,…,xn ,他们去做工作y1,y2,…,ym(n<=m) ,每个人都能做其中的几项工作,并且对每一项工作都有一个固定的效率.问能否找到一种 ...

  6. Django之模板语言(三)------>自定义filter

    1.自定义filter: 1.在app01下面新建一个templatetags的python package包. 如果没有app01的话,可以通过命令行在manage中进行创建:python mana ...

  7. HandlerInterceptorAdapter或HandlerInterceptor的使用

    Spring拦截器 HandlerInterceptorAdapter需要继承,HandlerInterceptor需要实现 可以作为日志记录和登录校验来使用 建议使用HandlerIntercept ...

  8. HBase与传统关系数据库的对比分析

  9. shell下时间日期的加减乘除运算

    首先我们先来说说什么是shell下的时间戳: 自1970年1月1日(00:00:00 UTC/GMT)以来的秒数.它也被称为Unix时间戳(Unix Timestam.Unix epoch.POSIX ...

  10. 使用git命令从github上clone项目

    首先创建本地仓库(实际上就是创建一个文件夹,放项目代码),然后cd进文件夹, 初始化空的git仓库 注意:这里不初始化也是可以clone的 然后git clone url(url表示项目网址) 然后就 ...