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. SpringBoot_02_SpringBoot的配置文件

    1.SpringBoot配置文件 SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者appli ...

  2. windows环境下,svn未备份情况下重新恢复

    公司有个同事在未打招呼的情况下把公司服务器进行重新装系统,崩溃啊.SVN之前未备份,还好SVN的库(Repositories)还在,如下图: 恢复办法如下: 由于之前安装的就是VisualSVN-Se ...

  3. c语言学习笔记 - 文件操作

    #include <stdio.h>#include <time.h> int main(void){ time_t t;               //类似于size_t那 ...

  4. 左神算法进阶班8_1数组中累加和小于等于aim的最长子数组

    [题目] 给定一个数组arr,全是正数:一个整数aim,求累加和小于等于aim的,最长子数组,要求额外空间复杂度O(1),时间复杂度O(N) [题解] 使用窗口: 双指针,当sum <= aim ...

  5. 解决Couldn't resolve host 'mirrorlist.centos.org

    这个错误引起主要是因为环境读取不到yun引起的可以考虑/etc/sysconfig/network-scripts/ifcfg-eth0 配置出错导致网络不通.或者/etc/resolv.conf的D ...

  6. COCI2014/2015 Contest#1 D MAFIJA【基环树最大独立点集】

    T1725 天黑请闭眼 Online Judge:COCI2014/2015 Contest#1 D MAFIJA(原题) Label:基环树,断环+树形Dp,贪心+拓扑 题目描述 最近天黑请闭眼在 ...

  7. NtQuerySystemInformation 枚举进程

    函数原型: NTSTATUS WINAPI NtQuerySystemInformation(    _In_      SYSTEM_INFORMATION_CLASS SystemInformat ...

  8. mysqlbinlog: unknown variable 'default-character-set=utf8'

    [xxx@dbhost log]$ mysqlbinlog mysql-bin. mysqlbinlog: unknown variable 'default-character-set=utf8' ...

  9. hbuilder scss自动编译

    hbuilder 命令参数:  --no-cache %FileName% %FileBaseName%.css --style compact

  10. HZOI20190722 B visit 组合数+CRT合并

    题目:https://www.cnblogs.com/Juve/articles/11226266.html solution: 30%:dp 设dp[k][i][j]表示经过k时间,在(i,j)的方 ...