python学习日记(学生信息管理系统完整版)

1.前言

居家隔离DAY2

2.学习内容

 filename='student.txt'
 import os
 def main():
     while True:
         menu()
         choice=int(input('请选择'))
         if choice in [0,1,2,3,4,5,6,7]:
             if choice==0:
                 answer=input('您确定要退出系统嘛?y/n')
                 if answer=='y' or answer=='Y':
                     print('谢谢您的使用')
                     break#退出系统
                 else:
                     continue
             elif choice==1:
                 insert()#录入学生信息
             elif choice==2:
                 search()#查找学生
             elif choice==3:
                 delete()
             elif choice==4:
                 modify()
             elif choice==5:
                 sort()
             elif choice==6:
                 total()
             elif choice==7:
                 show()
 ​
 ​
 ​
 def menu():
     print('====================学生信息管理系统==========================')
     print('--------------------------功能菜单---------------------------')
     print('\t\t\t\t\t\t1.录入学生信息')
     print('\t\t\t\t\t\t2.查找学生信息')
     print('\t\t\t\t\t\t3.删除学生信息')
     print('\t\t\t\t\t\t4.修改学生信息')
     print('\t\t\t\t\t\t5.排序')
     print('\t\t\t\t\t\t6.统计学生总人数')
     print('\t\t\t\t\t\t7.显示所有学生信息')
     print('\t\t\t\t\t\t0.退出系统')
     print('----------------------------------------------------------------')
 ​
 def insert():
     student_list=[]
     while True:#循环在这!
         id=input('请输出ID(如1001):')
         if not id:
             break#跳出当前循环(也就是一个循环)
         name=input('请输入姓名')
         if not name:
             break
 ​
         try:
             english=int(input('请输入英语成绩:'))
             python=int(input('请输入python成绩:'))
             java=int(input('请输出java成绩:'))
 ​
         except:
             print('输入无效,不是整数类型,请重新输入')
             continue#到while true那里
         #将录入的学生信息保存到字典当中
         student={'id':id,'name':name,'english':english,'python':python,'java':java}
         #将学生信息添加到列表中
         student_list.append(student)#把字典当作列表的值,存进了列表
         answer=input('是否继续添加y/n\n')
         if answer=='y':
             continue#跳出本次循环,直接开始下一次循环
         else:
             break
 ​
     #调用save()函数用于存储学生信息
     save(student_list)
     print('学生信息录入完毕')
 def save(student_lst):
     try:
         stu_txt=open(filename,'a',encoding='utf-8')
     except:
         stu_txt=open(filename,'w',encoding='utf-8')
     for item in student_lst:
         stu_txt.write(str(item)+'\n')
     stu_txt.close()
 ​
 ​
 def search():
     student_query=[]
     while True:
         id=''
         name=''
         if os.path.exists(filename):
             mode=input('按id查找请输入1,按姓名查找请输入2')
             if mode=='1':
                 id=input('请输入要查询的学生id')
             elif mode=='2':
                 name=input('请输入学生姓名')
             else:
                 print('您的输入有误,请重新输入')
                 search()
             with open(filename,'r',encoding='utf-8') as rfile:
                 student=rfile.readlines()
                 for item in student:
                     d=dict(eval(item))
                     if id!='':
                         if d['id']==id:
                             student_query.append(d)
 ​
                     elif name!='':
                         if d['name']==name:
                             student_query.append(d)
             #显示查询结果
             show_student(student_query)
             #清空列表
             student_query.clear()
             answer=input('是否继续查询?y/n\n')
             if answer=='y':
                 continue
             else:
                 break
 ​
 ​
         else:
             print('暂未保存学员信息')
             return
 ​
 def show_student(lst):
     if len(lst)==0:
         print('没有查询到学生信息,无数据显示')
         return
     #定义标题显示格式
     format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'#^是啥意思?
     print(format_title.format('ID','姓名','英语成绩','PYTHON成绩','JAVA成绩','总成绩'))
     #定义内容的显示格式
     format_date='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
     for item in lst:
         print(format_date.format(item.get('id'),
                                  item.get('name'),
                                  item.get('english'),
                                  item.get('python'),
                                  item.get('java'),
                                  int(item.get('english'))+int(item.get('python'))+int(item.get('java'))
                                  ))
 def delete():
     while True:
         student_id=input('请输入要删除的学生ID')
         if student_id!='':#不等于空
             if os.path.exists(filename):#判断文件是否存在
                 with open(filename,'r',encoding='utf-8') as file:
                     student_old=file.readlines()
             else:
                 student_old=[]#???
             flag=False#标记是否删除??????? 叫做旗帜变量
             if student_old:
                 with open(filename,'w',encoding='utf-8') as wfile:
                     d={}
                     for item in student_old:
                         d=dict(eval(item))#eval可以将字符串的引号去掉 语句作用;将字符串转成字典
                         if d['id']!=student_id:
                             wfile.write(str(d)+'\n')
                         else:
                             flag=True
                         if flag:
                             print(f'id为{student_id}的学生信息已被删除')
                         else:
                             print(f'没有找到ID为{student_id}的学生信息')
             else:
                 print('无学生信息')
                 break
             show()      #删除之后重新显示所有学生信息
             answer=input('是否继续删除呢?y/n\n')
             if answer=='y':
                 continue
             else:
                 break
 ​
 ​
 def modify():
     show()
     if os.path.exists(filename):
         with open(filename,'r',encoding='utf-8') as rfile:
             student_old=rfile.readlines()
     else:
         return
     student_id=input('请输入要修改的学生ID')
     with open(filename,'w',encoding='utf-8') as wfile:
         for item in student_old:
             d=dict(eval(item))
             if d['id']==student_id:
                 print('找到学生信息,可以修改')
                 while True:
                     try:
                         d['name']=input('请输入姓名')
                         d['english']=input('请输入英语成绩')
                         d['python']=input('请输入python成绩')
                         d['java']=input('请输入java成绩')
                     except:
                         print('你的输入有误,请重新输入')
                     else:
                         break
                 wfile.write(str(d)+'\n')
                 print('修改成功')
             else:
                 wfile.write(str(d)+'\n')
         answer=input('是否继续修改其他学生信息y/n\n')
         if answer=='y':
             modify()
 ​
 ​
 ​
 ​
 def sort():
     show()
     if os.path.exists(filename):
         with open(filename,'r',encoding='utf-8') as rfile:
             student_list=rfile.readlines()
         student_new=[]
         for item in student_list:
             d=dict(eval(item))
             student_new.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=True
     else:
         print('您的输入有误,请重新输入')
         sort()
     mode=input('请选择排序方式(1.按英语成绩排序2.按python成绩排序3.按java成绩排序0.按总成绩排序)')
     if mode=='1':
         student_new.sort(key=lambda x:int(x['english']),reverse=asc_or_desc_bool)
     elif mode=='2':
         student_new.sort(key=lambda x: int(x['python']), reverse=asc_or_desc_bool)
     elif mode=='3':
         student_new.sort(key=lambda x: int(x['java']), reverse=asc_or_desc_bool)
     elif mode=='0':
         student_new.sort(key=lambda x: int(x['english'])+int(x['java'])+int(x['python'], reverse=asc_or_desc_bool))
     else:
         print('输入有误,请重新输入')
         sort()
     show_student(student_new)
 ​
 def total():
     if os.path.exists(filename):
         with open(filename,'r',encoding='utf-8') as rfile:
             students=rfile.readlines()
             if students:
                 print(f'一共有{len(students)}名学生')
             else:
                 print('还没有录入学生信息')
     else:
         print('暂未保存数据信息......')
 def show():
     student_lst=[]
     if os.path.exists(filename):
         with open(filename,'r',encoding='utf-8') as rfile:
             students=rfile.readlines()
             for item in students:
                 student_lst.append(eval(item))
             if student_lst:
                 show_student(student_lst)
 ​
     else:
         print('暂未保存到数据')
 ​
 if __name__ == '__main__':#以主程序方式运行,若不加这个,会全部运行
     main()

3.结束语

虽然程序是我跟着老师敲的,但是当运行成功的时候还是有很大的成就感的!接下来的任务是:先学习着课程案例,与此同时探寻下一步学习计划!最重要的是,制定这段时间的学习计划。

近期一共有两个任务:学习python与英语六级

1.每天8点起起床,吃早饭,洗漱。8.30开始学习!上午8.30到11.30

2.中午睡到2点,下午2到5.30。

3.晚上7-10 然后洗漱睡觉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值