小白学python,做了一个基础小系统,给大家分享一下(欢迎大神指导)
目录
步骤
1.设计要求
2.设计步骤
(1)导入os模块,创建一个文件夹用于存储数据
(2)定义一个菜单函数
(3)实现学生信息的录入功能
(4)定义了一个save函数用于录入功能的调用
(5)查询功能的实现
(6)定义一个show_student函数,用于数据显示的调用
(7)学生信息修改功能
(8)删除功能
(9)数据统计功能
(10)学生信息排序功能(这里可以按照ID和年龄进行升序和降序的排序)
(11)显示所有学生信息
(12)再调用main()函数就可以啦
创建一个简单的学生信息管理系统,要求实现对学生信息的增、删、改、查功能,数据存储以文件的形式进行存储。
具体代码:
import os.path filename='students.txt'
实现状态:
具体代码:
def main(): while True: print('********学生信息管理系统********') print('**----------菜 单-----------**') print('**-----1.【查询学生信息】-----**') print('**-----2.【添加学生信息】-----**') print('**-----3.【修改学生信息】-----**') print('**-----4.【删除学生信息】-----**') print('**-----5.【统计学生信息】-----**') print('**-----6.【学生信息排序】-----**') print('**-----7.【显示所有信息】-----**') print('**-----0.【退出管理系统】-----**') print('******************************') input_choose=input('请输入命令:') if input_choose=='1': select() elif input_choose=='2': insert() elif input_choose=='3': modify() elif input_choose=='4': delete() elif input_choose=='5': count() elif input_choose=='6': sort() elif input_choose=='7': show() elif input_choose=='0': print('系统已退出!') break
实现状态:
具体代码:
def insert(): stu_list=[] while True: print('-----正在添加学生信息-----') try: ID=int(input('请输入学号:')) name=input('请输入姓名:') gender=input('请输入性别:') age=int(input('请输入年龄:')) nation=input('名族:') address=input('省份:') except: print('输入不规范,请请重新输入') continue insert_student={'学号':ID,'姓名':name,'性别':gender,'年龄':age,'名族':nation,'省份':address} stu_list.append(insert_student) print('添加成功!') again_input=input('是否继续添加学生信息? Y(是)/N(否):') if again_input=='Y' or again_input=='y': continue else: break save(stu_list)
具体代码:
def save(lst): try: f=open(filename,'a',encoding='utf-8') except: f=open(filename,'w',encoding='utf-8') for item in lst: f.write(str(item)+'\n') f.close()
实现状态:
具体代码:
def select(): while True: input_id='' input_name='' stus_list=[] print('-----正在查询学生信息-----') if os.path.exists(filename): input_choose=input('1.【按照姓名查找】2.【按照学号查找】0.【退出查询】') if input_choose=='1': input_name=input('请输入学生姓名:') elif input_choose=='2': input_id=int(input('请输入学生学号:')) elif input_choose=='0': break else: print('没有该选项,请重新选择') continue with open('students.txt', 'r', encoding='utf-8') as f: names_list = f.readlines() for i in names_list: name_dict =dict(eval(i)) if input_name!='': if name_dict["姓名"]==input_name: stus_list.append(name_dict) elif input_id!='': if name_dict["学号"]==input_id: stus_list.append(name_dict) show_student(stus_list) stus_list.clear() again_input=input('是否继续查询?Y/N:') if again_input=='Y' or again_input=='y': continue else: print('已退出查询') break else: print('暂未存储任何学生信息') return
具体代码:
def show_student(lst): if len(lst)==0: print('没有学生信息') return #定义标题显示格式 format_title='{:^6}\t{:^10}\t{:^6}\t{:^6}\t{:^6}\t{:^6}' print(format_title.format('学号','姓名','性别','年龄','民族','省份')) print('--------------------------------------------------') #定义内容显示格式 format_data = '{:^6}\t{:^10}\t{:^6}\t{:^6}\t{:^6}\t{:^6}' for i in lst: print(format_data.format(i.get('学号'), i.get('姓名'), i.get('性别'), i.get('年龄'), i.get('名族'), i.get('省份')))
实现状态:
修改后查询:
具体代码:
def modify(): sele_list=[] print('------正在修改学生信息------') if os.path.exists(filename): with open(filename,'r',encoding='utf-8')as f: read_lists=f.readlines() else: return mod_student=int(input('请输入要修改的学生的ID:')) with open(filename,'w',encoding='utf-8')as wf: for i in read_lists: d=dict(eval(i)) if d['学号']==mod_student: print('已找到该学生信息:') sele_list.append(d) show_student(sele_list) while True: try: d['学号']=int(input('请修改id:')) d['姓名']=input('请修改姓名:') d['性别']=input('请修改性别:') d['年龄']=int(input('请修改年龄:')) d['名族']=input('请修改民族:') d['省份']=input('请修改省份:') except: print('输入不规范,请重新输入') else: break wf.write(str(d)+'\n') else: wf.write(str(d)+'\n') answer=input('是否继续修改?Y/N:') if answer=='Y' or answer=='y': modify()
实现状态:
具体代码:
def delete(): while True: print('---------正在执行删除功能----------') dele_stu = int(input('请输入要删除的学生的ID:')) if os.path.exists(filename): with open(filename,'r',encoding='utf-8')as rf: old_students=rf.readlines() else: old_students=[] flag=False if old_students: with open(filename,'w',encoding='utf-8')as wf: for i in old_students: d=dict(eval(i)) if d['学号']!=dele_stu: wf.write(str(d)+'\n') else: flag=True if flag: print('删除成功!') else: print(f'未找到ID为{dele_stu}的学生信息') else: print('系统暂无学生数据') result=input('是否还要删除学生信息?Y/N:') if result=='N'or result=='n': break
实现状态:(统计功能就简单做了个数量统计)
具体代码:
def count(): if os.path.exists(filename): with open(filename,'r',encoding='utf-8')as f: students=f.readlines() if students: print(f'一共有【{format(len(students))}】名学生信息.') else: print('暂无学生信息') else: print('系统暂无数据信息')
实现状态:
具体代码:
def sort(): while True: print('--------正在执行排序功能----------') if os.path.exists(filename): with open(filename,'r',encoding='utf-8')as rf: old_list=rf.readlines() new_list=[] for i in old_list: d=dict(eval(i)) new_list.append(d) else: return choose_sort=input('请选择排序方式:1【升序】2.【降序】') if choose_sort=='1': choose_sort_bool=False elif choose_sort=='2': choose_sort_bool=True else: print('没有该选项') break mode=input('请选择排序方式:1.【按ID排序】2.【按年龄排序】') if mode=='1': new_list.sort(key=lambda new_list:new_list['学号'],reverse=choose_sort_bool) elif mode=='2': new_list.sort(key=lambda new_list:new_list['年龄'],reverse=choose_sort_bool) else: print('没有该选项') break show_student(new_list) result=input('是否重新排序?Y/N:') if result=='N'or result=='n': break
实现状态:
具体代码:
def show(): all_list=[] if os.path.exists(filename): with open(filename,'r',encoding='utf-8')as rf: students=rf.readlines() for i in students: all_list.append(eval(i)) if students: show_student(all_list) else: print('系统暂无数据')
if __name__ == '__main__': main()