小白学python,做了一个基础小系统,给大家分享一下(欢迎大神指导)
目录
步骤
1.设计要求
创建一个简单的学生信息管理系统,要求实现对学生信息的增、删、改、查功能,数据存储以文件的形式进行存储。
2.设计步骤
(1)导入os模块,创建一个文件夹用于存储数据
具体代码:
import os.path
filename='students.txt'
(2)定义一个菜单函数
实现状态:
具体代码:
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
(3)实现学生信息的录入功能
实现状态:
具体代码:
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)
(4)定义了一个save函数用于录入功能的调用
具体代码:
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()
(5)查询功能的实现
实现状态:
具体代码:
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
(6)定义一个show_student函数,用于数据显示的调用
具体代码:
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('省份')))
(7)学生信息修改功能
实现状态:
修改后查询:
具体代码:
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()
(8)删除功能
实现状态:
具体代码:
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
(9)数据统计功能
实现状态:(统计功能就简单做了个数量统计)
具体代码:
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('系统暂无数据信息')
(10)学生信息排序功能(这里可以按照ID和年龄进行升序和降序的排序)
实现状态:
具体代码:
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
(11)显示所有学生信息
实现状态:
具体代码:
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('系统暂无数据')
(12)再调用main()函数就可以啦
if __name__ == '__main__':
main()
文章出处登录后可见!
已经登录?立即刷新