概述
使用python语言编写的学生管理系统,主要功能有登录系统、添加学生信息、查询学生信息、删除学生信息、修改学生信息、显示所有学生信息
用户在输入的任意位置都可以输入cancel以取消当前操作
待改进
用户注册或登录时,密码以*显示
主程序
# coding=utf8
# 从我们写好的函数文件中,导入所有函数
from tools import *
from time import sleep
# 定义一个用户列表,用于存放系统用户的用户名及密码:在列表内部嵌套字典
users = []
# 只要用户不选择退出,就一直执行while循环体内的语句
while True:
sleep(1)
# 调用主菜单函数,向用户展示菜单
main_menu()
# 提醒用户输入需要操作的数字
operate = input('请选择需要进行的操作(1-3): ')
if operate.isdigit() != True:
print('请输入1-3的数字!!')
elif operate == '1':
login(users)
elif operate == '2':
register(users)
elif operate == '3':
logout()
else:
print('请检查输入!!!')
函数文件
# coding=utf8
from time import sleep
from prettytable import PrettyTable
def main_menu():
'''
向用户展示菜单
'''
print('-' * 22)
print('学生管理系统'.center(18))
print(' 1 登 录 系 统\n'
' 2 注 册 用 户\n'
' 3 退 出 系 统')
print('-' * 22)
print('输入cancel可取消操作')
def register(l):
'''
用户注册,将用户输入的信息存入用户列表中
:param l: 用户列表
:return: 返回值是新增了一条用户信息的列表
'''
def account():
'''
提醒用户输入账户名
:return:返回值是一个符合要求的账户名
'''
while True:
acc = input('请输入账户名(3-6位数字、字母): ')
# acc.isalnum() 作用是判断字符串的组成方式是否为 数字、字母、数字及字母 中的一种,即 判断该字符串是否只包含数字和字母
if (len(acc) < 3) or (len(acc) > 6) or (acc.isalnum() != True):
print('请检查输入!!!(账户名由3-6位数字、字母组成,不包含标点符号及空格)')
else:
return acc
def password():
'''
提醒用户输入密码
:return:返回值是一个符合要求的密码
'''
while True:
pw = input('请输入密码(6-12位数字、字母): ')
if (len(pw) < 6) or (len(pw) > 12) or (pw.isalnum() != True):
print('请检查输入!!!(密码由6-12位数字、字母组成,不包含标点符号及空格)')
else:
return pw
def confirm_password():
'''
提醒用户再次输入密码并验证是否与第一次输入的值一致
:return:返回值是一个与第一次输入的密码相同的密码
'''
pw = password()
while True:
con_pw = input('请再次输入密码(与第一次输入一致): ')
if con_pw != pw:
print('两次输入密码不一致!!!')
else:
return pw
flag = True
while flag:
# 定义一个空字典,用于存放用户信息
info = {}
info['account'] = account()
if info['account'] == 'cancel':
break
info['password'] = confirm_password()
if info['password'] == 'cancel':
break
l.append(info)
return l
def login(l):
'''
用户登录,在传入的用户列表中查询用户信息,有则登录,无则提示账号不存在
:param l:该参数为用户列表
:return:返回值为当前已登录的账户名
'''
while True:
# 设置这个参数,是为了在for循环结束后判断有没有找到用户输入的账户名
# 我们在找到账户名后,会将flag的值设置为False
flag = True
lo_account =