使用python怎么制作一个学生信息管理系统
使用python怎么制作一个学生信息管理系统?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Python主要用来做什么
Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。
需求分析
本程序需要用到os模板首先导入,并命名要存储信息的文件
import osFile_Object_Name = 'Student_Inforation.txt'
三、主函数
def Main(): while True: Menu() _Select = int(input('Please select operation:')) if _Select in [0, 1, 2, 3, 4, 5, 6, 7]: if _Select == 0: _Answer = input('Do you want to log out?(Y/N)') if _Answer == 'Y' or _Answer == 'y': print('Thank for you use!!!') break pass else: continue pass pass elif _Select == 1: Insert_Infor() pass elif _Select == 2: Search_Infor() pass elif _Select == 3: Delete_Infor() pass elif _Select == 4: Change_Infor() pass elif _Select == 5: Sort() pass elif _Select == 6: Count_Total_Num() pass elif _Select == 7: Show_Infor() pass pass else: print('Error Input!!!') pass
四、功能菜单
def Menu(): print('=========Student Information Management System=========') print('---------------------Function menu---------------------') print(' 1、Input Student Information') print(' 2、Search Student Information') print(' 3、Delete Student Information') print(' 4、Change Student Information') print(' 5、Sort According to Score') print(' 6、Count Total Student Number') print(' 7、Show All Student Information') print(' 0、Log Out') print('-------------------------------------------------------') pass
五、录入信息
def Insert_Infor(): Student_Infor_List = [] # 创建一个学生信息空列表,后面会用到 while True: Stu_Id = input('Please input the id(such as 1001,1002):') if not Stu_Id: # 空的字符串转为bool类型为False,非空为True,此处若是输入为空会直接跳出循环。(空列表、字典、元组等都满足) break pass Stu_Name = input('Please input the name:') if not Stu_Name: break pass try: English_Score = int(input('Please input the English score:')) Python_Score = int(input('Please input the Python score:')) Java_Score = int(input('Please input the Java score:')) pass except: print('Error Input(not int),please input again') continue pass # 将每个学生的信息放入一个字典当中 Student_Infor_Dict = {'Id': Stu_Id, 'Name': Stu_Name, 'English': English_Score, 'Python': Python_Score, 'Java': Java_Score} # 将一个字典作为一个元素放入学生信息列表 Student_Infor_List.append(Student_Infor_Dict) # 使用 append() 方法来添加列表项 _Answer = input('Whether to input more?(Y/N)') if _Answer == 'Y' or _Answer == 'y': continue pass else: break pass pass # 将学生信息列表中的字典元素保存到文件之中,调用Keep_Infor()函数 Keep_Infor(Student_Infor_List) print('Input Finished') pass
六、保存信息
def Keep_Infor(List): File_Object = open(File_Object_Name, mode='a', encoding='utf-8') # 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 for item in List: File_Object.write(str(item)+'\n') pass # 将传入的列表中的字典元素强制转换成字符串类型并拼接上换行符写入文件 File_Object.close()
七、查找信息
def Search_Infor(): Student_Query = [] # 空列表,之后用于存放查找到的学生信息 while True: Student_Id = '' Student_Name = '' if os.path.exists(File_Object_Name): # os.path模块主要用于文件的属性获取,os.path.exists()就是判断括号里的文件是否存在,括号内的可以是文件路径/名。 Search_Mode = int(input('search by id(1) or by name(2):')) if Search_Mode == 1: Student_Id = input('Please input id:') pass elif Search_Mode == 2: Student_Name = input('Please input name:') pass else: print('Error Input,try again!') Search_Infor() pass with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: # 只读模式打开文件并将类对象赋给File_Object Student_List = File_Object.readlines() # readlines()按行读取,一次性读取所有内容,返回一个列表,每一行内容作为一个元素 for item in Student_List: # 遍历列表中元素 _Dict = eval(item) # 由于是以字符串类型保存到文件中,此时item相当于'dict'形式,要将其用eval()函数转换为字典,即脱掉''。 if Student_Id: # 如果选的是按照姓名查找,则此空字符串已经不再为空,bool类型为True if Student_Id == _Dict['Id']: Student_Query.append(_Dict) pass pass elif Student_Name: if Student_Name == _Dict['Name']: Student_Query.append(_Dict) pass pass pass if Student_Query == []: # 仍为空说明未找到。 print('no such student,try again') Search_Infor() # 再次调用函数 pass pass pass else: print('Still no such file to keep student information!') pass print(Student_Query[0]) # 此时该列表中只有一个字典元素,直接打印输出 Student_Query.clear() # 调用内置函数清空列表,方便下次使用 _Answer = input('Whether to search others?(Y/N)') if _Answer == 'Y' or _Answer == 'y': continue pass else: return pass pass
八、删除信息
def Delete_Infor(): while True: Student_Id = input('Please input the student‘s id that you want to delete:') if Student_Id: if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File1: Old_Student_Infor = File1.readlines() # 读取每行作为元素放入Old_Student_Infor列表 pass pass else: Old_Student_Infor = [] pass Flag = False # 是否删除成功的标志 if Old_Student_Infor: with open(File_Object_Name, 'w', encoding='utf-8')as File2: _Dict = {} for item in Old_Student_Infor: _Dict = eval(item) # 将删除信息之前的列表元素转化为字典形式赋给_Dict if _Dict['Id'] != Student_Id: File2.write(str(_Dict)+'\n') # 如果与要删除的信息的Id不同,覆盖写入原文件 pass else: Flag = True # 如果相同的话,则不写入文件中,相当于删除成功 pass pass if Flag: print('Student information of {} has been delete'.format(Student_Id)) pass else: print('Can not find student of id:{}'.format(Student_Id)) pass pass pass else: print('file have no student information') break pass Show_Infor() _Answer = input('Whether to delete more?(Y/N)') pass if _Answer == 'Y' or _Answer == 'y': continue pass else: break pass pass pass
九、修改信息
def Change_Infor(): Show_Infor() if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as old_file: Old_Student_Infor = old_file.readlines() pass pass else: return Student_Id = input('Please input the id you wanna change:') if Student_Id: with open(File_Object_Name, 'w', encoding='utf-8')as new_file: for item in Old_Student_Infor: _dict = dict(eval(item)) if _dict['Id'] == Student_Id: print('Find it,can change it!') while True: try: _dict['Name'] = input('Please input new name:') _dict['English'] = input('Please input new English score:') _dict['Python'] = input('Please input new Python score:') _dict['Java'] = input('Please input new Java score:') pass except: print('Error Input!!!Try again') pass new_file.write(str(_dict)+'\n') print('Successfully change!') break pass pass else: print('Can‘t find it') new_file.write(str(_dict)+'\n') pass pass pass pass _Answer = input('Whether to change more?(Y/N)') if _Answer == 'y' or _Answer == 'Y': Change_Infor() pass else: return pass
十、显示信息
def Show_Infor(): Infor_List = [] if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: Stu_List = File_Object.readlines() for item1 in Stu_List: Infor_List.append(dict(eval(item1))) pass if Infor_List: for item2 in Infor_List: print(item2) pass pass else: print('no student') pass pass pass else: print('no such file') pass pass
十一、按成绩排序
def Sort(): Show_Infor() Infor_List = [] if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: Student_List = File_Object.readlines() for item in Student_List: _Dict = dict(eval(item)) Infor_List.append(_Dict) pass pass pass else: print('no such file') return Sort_Mode = bool(input('Please input sort mode(0、ascending order|1、descending order)')) if not Sort_Mode: # ascending order reverse_mode = True pass else: # descending order reverse_mode = False pass Specific_Sort_Mode = int(input('Sort by English(1),by Python(2),by Jave(3),by total(4):')) if Specific_Sort_Mode == 1: Infor_List.sort(key=lambda x: int(x['English']), reverse=reverse_mode) pass elif Specific_Sort_Mode == 2: Infor_List.sort(key=lambda x: int(x['Python']), reverse=reverse_mode) pass elif Specific_Sort_Mode == 3: Infor_List.sort(key=lambda x: int(x['Java']), reverse=reverse_mode) pass elif Specific_Sort_Mode == 4: Infor_List.sort(key=lambda x: int(x['English']) + int(x['Python']) + int(x['Java']), reverse=reverse_mode) pass else: print('Error Input,try again') Sort() pass for item in Infor_List: print(item) pass pass
sort()函数原型: list.sort(key=None, reverse=False)
key参数 :
key接受的是一个只有一个形参的函数,形式如下
def f(a):
return len(a)
key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序
reverse参数 :
reverse接受的是一个bool类型的值 (Ture or False),表示是否颠倒排列顺序,一般默认的是False
十二、统计人数
def Count_Total_Num(): if os.path.exists(File_Object_Name): with open(File_Object_Name, 'r', encoding='utf-8')as File_Object: Stu_List = File_Object.readlines() _Count = len(Stu_List) if _Count >= 2: print('A total of {} students') pass elif _Count ==1: print('A single student!') pass else: print('no student!') pass pass pass else: print('still no such file!') pass pass
十三、最后记得运行主函数
Main()
十四、将程序打包成可执行exe文件
cmd进入command界面
输入pip install PyInstaller
安装完成后仍在cmd界面输入pyinstaller -F py为扩展名的文件路径\文件名.py
操作后将会有一大串代码,倒数第二行会有最终文件的保存地址,打开之后将之前编译程序生成的txt文件移入该文件夹中即可操作
关于使用python怎么制作一个学生信息管理系统问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341