项目1-学生信息管理系统
1.需求分析
学生信息管理系统应具备的功能:
- 添加学生及成绩信息
- 将学生信息保存到文件中
- 修改和删除学生信息
- 查询学生信息
- 根据学生成绩进行排序
- 统计学生的总分
2.系统设计
系统功能结构,学生信息管理系统的7大模块:
- 录入学生信息模块
- 查找学生信息模块
- 删除学生信息模块
- 修改学生信息模块
- 学生成绩排名模块
- 统计学生总人数模块
- 显示全部学生信息模块
3.主函数设计
创建了一个,Student_Information_main.py的文件作为主程序。将其他各个功能作为模块使用,通过主程序调用各个功能模块来实现相应功能;
import Student_Information_exit import Student_Information_insert import Student_Information_delete import Student_Information_modify import Student_Information_search import Student_Information_total import Student_Information_show import Student_Information_sort def student_information_menum(): #定义学生信息展示 print("===========================学生信息管理系统================================") print("-------------------------------功能菜单----------------------------------") print("\t\t\t\t\t\t\t1.录入学生信息") print("\t\t\t\t\t\t\t2.查找学生信息") print("\t\t\t\t\t\t\t3.删除学生信息") print("\t\t\t\t\t\t\t4.修改学生信息") print("\t\t\t\t\t\t\t5.排序") print("\t\t\t\t\t\t\t6.统计学生总人数") print("\t\t\t\t\t\t\t7.显示所有学生信息") print("\t\t\t\t\t\t\t0.退出系统") print("-----------------------------------------------------------------------") def student_information_main(): while True: student_information_menum() try: choice = int(input("请选择功能菜单编号....:")) if choice in [0, 1, 2, 3, 4, 5, 6, 7]: pass except: print("你输入有误!!!!!") else: if choice == 0: #调用退出系统模块 Student_Information_exit.student_information_exit() elif choice == 1: #调用录入学生信息系统模块 Student_Information_insert.student_information_insert() elif choice == 2: Student_Information_search.student_information_search() elif choice == 3: #调用删除学生信息模块 Student_Information_delete.student_information_delete() elif choice == 4: #调用修改学生信息模块 Student_Information_modify.student_information_modify() elif choice == 5: Student_Information_sort.student_information_sort() elif choice == 6: Student_Information_total.student_information_total() elif choice == 7: Student_Information_show.student_information_show() if __name__ == "__main__": student_information_main()
3.1退出程序模块
创建Student_Information_exit文件,实现退出系统功能
import sys def student_information_exit(): answer = input("你确定要退出系统吗?y/n") if answer == 'y' or answer == 'Y': print("谢谢你的使用") sys.exit()
3.2录入学生信息模块
从控制台中录入学生信息,并把他们的信息保存到文件中。
具体实现:
- save(student)函数,用于将学生信息保存到文件中
- insert()函数,用于录入学生信息学生
创建Student_Information_insert文件,实现学生信息录入和保存到文件的功能,代码如下:
filename = 'student.txt' def student_information_insert(): #定义学生录入信息函数 student_information_list = [] while True: id = input("请输入学生id(如:1001):") if not id: print("你输入的有误,请重新输入!") continue name = input("请输入学生姓名:") if not name: print("你输入的有误,请重新输入!") continue try: english = input("请输入英语成绩:") math = input("请输入数学成绩:") chinese = input("请输入语文成绩:") except: print("你输入的有误,请重新输入!") continue student_information = {'id':id,'name':name,'english':english,'math':math,'chinese':chinese} student_information_list.append(student_information) answer = input("你确认要退出输入吗?y/n") if answer == 'y' or answer == 'Y': break else: continue #insert函数调用save函数 student_information_save(student_information_list) print("学生信息录入完毕!!!") def student_information_save(lst): #如果文件存储则追加,如果不存在则创建写入 try: stu_txt = open(filename,'a+') except: stu_txt = open(filename,'w') for item in lst: stu_txt.write(str(item) + '\n') stu_txt.close()
3.3 删除学生信息模块
从控制台中录入学生ID,到磁盘文件中找到相应学生信息,并将其删除。
创建Student_Information_delete文件,实现学生信息删除功能,代码如下:
import os filename = 'student.txt' def student_information_delete(): while True: student_id = input("请输入要删除的学生ID:") if student_id != '': if os.path.exists(filename): with open(filename,'r') as student_file: student_list = student_file.readlines() #读取student.txt文件并赋值给student_list变量,是一个列表形式 else: student_list = [] flag = False #标记是否为删除 if student_list: with open(filename,'w') as write_student_file: d={} for item in student_list: d = dict(eval(item)) #将字符串转成字典 if d['id'] != student_id: #通过获取字典id与用户输入id进行比较 write_student_file.write(str(d) + '\n') else: flag = True if flag: print(f"ID为{student_id}的学生信息已经删除") else: print(f"没有找到ID为{student_id}的学生信息") else: print("无学生信息!!") break answer = input("是否还继续删除?y/n") if answer == 'y' or answer == 'Y': continue else: break
3.4修改学生信息模块
从控制台中录入学生ID,到磁盘文件中找到相应学生信息,并将其修改。
创建Student_Information_modify文件,实现学生信息删除功能,代码如下:
import os filename = 'student.txt' def student_information_modify(): while True: student_id = input("请输入要修改的学生ID:") if student_id != '': if os.path.exists(filename): with open(filename, 'r') as student_file: student_list = student_file.readlines() # 读取student.txt文件并赋值给student_list变量,是一个列表形式 else: return if student_list: with open(filename, 'w') as write_student_file: d = {} for item in student_list: d = dict(eval(item)) # 将字符串转成字典 if d['id'] == student_id: # 通过获取字典id与用户输入id进行比较 print("找到了学生信息,可以修改他的相关信息!") try: d['name'] = input("请输入学生姓名:") d['english'] = input("请输入英语成绩:") d['math'] = input("请输入数学成绩:") d['chinese'] = input("请输入语文成绩:") except: print("输入有误请重新输入!!!") write_student_file.write(str(d) + '\n') else: print("没有学员信息!!!") answer = input("是否还继续修改?y/n") if answer == 'y' or answer == 'Y': continue else: break
3.5查询学生信息功能
从控制台中输入学生ID或姓名,到磁盘文件中找到对应学生信息
创建Student_Information_search文件,实现学生信息查询,代码如下:
import os filename = 'student.txt' def student_information_search(): query_list = [] while True: id = '' name = '' if os.path.exists(filename): model = input("按ID查找请输入1,按姓名查找请输入2: ") if model == '1': id = input("请输入学员ID:") elif model == '2': name = input("请输入学员姓名") else: print("你输入的有误,请重新输入!!!") with open(filename,'r') as student_file: student_list = student_file.readlines() #读取student.txt文件并赋值给student_list变量,是一个列表形式 for item in student_list: d = dict(eval(item)) #将字符串转成字典 if id != '': if d['id'] == id: query_list.append(d) elif name != '': if d['name'] == name: query_list.append(d) #显示查询结果 show_student(query_list) #清空列表 query_list.clear() answer = input("是否还继续查找学生信息?y/n") if answer == 'y' or answer == 'Y': continue else: break def show_student(lst): if len(lst) == 0: print("没有学员信息....") #定义标题显示格式 format_tile = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^9}\t{:^6}' print(format_tile.format('ID','姓名','英语成绩','数学成绩','语文成绩','总成绩')) #定义内容显示格式 format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^14}\t{:^13}' for item in lst: print(format_data.format(item['id'],item['name'],item['english'],item['math'],item['chinese'],int(item['english'])+int(item['math'])+int(item['chinese'])))
3.6统计学生总人数
根据保存学生信息文件,统计学生人数,中心思想就是判断列表长度
创建Student_Information_total文件,实现学生信息查询,代码如下
import os filename = 'student.txt' def student_information_total(): if os.path.exists(filename): with open(filename,'r') as student_file: student_list = student_file.readlines() #读取student.txt文件并赋值给student_list变量,是一个列表形式 if student_list: print(f"一共有{len(student_list)}名学生") else: print("还没有录入学员信息....") else: print("学员信息暂未保存......")
3.7显示所有学生信息
创建Student_Information_show文件,实现展示学生信息,代码如下
import os filename = 'student.txt' def student_information_show(): student = [] if os.path.exists(filename): with open(filename,'r') as student_file: student_list = student_file.readlines() #读取student.txt文件并赋值给student_list变量,是一个列表形式 for item in student_list: student.append(eval(item)) if student: show_student(student) def show_student(lst): if len(lst) == 0: print("没有学员信息....") # 定义标题显示格式 format_tile = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^9}\t{:^6}' print(format_tile.format('ID', '姓名', '英语成绩', '数学成绩', '语文成绩', '总成绩')) # 定义内容显示格式 format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^14}\t{:^13}' for item in lst: print(format_data.format(item['id'], item['name'], item['english'], item['math'], item['chinese'],int(item['english']) + int(item['math']) + int(item['chinese'])))
3.8成绩排序
主要是针对英语,数学,语文,总成绩进行升序降序排序
创建Student_Information_sort文件,实现学生信息排序,代码如下
import os import Student_Information_show filename = 'student.txt' def student_information_sort(): Student_Information_show.student_information_show() if os.path.exists(filename): with open(filename,'r') as student_file: student_list = student_file.readlines() #读取student.txt文件并赋值给student_list变量,是一个列表形式 new_student_list = [] for item in student_list: d = dict(eval(item)) new_student_list.append(d) else: return asc_or_desc = input("请选择‘0’升序或‘1’降序:") if asc_or_desc == '0': asc_or_desc_bool = False elif asc_or_desc == '1': asc_or_desc_bool = True else: print("输入有误,请重新输入") student_information_sort() model = input("请选择排序方式,‘1.按英语排序’,‘2.按数学排序’,‘3.按语文排序’,‘0.按总成绩排序’") if model == '1': new_student_list.sort(key=lambda x: int(x['english']),reverse=asc_or_desc_bool) elif model == '2': new_student_list.sort(key=lambda x: int(x['math']), reverse=asc_or_desc_bool) elif model == '3': new_student_list.sort(key=lambda x: int(x['chinese']), reverse=asc_or_desc_bool) elif model == '0': new_student_list.sort(key=lambda x: int(x['chinese'])+int(x['english'])+int(x['math']), reverse=asc_or_desc_bool) else: print("输入有误,请重新输入!!!!!") student_information_sort() show_student(new_student_list) def show_student(lst): if len(lst) == 0: print("没有学员信息....") # 定义标题显示格式 format_tile = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^9}\t{:^6}' print(format_tile.format('ID', '姓名', '英语成绩', '数学成绩', '语文成绩', '总成绩')) # 定义内容显示格式 format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^14}\t{:^13}' for item in lst: print(format_data.format(item['id'], item['name'], item['english'], item['math'], item['chinese'],int(item['english']) + int(item['math']) + int(item['chinese'])))
4.项目打包生成exe可执行文件
- 在线安装PyInstaller模块
# pip install PyInstaller
2. 执行打包操作
pyinstaller -F 主程序python文件
不积跬步,无以至千里;不积小流,无以成江海。