基本架构
#----------------------python学生信息管理统---------------------#
需求设计:
1.添加学生的成绩信息
2.学生信息保存在文件夹中
3.修改及删除学生信息
4.查询学生的信息
5.根据学生的成绩进行排名
6.计算总成绩进行排列
基本系统设定
模块一:
学生成绩维护部分
1.录入学生信息
2.删除学生信息
3.修改学生信息
模块二:
查询/统计模块
1.按姓名查找
2.按学号查找
3查询显示所有学生的信息
4.统计学生总人数
模块三:
排序:
1。每门程序排列
2.综合成绩排列
内置模块 :re 、os
需要导入函数
import os
import re
界面模块
def menu():
print( " |-----------------------------学生信息管理系统-----------------------------|\n",
“| |\n”,
“| 1.学生信息录入 |\n”,
“| 2.学生信息修改 |\n”,
“| 3.学生信息查询 |\n”,
“| 4.学生信息删除 |\n”,
“| 5.排序 |\n”,
“| 6.统计总人数 |\n”,
“| 7. 显示所有学生的信息 |\n”,
“| 0.系统退出 |\n”,
“|--------------------------------------------------------------------------|\n”
" |-----------------------------说明:通过数字或上下方向键选择菜单-----------|")`
主程序部分 `
主程序部分 `
在这里插入代码片def main():
exit = True #标记是否退出
while(exit):
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("你已退出该系统")
exit = False
elif option_int == 1:
insert()
elif option_int == 2:
modify()
elif option_int == 3:
seach()
elif option_int == 4:
deleter()
'''
elif option_int == 5:
sort()
'''''
elif option_int == 6:
total()
elif option_int == 7:
show()`
## 学生信息加入
def insert():
studentlist = []
mark = True
while mark:
id = input("请输入你的id(如1001):")
if not id:
break
name = input("请输入你的名字:")
if not name:
break
age = input("请输入你的年龄:")
if not age:
break
try:
chinese_score = int(input("请输入你的语文成绩"))
math_score = int(input("请输入你的数学成绩"))
english_score = int(input("请输入你的英语成绩"))
except:
print("输入无效不是整型")
continue
student_dict = {"id":id,"name":name,"age":age,"chinese_score":chinese_score,"math_score":math_score,"english_score":english_score}
studentlist.append(student_dict)
inputmark = input("是否继续添加(Y/n):")
if inputmark == "Y":
mark = True
if inputmark == "n":
mark = False
save(studentlist)
print("学生信息录入完毕")
## 修改学生信息 ```
def modify():
show()
if os.path.exists("student_systeminfo.txt"):
with open("student_systeminfo.txt",'r') as rfile:
student_old = rfile.readlines()
else:
return
studentid = input("请输入你要修改的学生id:")
with open("student_systeminfo.txt","w") as wfile:
for student in student_old:
d = dict(eval(student))
if d["id"] == studentid:
print("已找到该名学生,是否进行修改")
while True:
try:
d["name"] = input("请输入姓名")
d["chinese_score"] = int(input("请输入你的语文成绩"))
d["math_score"] = int(input("请输入你的数学成绩"))
d["english_score"] = int(input("请输入你的英语成绩"))
except:
print("您输入的有误,请重新输入")
else:
break
student = str(d)
wfile.write(student+"\n")
print("修改成功")
else:
wfile.write(student)
mark = input("是否还需要修改其他学生的信息")
if mark == "y":
modify()
## 学生信息查找
def seach():
mark = True
student_query = []
while mark:
id = ""
name = ""
if os.path.exists("student_systeminfo.txt"):
mode = input("按id查找输入1,按姓名查找输入2:")
if mode == "1":
id = input("请输入学生的id:")
elif mode == "2":
name = input("请输入学生姓名:")
else:
print("输入错误")
seach()
with open("student_systeminfo.txt","r") as file:
student = file.readline()
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("是否继续查询(x/y)")
if inputMark == "y":
mark = True
else:
mark = False
else:
print("暂时未保存信息。。。")
return
## 学生包含信息显示
def show_student(studentlist):
if not studentlist:
print("无信息")
return
format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"
print(format_title.format("id","名字","chinese_score","语文成绩","math_score","数学成绩","english_score","英语成绩"))
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("chinese_score")),str(info.get("math_score")),str(info.get("english_score"))
str(info.get("chinese_score")+ info.get("math_score")+info.get("english_score").center(12))
def show():
student_new = []
if os.path.exists("student_systeminfo.txt"):
with open("student_systeminfo.txt","r") as rfile:
student_old = rfile.readline()
for list in student_old:
student_new.append(eval(list))
if student_new:
show_student(student_new)
else:
print("暂未保存数据信息")
## 学生信息删除
```def deleter():
mark = True
while mark:
student_id = input("请输入你要删除的学生id去的")
if student_id is not '':
if os.path.exists("student_systeminfo.txt"):#判断文件是否存在
with open("student_systeminfo.txt","r") as rfile:
student_old = rfile.readline()
else:
student_old = []
ifdel = False
if student_old:
with open("student_systeminfo.txt","w") as wfile:
d = {}
for list in student_old:
d = dict(eval(list))
if d['id'] != student_id:
wfile.write(str(d)+'\d')
else:
ifdel = True
if ifdel:
print("id为%s的学生已被删除"%student_id)
else:
print("没有找到id为%s的信息"%student_id)
else:
print("无信息。。。")
break
show()
inputMark = input("是否要继续删除?【y/n】:")
if inputMark == "y":
mark = True
else:
mark = False
## 学生信息排序模块
def sort()
## 成绩总和计算
def total():
if os.path.exists("student_systeminfo.txt"):
with open("student_systeminfo.txt","r") as rfile:
student_old = rfile.readline()
if student_old:
print("一共有%d个学生"%len(student_old))
else:
print("没有录入学生信息")
else:
print("暂未保存数据信息")
## 学生信息运行模块
if __name__=="__main__":
main()
## `源码`
#-*- codeing = utf-8 -*-
#@Time:2021/3/6 22:53
#@Author:publishment ghost
#@File:studentssystem.py
#@Software:PyCharm
#内置模块
import re #re模块为正则表达式
import os #os模块为提供多接口模式
#菜单模块
def menu():
print( " |-----------------------------学生信息管理系统-----------------------------|\n",
"| |\n",
"| 1.学生信息录入 |\n",
"| 2.学生信息修改 |\n",
"| 3.学生信息查询 |\n",
"| 4.学生信息删除 |\n",
"| 5.排序 |\n",
"| 6.统计总人数 |\n",
"| 7. 显示所有学生的信息 |\n",
"| 0.系统退出 |\n",
"|--------------------------------------------------------------------------|\n"
" |-----------------------------说明:通过数字或上下方向键选择菜单-----------|")
#主程序部分
def main():
exit = True #标记是否退出
while(exit):
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("你已退出该系统")
exit = False
elif option_int == 1:
insert()
elif option_int == 2:
modify()
elif option_int == 3:
seach()
elif option_int == 4:
deleter()
'''
elif option_int == 5:
sort()
'''''
elif option_int == 6:
total()
elif option_int == 7:
show()
def save(student):
try:
student_txt = open("student_systeminfo.txt","a")
except Exception as e:
student_txt = open("student_systeminfo.txt","w")
for info in student:
student_txt.write(str(info)+"\n")
student_txt.close()
def insert():
studentlist = []
mark = True
while mark:
id = input("请输入你的id(如1001):")
if not id:
break
name = input("请输入你的名字:")
if not name:
break
age = input("请输入你的年龄:")
if not age:
break
try:
chinese_score = int(input("请输入你的语文成绩"))
math_score = int(input("请输入你的数学成绩"))
english_score = int(input("请输入你的英语成绩"))
except:
print("输入无效不是整型")
continue
student_dict = {"id":id,"name":name,"age":age,"chinese_score":chinese_score,"math_score":math_score,"english_score":english_score}
studentlist.append(student_dict)
inputmark = input("是否继续添加(Y/n):")
if inputmark == "Y":
mark = True
if inputmark == "n":
mark = False
save(studentlist)
print("学生信息录入完毕")
def modify():
show()
if os.path.exists("student_systeminfo.txt"):
with open("student_systeminfo.txt",'r') as rfile:
student_old = rfile.readlines()
else:
return
studentid = input("请输入你要修改的学生id:")
with open("student_systeminfo.txt","w") as wfile:
for student in student_old:
d = dict(eval(student))
if d["id"] == studentid:
print("已找到该名学生,是否进行修改")
while True:
try:
d["name"] = input("请输入姓名")
d["chinese_score"] = int(input("请输入你的语文成绩"))
d["math_score"] = int(input("请输入你的数学成绩"))
d["english_score"] = int(input("请输入你的英语成绩"))
except:
print("您输入的有误,请重新输入")
else:
break
student = str(d)
wfile.write(student+"\n")
print("修改成功")
else:
wfile.write(student)
mark = input("是否还需要修改其他学生的信息")
if mark == "y":
modify()
def seach():
mark = True
student_query = []
while mark:
id = ""
name = ""
if os.path.exists("student_systeminfo.txt"):
mode = input("按id查找输入1,按姓名查找输入2:")
if mode == "1":
id = input("请输入学生的id:")
elif mode == "2":
name = input("请输入学生姓名:")
else:
print("输入错误")
seach()
with open("student_systeminfo.txt","r") as file:
student = file.readline()
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("是否继续查询(x/y)")
if inputMark == "y":
mark = True
else:
mark = False
else:
print("暂时未保存信息。。。")
return
def show_student(studentlist):
if not studentlist:
print("无信息")
return
format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"
print(format_title.format("id","名字","chinese_score","语文成绩","math_score","数学成绩","english_score","英语成绩"))
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("chinese_score")),str(info.get("math_score")),str(info.get("english_score"))
str(info.get("chinese_score")+ info.get("math_score")+info.get("english_score").center(12))
def deleter():
mark = True
while mark:
student_id = input("请输入你要删除的学生id去的")
if student_id is not '':
if os.path.exists("student_systeminfo.txt"):#判断文件是否存在
with open("student_systeminfo.txt","r") as rfile:
student_old = rfile.readline()
else:
student_old = []
ifdel = False
if student_old:
with open("student_systeminfo.txt","w") as wfile:
d = {}
for list in student_old:
d = dict(eval(list))
if d['id'] != student_id:
wfile.write(str(d)+'\d')
else:
ifdel = True
if ifdel:
print("id为%s的学生已被删除"%student_id)
else:
print("没有找到id为%s的信息"%student_id)
else:
print("无信息。。。")
break
show()
inputMark = input("是否要继续删除?【y/n】:")
if inputMark == "y":
mark = True
else:
mark = False
#def sort():
def total():
if os.path.exists("student_systeminfo.txt"):
with open("student_systeminfo.txt","r") as rfile:
student_old = rfile.readline()
if student_old:
print("一共有%d个学生"%len(student_old))
else:
print("没有录入学生信息")
else:
print("暂未保存数据信息")
def show():
student_new = []
if os.path.exists("student_systeminfo.txt"):
with open("student_systeminfo.txt","r") as rfile:
student_old = rfile.readline()
for list in student_old:
student_new.append(eval(list))
if student_new:
show_student(student_new)
else:
print("暂未保存数据信息")
if __name__=="__main__":
main()
运行程序
