Python实现学生信息管理系统V1.0

简介: Python实现学生信息管理系统V1.0

本文是关于学生信息管理系统的简易版以及具体内容具体思路的详细讲解。(完整代码文末附上)

(该系统V1.0版本只有简易功能的实现,在V2.0以后的版本对各种逻辑有更为精确的完善,请大家有更高要求的朋友移步V2.0以后的文章噢)

代码实现过程以自定义方法为主线,各种功能独立成方法,降低代码耦合度,方便修改。

一、首先介绍“学生信息管理系统”最重要的部分:主菜单

主菜单一共显示五个功能:添加、删除、修改、显示学生信息和退出系统。其中前四个功能均独立为方法(如下所示)

1. # 主菜单
2. def mainMenu():
3.     LIST1 = []
4. while True:
5. print("=" * 30)
6. print("学生信息管理系统V1.0\n1、添加学生信息\n2、删除学生信息\n"
7. "3、修改学生信息\n4、显示所有学生信息\n5、退出系统\n")
8.         date = input("请输入功能对应的数字:")
9. print("=" * 30)
10. if date == "1":
11. # 1、添加学生信息(调用自定义函数)
12.             LIST = addStudentsMessage()  # 由于返回的是列表,所以这里用一个新的列表接收
13. if LIST is None:
14. continue
15. for i in range(0, len(LIST)):
16.                 LIST1.append(LIST[i])
17. if date == "2":
18. # 2、删除学生信息(调用自定义函数)
19.             deleteMessage(LIST1)
20. if date == "3":
21. # 3、修改学生信息(调用自定义函数)
22.             change(LIST1)
23. if date == "4":
24. # 4、显示所有学生信息(调用自定义函数)
25.             show(LIST1)
26. if date == "5":
27. # 退出系统
28.             ask = input("真的要退出吗?(yes or no):")
29. if ask == "yes" or ask == "Yes" or ask == "YES":
30. print("已退出")
31. break
32. if ask == "no" or ask == "No" or ask == "NO":
33. continue
34. print("输入有误")

二、第一个功能:添加学生信息

如下所示,依次校验用户输入的学生信息:姓名、性别和电话号码是否有误

1. # 1、添加学生信息
2. def addStudentsMessage():
3. List = []
4.     date = 0
5. while True:
6.         infer = input("你是否想输入学生信息:y/n:")
7. 
8. if infer == "y" or infer == "Y":
9. 
10.             name = input("请输入学生的姓名:")
11. if not name:
12. print("学生姓名不能为空")
13. return
14. 
15. # 调用方法去除字符串的空格再进行比较,如果去除空格之后为空,则说明键入的字符串只有空格
16. if trim(name) == "":
17. print("学生姓名不能为空")
18. return
19. 
20. # 判断性别输入是否正确
21. while True:
22.                 sex = input("请输入学生的性别(F/M):")
23. if sex == "F" or sex == "M":
24. break
25. else:
26. continue
27. 
28. # 判断电话输入是否正确
29. while True:
30. try:
31.                     phone = int(input("请输入学生的电话号码:"))
32. if phone <= 0:
33. print("a" + 1)  # 此处抛出异常
34. break
35. except:
36. print("输入无效,重新录入信息")
37. continue
38. 
39. Dict = {"name": name, "sex": sex, "phone": phone}
40. 
41. List.append(Dict)
42. print("学生已添加")
43.             date += 1
44. elif infer == "n" or infer == "N":
45. break
46. else:
47. print("输入格式有误")
48. 
49. if date == 0:
50. print("未存入数据")
51. else:
52. return List

 

三、第二个功能:删除学生信息

实现过程如下所示,V1.0版本不考虑同名情况

1. # 2、删除学生信息
2. def deleteMessage(studentMessageList):
3.     enterName = str(input("请输入要删除的姓名:"))
4. # 开始遍历查找
5. for i in range(0, len(studentMessageList)):
6. # 找到了直接删除
7. if studentMessageList[i]["name"] == enterName:
8. del studentMessageList[i]
9. print("删除成功")
10. # 删除成功直接返回,结束该方法
11. return
12. 
13. # 如果上面遍历完依然没有结束方法,说明不存在
14. print("学生不存在")

 

四、第三个功能:修改学生信息

该功能的逻辑与第一个功能类似,同样需要校验输入信息是否符合规范

修改完成的学生信息,会通过赋值的操作,覆盖原来的信息

1. # 3、修改学生信息
2. def change(List):
3. if List is None:
4. print("没有信息,无法修改")
5. return None
6. if len(List) == 0:
7. print("没有信息,无法修改")
8. return None
9. if len(List) != 0:
10.         inputName = str(input("请输入要修改的学生姓名:"))
11. for i in range(0, len(List)):
12. if List[i]["name"] == inputName:
13. 
14. # 进入这个if,说明找到了该学生
15. # 1、修改性别
16. while True:
17.                     sexMessage = input("输入修改后的学生性别(F/M):")
18. if sexMessage == "F" or sexMessage == "M":
19. List[i]["sex"] = sexMessage
20. break
21. else:
22. continue
23. 
24. # 2、修改电话
25. while True:
26. 
27. # 判断电话是否有误
28. try:
29.                         phone = int(input("请输入修改后的学生电话号码:"))
30. if phone <= 0:
31. print("a" + 1)  # 此处抛出异常
32. List[i]["phone"] = phone
33. break
34. except:
35. print("输入无效,重新录入信息")
36. continue
37. print("修改成功")
38. 
39. # 上面全部修改完成且没有错误,则结束方法
40. return
41. # 循环走完没有结束方法,说明不存在
42. print("学生不存在")

 

