Python 函数封装之"学生信息管理系统"
1 # 学生信息管理系统 —— 函数封装 2 3 """ 4 思考: 5 1、学生信息有哪些? 6 2、是否区分学生、老师、管理员权限 7 3、该怎么存储学生信息 8 4、是否需要登录界面 9 10 介绍: 11 在工作生活中,信息管理很常见、例如:文件归档、账户流水账、登录信息、宿舍管理、购票管理、学生信息管理等。 12 13 知识点: 14 1、自定义函数的使用:函数封装、调用,使用到了默认参数和关键字参数 15 2、字典的使用:增 删 改 查 遍历 16 3、循环语句:while、for 17 4、条件语句:if、elif、else 18 5、跳转语句:break、continue 19 6、字符串运算 20 7、旗帜应用,这个很重要 21 22 不足(待改善): 23 1、在打印学生信息使用到了制表符'\t',但打印出来的效果并不理想,有哪位高人可以指点一下 24 2、此程序无太强的可读性,后续可以完善,添加一些条件和提示语 25 3、字典的特点:无法存储两个姓名一样的学生,体现了字典的不可重复性 26 4、在新建学生信息时,如果出现重复新建,会覆盖原有的学生信息,等价于修改了学生信息,可以添加遍历判断 27 5、程序员的愤怒“删除库跑路”,在本程序没有体现,可以利用clear()函数实现 28 6、最大的通病:没有实际保存,退出程序即恢复出厂设置,有待改善 29 """ 30 31 32 # 定义一个空字典,用存储学生信息 # 字典的特点:元素不可重复、元素无序 33 stu_info = dict() 34 message = '请输入编号:' 35 36 37 # 函数封装 ========================================================== 38 # 菜单打印 39 def menu(): 40 print(' ' + '='*5 + '欢迎进入学生管理系统' + '='*5) 41 print('1.新建学生信息\t2.删除学生信息') 42 print('3.修改学生信息\t4.查寻学生信息') 43 print('5.查看所有学生信息\t0.退出') 44 45 46 # 打印标题 ========================================================== 47 def show_title(num1=0, info='='*10, num=9): 48 print(' '*num1 + '=' * num + info + '=' * num) 49 50 51 # 输入编号(选择菜单) ============================================== 52 def input_num(message): 53 return input(message) 54 55 56 # 1.新建学生信息 ==================================================== 57 def new_stu_info(): 58 show_title(info='新建学生信息') # 打印标题 59 60 # 输入学生信息 61 name = input('请输入学生姓名:') 62 stu_id = input('请输入学生学号:') 63 phone_num = input('请输入学生手机号码:') 64 addr = input('请输入学生家庭地址:') 65 66 # 存储学生信息(添加到字典中) 67 stu_info[name] = [stu_id, phone_num, addr] 68 # student_info.update(name=[stu_id, phone_num, addr]) # 注意:这里字典添加元素不能用update() 69 70 71 # 2.删除学生信息 ==================================================== 72 def del_stu_info(): 73 show_title(info='删除学生信息') # 打印标题 74 75 # 判断字典是否为空 76 if stu_info == dict(): 77 show_title(info='暂无学生信息') # 打印提示 78 return 79 80 # 输入需要删除的学生姓名 81 name = input('请输入需要删除的学生姓名:') 82 flag_del = 0 # 定义删除的旗帜 83 84 # 在字典中查找是否存在 85 for i in stu_info: 86 if name == i: 87 print('学生姓名:{}\t学号:{}\t手机号码:{}\t家庭地址:{}'.format(name, stu_info[i][0], stu_info[i][1], stu_info[i][2])) 88 89 stu_info.pop(name) # 删除字典元素 90 show_title(info='已删除成功', num1=1) # 打印删除成功 91 flag_del = 1 # 删除旗帜赋值 92 break 93 94 # 判断是否删除此学生信息 95 if flag_del != 1: 96 show_title(info='无此学生信息') # 打印提示 97 98 99 # 3.修改学生信息 ==================================================== 100 def change_stu_info(): 101 show_title(info='修改学生信息') # 打印标题 102 103 # 判断字典是否为空 104 if stu_info == dict(): 105 show_title(info='暂无学生信息') # 打印提示 106 return 107 108 # 输入需要修改的学生姓名 109 name = input('请输入需要修改的学生姓名:') 110 flag_change = 0 # 定义修改的旗帜 111 112 # 在字典中查找是否存在 113 for i in stu_info: 114 if name == i: 115 116 # 输入学生新的信息 117 new_name = input('请输入学生新的姓名:') 118 new_stu_id = input('请输入学生学号:') 119 new_phone_num = input('请输入学生手机号码:') 120 new_addr = input('请输入学生家庭地址:') 121 122 # 判断是否需要删除原来的元素 123 if new_name != name: 124 stu_info.pop(name) # 删除原来的元素 125 126 # 存储修改后学生信息 127 stu_info[new_name] = [new_stu_id, new_phone_num, new_addr] 128 129 print('学生姓名:{}\t学号:{}\t手机号码:{}\t家庭地址:{}'.format(new_name, new_stu_id, new_phone_num, new_addr)) 130 show_title(info='已修改成功', num1=1) # 打印已修改成功 131 132 flag_change = 1 # 修改旗帜赋值 133 break 134 135 # 判断是否修改此学生信息 136 if flag_change != 1: 137 show_title(info='无此学生信息') # 打印提示 138 139 140 # 4.查寻学生信息 ==================================================== 141 def find_stu_info(): 142 show_title(info='查寻学生信息') # 打印标题 143 144 # 判断字典是否为空 145 if stu_info == dict(): 146 show_title(info='暂无学生信息') # 打印提示 147 return 148 149 # 输入需要查询的学生姓名 150 name = input('请输入需要查询的学生姓名:') 151 flag_find = 0 # 定义查询的旗帜 152 153 # 在字典中查找是否存在 154 for i in stu_info: 155 if name == i: 156 print('学生姓名:{}\t学号:{}\t手机号码:{}\t家庭地址:{}'.format(name, stu_info[i][0], stu_info[i][1], stu_info[i][2])) 157 158 flag_find = 1 # 查询旗帜赋值 159 break 160 161 # 判断是否查询到此学生信息 162 if flag_find != 1: 163 show_title(info='无此学生信息') # 打印提示 164 165 166 # 5.查看所有学生信息 =============================================== 167 def show_all_stu(): 168 show_title(info='查看所有学生信息', num=7, num1=1) # 打印标题 169 170 # 判断字典是否为空 171 if stu_info == dict(): 172 show_title(info='暂无学生信息') # 打印提示 173 return 174 175 # 遍历打印学生信息 176 for i in stu_info: 177 print('学生姓名:{}\t学生学号:{}\t手机号码:{}\t家庭地址:{}' .format(i, stu_info[i][0], stu_info[i][1], stu_info[i][2])) 178 179 180 # 等价于C语言的主函数 =============================================== 181 while True: 182 183 menu() # 打印菜单 184 num = input_num(message) # 选择菜单 185 186 # 1.新建学生信息 187 if num == '1': 188 new_stu_info() # 调用函数 189 190 # 2.删除学生信息 191 elif num == '2': 192 del_stu_info() # 调用函数 193 194 # 3.修改学生信息 195 elif num == '3': 196 change_stu_info() # 调用函数 197 198 # 4.查寻学生信息 199 elif num == '4': 200 find_stu_info() # 调用函数 201 202 # 5.查看所有学生信息 203 elif num == '5': 204 show_all_stu() # 调用函数 205 206 # 0.退出 207 elif num == '0': 208 show_title(info='已退出', num=11, num1=1) # 装13的打印方式,利用函数封装,然后调用 209 # print(' '*1 + '='*11 + '已退出' + '='*11) # 有基础的打印方式,利用字符串运算(只能用加法和乘法) 210 break 211 212 # 其他 213 else: 214 show_title(info='输入有误!', num=10) # 装13的打印方式,利用函数封装,然后调用 215 # print('==========输入有误!==========') # 最原始的打印方式,打印什么写什么 216 217 message = '请重新输入编号:' 218 continue 219 220 message = '请输入编号:'
运行结果:
作者:周华
创作日期:2022/5/25
分类:
Python 实用小程序
标签:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?