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. Apache Flink 1.9.0版本新功能介绍

    摘要:Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能.目前,Apache Flink 1.9 ...

  2. python下使用ElasticSearch

    一 什么是 ElasticSearch Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elas ...

  3. SpringBoot学习笔记(二):SpringBoot访问静态文件、捕获全局异常、集成Thymeleaf、集成JSP

    SpringBoot访问静态文件 什么是静态文件? 不需要通过web容器去得到的文件,直接通过路径就能得到的文件,比如项目的css,js,img等文件. 所有的资源文件都应该在src/main/res ...

  4. Linux 静态IP配置

    静态配置文件# vim /etc/sysconfig/network-scripts/ifcfg-不同系统不一样主要几个配置TYPE=EthernetBOOTPROTO=static/noneNAME ...

  5. python格式化输出%,while else

    一.格式化输出% 需求:自我介绍模板 #格式化输出 # % s d %占位符,占个位置 s(字符串),d(数字)替换内容的类型 name = input('请输入姓名:') age = input(' ...

  6. day72test

    目录 models模型类 路由配置 视图配置 序列化组件配置 基于ModelSerializer类,完成Car资源的单查,群查,单增接口 序列化:显示车名,车的颜色,车的价格,车的海报,车的品牌 反序 ...

  7. 关于mybatis对实体类参数绑定参数的问题

    dao层的代码: public interface SupplierMapper extends BaseMapper<SupplierDbo>{ /*List<SupplierDb ...

  8. python jieba模块详解

    借鉴于 [jieba 模块文档] 用于自己学习和记录! jieba 模块是一个用于中文分词的模块 此模块支持三种分词模式 精确模式(试图将句子最精确的切开,适合文本分析) 全模式(把句子在所有可以成词 ...

  9. [TJOI2017]城市 【树的直径+暴力+优化】

    Online Judge:Luogu P3761 Label:树的直径,暴力 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有n座城市,n-1条高速公路,保证了 ...

  10. Luogu P4932 浏览器(二进制)

    P4932 浏览器 题意 题目背景 __stdcall在用\(Edge\)玩\(slay\)的时候,鼠标会经常失灵,这让她十分痛苦,因此她决定也要让你们感受一下\(Edge\)制造的痛苦. 题目描述 ...