五、第四个功能:显示学生信息

显示学生信息即格式化遍历输出存储学生信息的列表,此处采用format格式化操作。

末行添加了“chr(12288)”是解决中文格式化无法对齐的情况

1. # 4、显示所有学生信息
2. def show(List):
3. print("学生信息如下:")
4. print("=" * 30)
5. 
6. # 打印头部标题 并进行格式化
7. print("{0:^10}\t{1:^12}\t{2:^10}\t{3:^15}".format("学生序号", "学生姓名", "学生性别", "电话号码"))
8. 
9. if List is None:
10. return None
11. if len(List) == 0:
12. return None
13. if len(List) != 0:
14. for i in range(0, len(List)):
15. # 格式化字符串
16. print("{0:^13}\t{1:^13}\t{2:^13}\t{3:>15}".
17. format(i + 1, List[i].get("name"), List[i].get("sex"), List[i].get("phone")), chr(12288))

 

六、第五个功能:退出系统

该处在V1.0版本较为简单,没有独立成方法的必要

1. # 退出系统
2.             ask = input("真的要退出吗?(yes or no):")
3. if ask == "yes" or ask == "Yes" or ask == "YES":
4. print("已退出")
5. break
6. if ask == "no" or ask == "No" or ask == "NO":
7. continue
8. print("输入有误")

 


下面附上“学生信息管理系统V1.0”的完整代码:

1. # -*- coding: utf-8 -*-
2. # @Author:︶ㄣ释然
3. # @Time: 2022/7/6 22:08
4. 
5. # 定义一个方法,去除字符串左右两端的空格,并返回处理之后的字符串
6. def trim(strings):
7. # 获取从偏移为0的字符一直到偏移为1的字符串,不包括偏移为1的字符串
8. #     (该功能用于去除字符串左边的空格)
9. while strings[:1] == ' ':
10.         strings = strings[1:]
11. # 获取从偏移为-1的字符一直到偏移为最后一位的字符串,不包括偏移为最后一位的字符串
12. #     (该功能用于去除字符串右边的空格)
13. while strings[-1:] == ' ':
14.         strings = strings[:-1]
15. # 左右两端空格去除完成,返回strings
16. return strings
17. 
18. 
19. # 1、添加学生信息
20. def addStudentsMessage():
21. List = []
22.     date = 0
23. while True:
24.         infer = input("你是否想输入学生信息:y/n:")
25. 
26. if infer == "y" or infer == "Y":
27. 
28.             name = input("请输入学生的姓名:")
29. if not name:
30. print("学生姓名不能为空")
31. return
32. 
33. # 调用方法去除字符串的空格再进行比较,如果去除空格之后为空,则说明键入的字符串只有空格
34. if trim(name) == "":
35. print("学生姓名不能为空")
36. return
37. 
38. # 判断性别输入是否正确
39. while True:
40.                 sex = input("请输入学生的性别(F/M):")
41. if sex == "F" or sex == "M":
42. break
43. else:
44. continue
45. 
46. # 判断电话输入是否正确
47. while True:
48. try:
49.                     phone = int(input("请输入学生的电话号码:"))
50. if phone <= 0:
51. print("a" + 1)  # 此处抛出异常
52. break
53. except:
54. print("输入无效,重新录入信息")
55. continue
56. 
57. Dict = {"name": name, "sex": sex, "phone": phone}
58. 
59. List.append(Dict)
60. print("学生已添加")
61.             date += 1
62. elif infer == "n" or infer == "N":
63. break
64. else:
65. print("输入格式有误")
66. 
67. if date == 0:
68. print("未存入数据")
69. else:
70. return List
71. 
72. 
73. # 2、删除学生信息
74. def deleteMessage(studentMessageList):
75.     enterName = str(input("请输入要删除的姓名:"))
76. # 开始遍历查找
77. for i in range(0, len(studentMessageList)):
78. # 找到了直接删除
79. if studentMessageList[i]["name"] == enterName:
80. del studentMessageList[i]
81. print("删除成功")
82. # 删除成功直接返回,结束该方法
83. return
84. 
85. # 如果上面遍历完依然没有结束方法,说明不存在
86. print("学生不存在")
87. 
88. 
89. # 3、修改学生信息
90. def change(List):
91. if List is None:
92. print("没有信息,无法修改")
93. return None
94. if len(List) == 0:
95. print("没有信息,无法修改")
96. return None
97. if len(List) != 0:
98.         inputName = str(input("请输入要修改的学生姓名:"))
99. for i in range(0, len(List)):
100. if List[i]["name"] == inputName:
101. 
102. # 进入这个if,说明找到了该学生
103. # 1、修改性别
104. while True:
105.                     sexMessage = input("输入修改后的学生性别(F/M):")
106. if sexMessage == "F" or sexMessage == "M":
107. List[i]["sex"] = sexMessage
108. break
109. else:
110. continue
111. 
112. # 2、修改电话
113. while True:
114. 
115. # 判断电话是否有误
116. try:
117.                         phone = int(input("请输入修改后的学生电话号码:"))
118. if phone <= 0:
119. print("a" + 1)  # 此处抛出异常
120. List[i]["phone"] = phone
121. break
122. except:
123. print("输入无效,重新录入信息")
124. continue
125. print("修改成功")
126. 
127. # 上面全部修改完成且没有错误,则结束方法
128. return
129. # 循环走完没有结束方法,说明不存在
130. print("学生不存在")
131. 
132. 
133. # 4、显示所有学生信息
134. def show(List):
135. print("学生信息如下:")
136. print("=" * 30)
137. 
138. # 打印头部标题 并进行格式化
139. print("{0:^10}\t{1:^12}\t{2:^10}\t{3:^15}".format("学生序号", "学生姓名", "学生性别", "电话号码"))
140. 
141. if List is None:
142. return None
143. if len(List) == 0:
144. return None
145. if len(List) != 0:
146. for i in range(0, len(List)):
147. # 格式化字符串
148. print("{0:^13}\t{1:^13}\t{2:^13}\t{3:>15}".
149. format(i + 1, List[i].get("name"), List[i].get("sex"), List[i].get("phone")), chr(12288))
150. 
151. 
152. # 主菜单
153. def mainMenu():
154.     LIST1 = []
155. while True:
156. print("=" * 30)
157. print("学生信息管理系统V1.0\n1、添加学生信息\n2、删除学生信息\n"
158. "3、修改学生信息\n4、显示所有学生信息\n5、退出系统\n")
159.         date = input("请输入功能对应的数字:")
160. print("=" * 30)
161. if date == "1":
162. # 1、添加学生信息(调用自定义函数)
163.             LIST = addStudentsMessage()  # 由于返回的是列表,所以这里用一个新的列表接收
164. if LIST is None:
165. continue
166. for i in range(0, len(LIST)):
167.                 LIST1.append(LIST[i])
168. if date == "2":
169. # 2、删除学生信息(调用自定义函数)
170.             deleteMessage(LIST1)
171. if date == "3":
172. # 3、修改学生信息(调用自定义函数)
173.             change(LIST1)
174. if date == "4":
175. # 4、显示所有学生信息(调用自定义函数)
176.             show(LIST1)
177. if date == "5":
178. # 退出系统
179.             ask = input("真的要退出吗?(yes or no):")
180. if ask == "yes" or ask == "Yes" or ask == "YES":
181. print("已退出")
182. break
183. if ask == "no" or ask == "No" or ask == "NO":
184. continue
185. print("输入有误")
186. 
187. 
188. # 调用主菜单函数
189. if __name__ == '__main__':
190.     mainMenu()

 

