前言
上一篇文章 python学习——【第十六弹】中介绍了python中的with语句,以便巩固之前所学,从这篇文章开始设计一个学生信息管理系统。
案例介绍
学生管理系统的模块以及功能如图:
这篇文章先编写好主菜单,并把录入学生信息模块写出来。
主菜单
先看下主菜单的功能有哪些:
代码实现:
'''
主菜单功能,编写一个主函数
'''
def main():
# 返回为True,执行菜单函数
while True:
menu()
#录入用户所选的功能代码
choice=int(input('请输入您要使用的功能代码:'))
#对录入的功能代码做出相应判断
if choice == 0:
answer = input('您确定要退出该系统吗?(y/n)\n')
if answer == 'y' or answer == 'Y':
print('谢谢您的使用!')
break #退出系统
else:
continue
#选择为1,录入学生信息
elif choice == 1:
pass
#选择为2,查找学生信息
elif choice == 2:
pass
#选择为3,删除学生信息
elif choice == 3:
pass
#选择为4,修改学生信息
elif choice == 4:
pass
#选择为5,对学生信息进行排序
elif choice == 5:
pass
#选择为6,对学生信息进行求和运算
elif choice == 6:
pass
#选择为7,显示全部功能
elif choice == 7:
pass
#定义一个菜单函数
def menu():
print('============================欢迎使用学生信息管理系统1.0================================')
print('--------------------------------功能菜单------------------------------------')
print('\t\t\t\t\t\t\t 1:录入学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 2:查询学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 3:删除学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 4:修改学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 5:对学生成绩进行排序\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 6:对学生成绩求和\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 7:显示所有功能\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 0:退出该系统\t\t\t\t\t\t\t\t')
print('--------------------------------------------------------------------------')
当然仅仅是运行上面的这些代码并不会在控制台上打印出任何东西:
因为我们编写的功能菜单是在主函数中的,函数只用被调用的时候才能执行,因此我们需要在最后对主函数调用:
不过虽然我们调用了主函数,并且控制台也打印出了我们想要的效果,但这并不是最佳的调用方式。
我们知道一个.py文件一般用两种使用方式,第一种是作为脚本直接执行,另一种是将其作为一个模块被调用到其他.py文件中(也就是模块重用)执行。
而 if name == 'main': 的作用就是控制这两种情况执行代码的过程;当我们在一个.py文件中写入
if name == 'main': 后,那么该文件就会直接作为脚本文件直接执行,即使当其他的.py文件通过
import引入这个.py文件后进行模块重用时,该文件也不会随着引入该文件的文件执行。
在 python学习——【第十三弹】中有相关的例子,感兴趣的伙伴可以看一下。
想要达到最佳效果,我们应该将main()函数指定为以主函数调用 ,即我们需要将最后写入的main() 改为
if __name__ == '__main__':
main()
学生信息录入
编写好主函数的功能后,我们开始编写学生信息录入的功能模块
这个功能模块的实现函数,我们命名为:insert()函数
这里我们没有用到python连接数据库存储学生信息,由于之前学习过文件读写,这里巩固之前所学,用
.txt文件存储学生信息,该文件名为 students.txt。
insert()函数
# 定义录入学生信息的函数 insert()
filename = 'students.txt'
def insert():
# 定义一个空列表存储学生信息
student_list = []
# 返回True 就进行 while循环对学生信息录入
while True:
id = input('请输入学生的ID:')
# 如果用户输入的不是ID号,就退出录入,重新输入ID
if not id:
break
name = input('请输入学生的姓名:')
if not name:
break
# 使用try....except避免程序报错
try:
Chinese = int(input('请输入学生的语文成绩:'))
Math = int(input('请输入学生的数学成绩:'))
English = int(input('请输入学生的英语成绩:'))
except:
print('非有效成绩,请重新输入!')
continue
# 创建一个字典,收集学生的信息
student = {'id': id, 'name': name, 'Chinese': Chinese, 'Math': Math, 'English': English}
# 学生信息添加到列表当中
student_list.append(student)
answer = input('是否继续添加学生信息?y/n\n')
if answer == 'y':
continue
else:
break
我们将前面需要对insert()函数调用的部分的pass占位符修改为 调用 insert()函数
#选择为1,录入学生信息
elif choice == 1:
insert()
然后先打印出存放学生信息的列表student_list的效果 :
我们看到,此时学生的信息是作为字典的形式作为列表中的元素存放在student_list中的,但是
students.txt文件中还是空的,也就是我们还需要进行文件的写入操作,将存放在列表中的信息写入
students.txt文件中。(文件读写操作)
定义一个 save()函数,将列表中的信息存放在students.txt中:
# 定义save()函数
def save(lst):
try:
student_txt = open(filename,'a',encoding='utf-8')
except:
student_txt = open(filename,'w',encoding='utf-8')
# 在文件中逐个写入学生信息
for item in lst:
# 以字符串的形式存放在文件中
student_txt.write(str(item)+'\n')
# 关闭文件
student_txt.close()
然后在insert()函数中对其调用:
# 退出学生信息录入,调用save()函数将学生的信息保存到文件当中,这里给save()函数传入的参数是student_list
save(student_list)
print('学生信息录入完毕!')
运行结果
代码展示
'''
主菜单功能,编写一个主函数
'''
def main():
# 返回为True,执行菜单函数
while True:
menu()
#录入用户所选的功能代码
choice=int(input('请输入您要使用的功能代码:'))
#对录入的功能代码做出相应判断
if choice == 0:
answer = input('您确定要退出该系统吗?(y/n)\n')
if answer == 'y' or answer == 'Y':
print('谢谢您的使用!')
break #退出系统
else:
continue
#选择为1,录入学生信息
elif choice == 1:
insert()
#选择为2,查找学生信息
elif choice == 2:
pass
#选择为3,删除学生信息
elif choice == 3:
pass
#选择为4,修改学生信息
elif choice == 4:
pass
#选择为5,对学生信息进行排序
elif choice == 5:
pass
#选择为6,对学生信息进行求和运算
elif choice == 6:
pass
#选择为7,显示全部功能
elif choice == 7:
pass
#定义一个菜单函数
def menu():
print('============================欢迎使用学生信息管理系统1.0================================')
print('--------------------------------功能菜单------------------------------------')
print('\t\t\t\t\t\t\t 1:录入学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 2:查询学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 3:删除学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 4:修改学生信息\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 5:对学生成绩进行排序\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 6:对学生成绩求和\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 7:显示所有功能\t\t\t\t\t\t\t\t')
print('\t\t\t\t\t\t\t 0:退出该系统\t\t\t\t\t\t\t\t')
print('--------------------------------------------------------------------------')
# 定义录入学生信息的函数 insert()
filename = 'students.txt'
def insert():
# 定义一个空列表存储学生信息
student_list = []
# 返回True 就进行 while循环对学生信息录入
while True:
id = input('请输入学生的ID:')
# 如果用户输入的不是ID号,就退出录入,重新输入ID
if not id:
break
name = input('请输入学生的姓名:')
if not name:
break
# 使用try....except避免程序报错
try:
Chinese = int(input('请输入学生的语文成绩:'))
Math = int(input('请输入学生的数学成绩:'))
English = int(input('请输入学生的英语成绩:'))
except:
print('非有效成绩,请重新输入!')
continue
# 创建一个字典,收集学生的信息
student = {'id': id, 'name': name, 'Chinese': Chinese, 'Math': Math, 'English': English}
# 学生信息添加到列表当中
student_list.append(student)
answer = input('是否继续添加学生信息?y/n\n')
if answer == 'y':
continue
else:
break
# 退出学生信息录入,调用save()函数将学生的信息保存到文件当中,这里给save()函数传入的参数是student_list
save(student_list)
print('学生信息录入完毕!')
# 定义save()函数
def save(lst):
try:
student_txt = open(filename,'a',encoding='utf-8')
except:
student_txt = open(filename,'w',encoding='utf-8')
# 在文件中逐个写入学生信息
for item in lst:
# 以字符串的形式存放在文件中
student_txt.write(str(item)+'\n')
# 关闭文件
student_txt.close()
if __name__ == '__main__':
main()
每篇一语
做你应该做的事情,做到最好,然后让时间去证明一切。
如有不足,感谢指正!