学生信息管理系统
时间:2019-08-06
本文章向大家介绍学生信息管理系统,主要包括学生信息管理系统使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
- 文件结构
- 详细代码,studentsystem.py
5 # 文件名称:studentsystem.py 6 # 开发工具:PyCharm 7 import re # 导入正则表达式模块 8 import os # 导入操作系统模块 9 10 filename = "students.txt" # 定义保存学生信息的文件名 11 12 13 def menu(): 14 # 输出菜单 15 print(''' 16 ╔———————学生信息管理系统————————╗ 17 │ │ 18 │ =============== 功能菜单 =============== │ 19 │ │ 20 │ 1 录入学生信息 │ 21 │ 2 查找学生信息 │ 22 │ 3 删除学生信息 │ 23 │ 4 修改学生信息 │ 24 │ 5 排序 │ 25 │ 6 统计学生总人数 │ 26 │ 7 显示所有学生信息 │ 27 │ 0 退出系统 │ 28 │ ========================================== │ 29 │ 说明:通过数字或↑↓方向键选择菜单 │ 30 ╚———————————————————————╝ 31 ''') 32 33 34 def main(): 35 ctrl = True # 标记是否退出系统 36 while (ctrl): 37 menu() # 显示菜单 38 option = input("请选择:") # 选择菜单项 39 option_str = re.sub("\D", "", option) # 提取数字 40 if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']: 41 option_int = int(option_str) 42 if option_int == 0: # 退出系统 43 print('您已退出学生成绩管理系统!') 44 ctrl = False 45 elif option_int == 1: # 录入学生成绩信息 46 insert() 47 elif option_int == 2: # 查找学生成绩信息 48 search() 49 elif option_int == 3: # 删除学生成绩信息 50 delete() 51 elif option_int == 4: # 修改学生成绩信息 52 modify() 53 elif option_int == 5: # 排序 54 sort() 55 elif option_int == 6: # 统计学生总数 56 total() 57 elif option_int == 7: # 显示所有学生信息 58 show() 59 60 61 '''1 录入学生信息''' 62 63 64 def insert(): 65 stdentList = [] # 保存学生信息的列表 66 mark = True # 是否继续添加 67 while mark: 68 id = input("请输入ID(如 1001):") 69 if not id: # ID为空,跳出循环 70 break 71 name = input("请输入名字:") 72 if not name: # 名字为空,跳出循环 73 break 74 try: 75 english = int(input("请输入英语成绩:")) 76 python = int(input("请输入Python成绩:")) 77 c = int(input("请输入C语言成绩:")) 78 except: 79 print("输入无效,不是整型数值....重新录入信息") 80 continue 81 stdent = {"id": id, "name": name, "english": english, "python": python, "c": c} # 将输入的学生信息保存到字典 82 stdentList.append(stdent) # 将学生字典添加到列表中 83 inputMark = input("是否继续添加?(y/n):") 84 if inputMark == "y": # 继续添加 85 mark = True 86 else: # 不继续添加 87 mark = False 88 save(stdentList) # 将学生信息保存到文件 89 print("学生信息录入完毕!!!") 90 91 92 # 将学生信息保存到文件 93 def save(student): 94 try: 95 students_txt = open(filename, "a") # 以追加模式打开 96 except Exception as e: 97 students_txt = open(filename, "w") # 文件不存在,创建文件并打开 98 for info in student: 99 students_txt.write(str(info) + "\n") # 按行存储,添加换行符 100 students_txt.close() # 关闭文件 101 102 103 '''2 查找学生成绩信息''' 104 105 106 def search(): 107 mark = True 108 student_query = [] # 保存查询结果的学生列表 109 while mark: 110 id = "" 111 name = "" 112 if os.path.exists(filename): # 判断文件是否存在 113 mode = input("按ID查输入1;按姓名查输入2:") 114 if mode == "1": 115 id = input("请输入学生ID:") 116 elif mode == "2": 117 name = input("请输入学生姓名:") 118 else: 119 print("您的输入有误,请重新输入!") 120 search() # 重新查询 121 with open(filename, 'r') as file: # 打开文件 122 student = file.readlines() # 读取全部内容 123 for list in student: 124 d = dict(eval(list)) # 字符串转字典 125 if id is not "": # 判断是否按ID查 126 if d['id'] == id: 127 student_query.append(d) # 将找到的学生信息保存到列表中 128 elif name is not "": # 判断是否按姓名查 129 if d['name'] == name: 130 student_query.append(d) # 将找到的学生信息保存到列表中 131 show_student(student_query) # 显示查询结果 132 student_query.clear() # 清空列表 133 inputMark = input("是否继续查询?(y/n):") 134 if inputMark == "y": 135 mark = True 136 else: 137 mark = False 138 else: 139 print("暂未保存数据信息...") 140 return 141 142 143 '''3 删除学生成绩信息''' 144 145 146 def delete(): 147 mark = True # 标记是否循环 148 while mark: 149 studentId = input("请输入要删除的学生ID:") 150 if studentId is not "": # 判断要删除的学生是否存在 151 if os.path.exists(filename): # 判断文件是否存在 152 with open(filename, 'r') as rfile: # 打开文件 153 student_old = rfile.readlines() # 读取全部内容 154 else: 155 student_old = [] 156 ifdel = False # 标记是否删除 157 if student_old: # 如果存在学生信息 158 with open(filename, 'w') as wfile: # 以写方式打开文件 159 d = {} # 定义空字典 160 for list in student_old: 161 d = dict(eval(list)) # 字符串转字典 162 if d['id'] != studentId: 163 wfile.write(str(d) + "\n") # 将一条学生信息写入文件 164 else: 165 ifdel = True # 标记已经删除 166 if ifdel: 167 print("ID为 %s 的学生信息已经被删除..." % studentId) 168 else: 169 print("没有找到ID为 %s 的学生信息..." % studentId) 170 else: # 不存在学生信息 171 print("无学生信息...") 172 break # 退出循环 173 show() # 显示全部学生信息 174 inputMark = input("是否继续删除?(y/n):") 175 if inputMark == "y": 176 mark = True # 继续删除 177 else: 178 mark = False # 退出删除学生信息功能 179 180 181 '''4 修改学生成绩信息''' 182 183 184 def modify(): 185 show() # 显示全部学生信息 186 if os.path.exists(filename): # 判断文件是否存在 187 with open(filename, 'r') as rfile: # 打开文件 188 student_old = rfile.readlines() # 读取全部内容 189 else: 190 return 191 studentid = input("请输入要修改的学生ID:") 192 with open(filename, "w") as wfile: # 以写模式打开文件 193 for student in student_old: 194 d = dict(eval(student)) # 字符串转字典 195 if d["id"] == studentid: # 是否为要修改的学生 196 print("找到了这名学生,可以修改他的信息!") 197 while True: # 输入要修改的信息 198 try: 199 d["name"] = input("请输入姓名:") 200 d["english"] = int(input("请输入英语成绩:")) 201 d["python"] = int(input("请输入Python成绩:")) 202 d["c"] = int(input("请输入C语言成绩:")) 203 except: 204 print("您的输入有误,请重新输入。") 205 else: 206 break # 跳出循环 207 student = str(d) # 将字典转换为字符串 208 wfile.write(student + "\n") # 将修改的信息写入到文件 209 print("修改成功!") 210 else: 211 wfile.write(student) # 将未修改的信息写入到文件 212 mark = input("是否继续修改其他学生信息?(y/n):") 213 if mark == "y": 214 modify() # 重新执行修改操作 215 216 217 '''5 排序''' 218 219 220 def sort(): 221 show() # 显示全部学生信息 222 if os.path.exists(filename): # 判断文件是否存在 223 with open(filename, 'r') as file: # 打开文件 224 student_old = file.readlines() # 读取全部内容 225 student_new = [] 226 for list in student_old: 227 d = dict(eval(list)) # 字符串转字典 228 student_new.append(d) # 将转换后的字典添加到列表中 229 else: 230 return 231 ascORdesc = input("请选择(0升序;1降序):") 232 if ascORdesc == "0": # 按升序排序 233 ascORdescBool = False # 标记变量,为False表示升序排序 234 elif ascORdesc == "1": # 按降序排序 235 ascORdescBool = True # 标记变量,为True表示降序排序 236 else: 237 print("您的输入有误,请重新输入!") 238 sort() 239 mode = input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):") 240 if mode == "1": # 按英语成绩排序 241 student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool) 242 elif mode == "2": # 按Python成绩排序 243 student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool) 244 elif mode == "3": # 按C语言成绩排序 245 student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool) 246 elif mode == "0": # 按总成绩排序 247 student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool) 248 else: 249 print("您的输入有误,请重新输入!") 250 sort() 251 show_student(student_new) # 显示排序结果 252 253 254 ''' 6 统计学生总数''' 255 256 257 def total(): 258 if os.path.exists(filename): # 判断文件是否存在 259 with open(filename, 'r') as rfile: # 打开文件 260 student_old = rfile.readlines() # 读取全部内容 261 if student_old: 262 print("一共有 %d 名学生!" % len(student_old)) 263 else: 264 print("还没有录入学生信息!") 265 else: 266 print("暂未保存数据信息...") 267 268 269 ''' 7 显示所有学生信息 ''' 270 271 272 def show(): 273 student_new = [] 274 if os.path.exists(filename): # 判断文件是否存在 275 with open(filename, 'r') as rfile: # 打开文件 276 student_old = rfile.readlines() # 读取全部内容 277 for list in student_old: 278 student_new.append(eval(list)) # 将找到的学生信息保存到列表中 279 if student_new: 280 show_student(student_new) 281 else: 282 print("暂未保存数据信息...") 283 284 285 # 将保存在列表中的学生信息显示出来 286 def show_student(studentList): 287 if not studentList: 288 print("(o@.@o) 无数据信息 (o@.@o) \n") 289 return 290 format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}" 291 print(format_title.format("ID", "名字", "英语成绩", "Python成绩", "C语言成绩", "总成绩")) 292 format_data = "{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}" 293 for info in studentList: 294 print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")), 295 str(info.get("c")), 296 str(info.get("english") + info.get("python") + info.get("c")).center(12))) 297 298 299 if __name__ == "__main__": 300 main()
原文地址:https://www.cnblogs.com/lws865/p/11307452.html
- 比较git commit 两个版本之间次数
- eclipse: workspace出错导致无法启用的解决
- 【node错误】/usr/bin/env: node: No such file or directory
- Django比较相等或者不相等的模板语法ifequal / ifnotequal
- 使用testNGListenter来自定义日志
- 通过代码去执行testNG用例
- $.cookie is not a function;原因及解决办法
- 为何学习以及如何理解SSH框架?内含Hibernate学习指南
- 生成唯一标识 字符串跟时间戳的结合
- git命令中带有特殊符号如@
- centos下安装jenkins
- Django实现任意文件上传(最简单的方法)
- 微信小程序HCE能力全面开放,手机秒变公交卡
- spring-自动加载配置文件使用属性文件注入
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 持续集成-Jenkins常用插件安装
- 小白学PyTorch | 15 TF2实现一个简单的服装分类任务
- 小白学PyTorch | 16 TF2读取图片的方法
- 小白学PyTorch | 17 TFrec文件的创建与读取
- 小白学PyTorch | 18 TF2构建自定义模型
- 扩展之Tensorflow2.0 | 19 TF2模型的存储与载入
- 扩展之Tensorflow2.0 | 20 TF2的eager模式与求导
- Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响
- 扩展之Tensorflow2.0 | 21 Keras的API详解(上)卷积、激活、初始化、正则
- 持续代码质量管理-SonarQube-7.3部署
- 攻击Scrapyd爬虫
- 【webpack】从vue-cli 2x 到 3x 迁移与实践
- 前端单元测试那些事
- 前端Nginx那些事
- 前端运维部署那些事