相关文章
|
前端开发 JavaScript 关系型数据库
基于python的药店药品信息管理系统-毕业设计-课程设计
平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。
325 0
|
4月前
|
Python
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
【python】pyqt5大学生成绩信息管理系统-图形界面(源码+报告)【独一无二】
201 1
|
4月前
|
SQL 关系型数据库 MySQL
【python】python学生信息管理系统 ——数据库版(源码)【独一无二】
【python】python学生信息管理系统 ——数据库版(源码)【独一无二】
|
4月前
|
存储 Python
【python】Python学生信息管理系统(源码+报告+本地存储)【独一无二】
【python】Python学生信息管理系统(源码+报告+本地存储)【独一无二】
225 1
|
关系型数据库 MySQL 数据库
Python 基于 Django 的公务员考试信息管理系统+数据库(附源码,教程)
Python 基于 Django 的公务员考试信息管理系统+数据库(附源码,教程)
|
7月前
|
存储 人工智能 机器人
【python毕业设计】基于Python的医院信息管理系统的设计与实现(源码+数据库+毕业论文)【独一无二】
【python毕业设计】基于Python的医院信息管理系统的设计与实现(源码+数据库+毕业论文)【独一无二】
260 0
|
7月前
|
人工智能 机器人 测试技术
【Python】Python教师/学生信息管理系统 [简易版] (源码)【独一无二】
【Python】Python教师/学生信息管理系统 [简易版] (源码)【独一无二】
|
SQL 前端开发 JavaScript
基于python+django的家教预约网站-家教信息管理系统
该系统是基于python+django开发的家教预约网站。是给师妹做的课程作业。大家在学习过程中,遇到问题可以在github给作者留言。
197 0
|
7月前
|
Python
python实现学生信息管理系统(附源码 可供大作业或练习使用)
python实现学生信息管理系统(附源码 可供大作业或练习使用)
677 2
python实现学生信息管理系统(附源码 可供大作业或练习使用)
|
7月前
|
NoSQL 开发工具 数据库
基于Python开发的学生信息管理系统控制台程序(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)
基于Python开发的学生信息管理系统控制台程序(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)