将编写好的程序编译成可执行文件
- 安装第三方工具(在线安装)pip install PyInstaller命令安装(如果pip找不到,就去你的python的安装目录的Scripts目录下找到pip的执行文件在文件目录栏中cmd进入即可)
- 将程序打包成exe的可执行文件:
pyinstaller -F 程序的目录地址(E:\baiduwanpan\python\chapter06\com.kusen\main.py)
![](https://img-blog.csdnimg.cn/20201204104232225.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2MjAxMg==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/2020120410432297.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2MjAxMg==,size_16,color_FFFFFF,t_70)
学习python练习程序 (学生管理系统)
import os
file_name = "student.txt"
def show():
# 读取文件中的数据
with open(file_name, 'r', encoding="utf-8") as fileName:
list = fileName.readlines()
if list:
print('id\t\t\t姓名\t\t\t年龄\t\t\t性别\t\t\t成绩')
for item in list:
d = dict(eval(item))
print(
d['stuid'] + '\t\t\t' + d['stuname'] + '\t\t\t' + d['stuage'] + '\t\t\t' + d['stusex'] + '\t\t\t' +
d['stucour'], )
else:
print("没有学生数据")
def update():
if os.path.exists(file_name):
with open(file_name, 'r', encoding='utf-8') as rfile:
stu_old = rfile.readlines()
else:
print("文件不存在")
return
stuid = input("请输入要修改的学员id:")
with open(file_name, 'w', encoding='utf-8') as wfile:
for item in stu_old:
d = dict(eval(item))
if d["stuid"] == stuid:
print("找了要修改的学生~~~~~")
d['stuname'] = input('请输入学生姓名:')
d['stuage'] = input('请输入学生年龄:')
d['stusex'] = input('请输入学生性别:')
d['stucour'] = input('请输入学生成绩:')
wfile.write(str(d) + "\n")
else:
wfile.write(str(d) + "\n")
result = input("是否还要修改学生数据(y/n):")
if result == 'y':
update()
def delstu():
while True:
stuid = input("请输入学生的id:")
if stuid != '':
# 对文件判断
if os.path.exists(file_name):
with open(file_name, 'r', encoding='utf-8') as file:
stu_list = file.readlines()
else:
stu_list = []
flag = False # 标记是否删除
if stu_list:
with open(file_name, 'w', encoding='utf-8') as wfile:
d = {}
for item in stu_list:
d = dict(eval(item)) # 将字符串的数据转成字典类型的数据
print(d['stuid'] != stuid)
if d['stuid'] != stuid:
wfile.write(str(d) + '\n')
else:
flag = True
if flag:
print(f'学生id为{stuid}的学生信息已被删除')
else:
print("没有找到该学生的信息!")
continue
else:
print("无学生数据")
break
show()
delf = input("是否继续删除学生信息(y/n):")
if delf == 'y':
continue
else:
break
def search():
if os.path.exists(file_name):
id = ""
name = ""
stu_list = []
flag = int(input("请选择查询方式:1:id查询、2:姓名查询"))
if flag == 1:
id = input("请输入学生的id:")
elif flag == 2:
name = input("请输入学生姓名:")
else:
print("输入有误,请重新输入~~~")
search()
with open(file_name, 'r', encoding='utf-8') as rfile:
list = rfile.readlines()
if id != "":
for item in list:
d = dict(eval(item))
if d["stuid"] == id:
stu_list.append(d)
if name != "":
for item in list:
d = dict(eval(item))
if d["stuname"] == name:
stu_list.append(d)
searchStu(stu_list)
else:
print("文件不存在")
return
def searchStu(list):
if len(list) == 0:
print("没有查询到学生数据")
else:
print('id\t\t\t姓名\t\t\t年龄\t\t\t性别\t\t\t成绩')
for d in list:
print(
d['stuid'] + '\t\t\t' + d['stuname'] + '\t\t\t' + d['stuage'] + '\t\t\t' + d['stusex'] + '\t\t\t' + d[
'stucour'], )
flag = input("是否继续查询学生(y/n):")
if flag == 'y':
search()
else:
print("退出查询学生信息")
def sort():
while True:
show()
rel = input("请输入排序方式:1:成绩排序 2:id排序")
acd_desc = input("请输入排序方式:1:升序 2:降序")
asc_desc_bool = False
if acd_desc == '1':
asc_desc_bool = True
with open(file_name, 'r', encoding='utf-8') as rfile:
source = rfile.readlines()
stu_list=[]
for item in source:
stu_list.append(dict(eval(item)))
if rel == '1':
stu_list.sort(key=lambda x: int(x['stucour']), reverse=asc_desc_bool)
else:
stu_list.sort(key=lambda x: int(x["stuid"]), reverse=asc_desc_bool)
print('id\t\t\t姓名\t\t\t年龄\t\t\t性别\t\t\t成绩')
for d in stu_list:
print(
d['stuid'] + '\t\t\t' + d['stuname'] + '\t\t\t' + d['stuage'] + '\t\t\t' + d['stusex'] + '\t\t\t' +
d['stucour'], )
flag = input("还要继续排序嘛(y/n)?")
if flag == 'y':
continue
else:
print("排序结束")
break
def save():
student_list = []
while True:
stuid = input("请输入学生id:")
stuname = input("请输入学生姓名:")
stuage = input("请输入学生年龄:")
stusex = input("请输入学生性别")
try:
stucour = input("请输入学生成绩:")
except:
print("输入有误!!")
continue
else:
student = {"stuid": stuid, "stuname": stuname, "stuage": stuage, "stusex": stusex, "stucour": stucour}
student_list.append(student)
flag = input("是否继续录入学生信息(y/n):")
if flag == 'y':
continue
else:
break
# 将数据保存到文件中
saveFile(student_list)
print("学生信息录入完毕!")
def saveFile(list):
try:
# 打开文件,以追加的方式来完成,文件存在的情况下
txt = open(file_name, 'a', encoding='utf-8')
pass
except:
# 打开文件,以写入的方式打开,文件不存在的情况下
txt = open(file_name, 'w', encoding='utf-8')
for itme in list:
txt.write(str(itme) + '\n')
txt.close() # 关闭文件
def count():
# 统计学生人数
if os.path.exists(file_name):
with open(file_name, 'r', encoding='utf-8') as rfile:
rel = rfile.readlines()
print('一共有' + str(len(rel)) + "名学生")
else:
print("文件不存在")
return
if __name__ == '__main__':
while True:
print("-----------使用学生管理系统-----------")
print("\t\t\t\t\t1.添加学生")
print("\t\t\t\t\t2.查询学生")
print("\t\t\t\t\t3.修改学生")
print("\t\t\t\t\t4.删除学生")
print("\t\t\t\t\t5.排序")
print("\t\t\t\t\t6.统计人数")
print("\t\t\t\t\t7.展示学生")
print("\t\t\t\t\t8.退出")
print("-----------------------------------")
resunt = int(input("请选择:"))
if resunt == 1:
save()
elif resunt == 2:
search()
elif resunt == 3:
update()
elif resunt == 4:
delstu()
elif resunt == 5:
sort()
elif resunt == 6:
count()
elif resunt == 7:
show()
elif resunt == 8:
str = input("请确认退出(y/n):")
if (str == 'y' or str == 'Y'):
print("感谢你的使用!!")
break
else:
continue