阅读 219

学生信息管理系统--无交互界面(二)

  1 #-*- coding:utf-8 -*-
  2 
  3 filename = "students.txt"
  4 import os  5 
  6 def save(student):
  7     try:
  8         students_txt = open(filename,"a")
  9     except Exception as e:
 10         students_txt = open(filename,"w")
 11     
 12     for info in student:
 13         students_txt.write(str(info)+"\n")
 14     students_txt.close()
 15 
 16 def insert():
 17     studentList = []
 18     mark = True
 19     while mark:
 20         id = input("请输入id(如1001):")
 21         if not id:
 22             break
 23         #查找该学号是否存在
 24         with open(filename,"r") as rfile:
 25             student_old = rfile.readlines()
 26         
 27         for student in student_old:
 28             item = dict(eval(student))
 29             if item["id"] == id:
 30                 print("该学生已存在,请使用其他学号!!")
 31                 insert() 
 32         name = input("请输入名字:")
 33         if not name:
 34             break
 35         try:
 36             english = int(input("请输入英语成绩:"))
 37             python = int(input("请输入Python成绩:"))
 38             c = int(input("请输入C语言成绩"))
 39         except:
 40             print("输入无效,不是整形数据............重新录入信息")
 41             continue
 42         student = {"id":id,"name":name,"english":english,"python":python,"c":c}
 43         studentList.append(student)
 44         inputMark = input("是否继续添加?(Y/N):")
 45         if inputMark == "y":
 46             mark = True
 47         else:
 48             mark = False
 49     save(studentList)
 50     print("学生信息录入完毕!!")
 51     
 52 def delete():
 53     mark = True
 54     while mark:
 55         studentId = input("请输入想要删除的学生ID:")
 56         if studentId is not "":
 57             if os.path.exists(filename):
 58                 with open(filename,"r") as rfile:
 59                     student_old = rfile.readlines()
 60             else:
 61                 student_old = []
 62             ifdel = False
 63             if student_old:
 64                 with open(filename,"w") as wfile:
 65                     d = {}
 66                     for list in student_old:
 67                         d = dict(eval(list))
 68                         if d["id"] != studentId:
 69                             wfile.write(str(d)+"\n")
 70                         else:
 71                             ifdel = True
 72                 if ifdel:
 73                     print("ID为 %s 的学生信息已经被删除..........."%studentId)
 74                 else:
 75                     print("没有找到ID为 %s 的学生信息..."%studentId)
 76             else:
 77                 print("无此学生信息")
 78                 break
 79             show()
 80             inputMark = input("是否继续删除?(y/n):")
 81             if inputMark == "y":
 82                 mark = True
 83             else:
 84                 mark = False
 85 
 86 def modify():
 87     show()
 88     if os.path.exists(filename):
 89         with open(filename,"r") as rfile:
 90             student_old = rfile.readline()
 91     else:
 92         return
 93     
 94     studentId = input("请输出要修改的学生ID:")
 95     with open(filename,"w") as wfile:
 96         for student in student_old:
 97             d = dict(eval(student))
 98             if d["id"] == studentId:
 99                 print("找到了这名学生,可以修改他的信息!")100                 while True:101                     try:102                         d["name"] = input("请输入姓名:")103                         d["english"] = int(input("请输入英语成绩: "))104                         d["python"] = int(input("请输入Python成绩:"))105                         d["c"] = int(input("请输入C语言成绩: "))106                     except:107                         print("您输入有误,请重新输入。")108                     else:109                         break110                 student = str(d)111                 wfile.write(student+"\n")   #将修改后的学生信息写入文件112                 print("修改成功!")113             else:114                 wfile.write(student)    #将未修改的学生信息写入文件115     116     mark = input("是否继续修改其他学生信息?(y/n)")117     if mark == True:118         modify()        #使用回调函数119         120 def search():121     mark = True122     student_query = []123     while mark:124         id = ""125         name = ""126         if os.path.exists(filename):127             mode = input("按ID查找输入1;按学生姓名查找输入2: ")128             if mode == "1":129                 id = input("请输入学生ID:")130             elif mode == "2":131                 name = input("请输入学生名字: ")132             else:133                 print("您输入的查找信息有误,请重新输入!!")134                 search()135             with open(filename,"r") as rflie:136                 student = rflie.readlines()137                 for list in student:138                     d = dict(eval(list))139                     if id is not "":140                         if d["id"] == id:141                             student_query.append(d)142                     elif name is not "":143                         if d["name"] == name:144                             student_query.append(d)145                 show_student(student_query)146                 student_query.clear()147                 inputMark = input("是否继续查询?   (y/n):")148                 if inputMark == "y":149                     mark = True150                 else:151                     mark = False152         else:153             print("暂未保存数据信息。。。")154             return155 156 def show_student(student):157     if not student:158         print("无数据信息。。。。。。。。")159         return 160     format_title = "{:^6}{:^12}\t{:^8}\t{:^26}\t{:^10}\t{:^20}"161     print(format_title.format("ID","名字","英语成绩","Python成绩","C语言成绩","总成绩"))162     format_data = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"163     for info in student:164         print(format_data.format(info.get("id"),info.get("name"),str(info.get("english")),\165                                  str(info.get("python")),str(info.get("c")),\166                                  str(info.get("english")+info.get("python")+info.get("c")).center(12)))167     168 def total():169     if os.path.exists(filename):170         with open(filename,"r") as rfile:171             student_old = rfile.readlines()172             if student_old:173                 print("一共有    %s 名学生"%len(student_old))174             else:175                 print("还没有录入学生信息")176     else:177         print("暂未保存数据信息。。")178                        179 def show():180     student_new = []181     if os.path.exists(filename):182         with open(filename,"r") as rfile:183             student_old = rfile.readlines()184         185         for list in student_old:186             student_new.append(eval(list))187         if student_new:188             show_student(student_new)189     else:190         print("暂未保存数据信息......")191 192 def sort():193     show()194     if os.path.exists(filename):195         with open(filename,"r") as rfile:196             student_old = rfile.readlines()197         student_new = []198         for list in student_old:199             d = dict(eval(list))200             student_new.append(d)201     else:202         return203     204     ascORdesc = input("请选择(0升序;1降序): ")205     if ascORdesc == "0":206         ascORdescBool = False207     elif ascORdesc == "1":208         ascORdescBool = True209     else:210         print("您输入有误请重新输入!")211         sort()212     213     mode = input("请选择排列方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序): ")214     if mode == "1":215         student_new.sort(key=lambda x:x["english"],reverse=ascORdescBool)216     217     elif mode == "2":218         student_new.sort(key=lambda x:x["python"],reverse=ascORdescBool)219     elif mode == "3":220         student_new.sort(key=lambda x:x["c"],reverse=ascORdescBool)221     elif mode == "0":222         student_new.sort(key=lambda x:x["english"]+x["python"]+x["c"],reverse=ascORdescBool)223     else:224         print("您输入有误请重新输入!")225         sort()226     show_student(student_new)227                  228                       229     230                     231                 232             233             234     235         236 237 238         239


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