学生信息管理系统v1.2 - - python
- 内容
本次升级所用到的python知识
- open( )函数
open( ) 将会返回一个 file 对象 格式如下:
open(filename,mode)
filename: filename 变量是一个包含了你要访问的文件名称的字符串值。 mode: mode 决定了打开文件的模式。(只读、写入、追加等)默认文件访问模式为只读(r)。
- close方法
- f.close( )
在文本文件中(那些打开文件的模式下没有b的),只会相对于文件起始位置进行定位。 当你处理完一个文件后,调用 f.close( ) 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
- shelve模块(加密)
- shelve 是 python 的自带 model,可以直接通过 import shelve 来引用。
- shelve类似于一个存储持久化对象的持久化字典,即字典文件。
格式如下:
import shelve
studic = {
'x': {'name': 'pinkward', 'height(cm)': '180', 'weight(kg)': '65', 'class': 'x1', 'tel': '11111111111'}
}
f = shelve.open('stu')
f['studic'] = studic
f['gly'] = {'admin': '123456'}
f.close()
随后会生成以下文件: 使用记事本打开stu.dat会是如下图一样的乱码: 因此shelve模块也包含了加密技术
- 学生信息管理系统v1.2
代码如下:
import shelve
studic = {
'x':{'name':'pinkward','height(cm)':'180','weight(kg)':'65','class':'x1','tel':'11111111111'}
}
f = shelve.open('stu')
f['studic'] = studic
f['gly'] = {'admin':'123456'}
f.close()
import shelve
f = shelve.open('stu')
studic = f['studic']
gly = f['gly']
f.close()
def query():
if len(studic):
for x in studic:
stu = studic[x]
print('--学号:', x)
print('\t姓名: ', stu['name'])
print('\t身高(cm):', stu['height(cm)'])
print('\t体重(kg):', stu['weight(kg)'])
print('\t班级: ', stu['class'])
print('\t电话: ', stu['tel'])
else:
print('---当前无学生信息!---')
def insert():
xh = input('请输入学生学号: ')
if xh in studic:
print('---此学号已存在!请重新输入:---')
else:
name = input('请输入姓名: ')
height = input('请输入身高(cm): ')
weight = input('请输入体重(kg): ')
bj = input('请输入班级: ')
tel = input('请输入电话: ')
studic[xh] = {'name': name, 'height(cm)': height, 'weight(kg)': weight, 'class': bj, 'tel': tel}
print('---已成功录入学生信息!---')
def update():
xh = input('请输入学生学号: ')
if xh not in studic:
print('---此学号不存在!请重新输入:---')
else:
name = input('请输入姓名: ')
height = input('请输入身高(cm): ')
weight = input('请输入体重(kg): ')
bj = input('请输入班级: ')
tel = input('请输入电话: ')
studic[xh] = {'name': name, 'height(cm)': height, 'weight(kg)': weight, 'class': bj, 'tel': tel}
print('---已成功修改学生信息!---')
def delete():
xh = input('请输入学生学号: ')
if xh not in studic:
print('---此学号不存在!请重新输入:---')
else:
del studic[xh]
print('---成功删除该学号学生信息!---')
def editmanager():
mname = input('请输入管理员用户名:')
mpwd1 = input('请输入管理员密码: ')
mpwd2 = input('请再次输入管理员密码: ')
if mname and mpwd2 == mpwd1:
gly.clear()
gly[mname] = mpwd2
print('---维护管理员信息成功!---')
else:
print('---用户名或密码错误!---')
def main():
print()
print('欢迎使用学生信息管理系统v1.2!'.center(50))
username = input('请输入用户名: ')
password = input('请输入密码: ')
if username in gly and password == gly[username]:
while 1:
while 1:
print()
print('学生信息管理系统v1.2'.center(50))
print('系统菜单'.center(52))
print('1.添加学生信息'.center(50))
print('2.删除学生信息'.center(50))
print('3.修改学生信息'.center(50))
print('4.查看学生信息'.center(50))
print('5.维护管理员信息'.center(52))
print('6.退出管理系统'.center(50))
opt = input('请选择功能: ')
if not opt or opt not in '123456' or len(opt) > 1:
print('---无效选项!请重新选择:---')
continue
else:
break
if opt in '1':
insert()
elif opt in '2':
delete()
elif opt in '3':
update()
elif opt in '4':
query()
elif opt in '5':
editmanager()
else:
f = shelve.open('stu')
f['studic'] = studic
f['gly'] = gly
f.close()
break
print('---已成功退出!---')
print('感谢使用学生信息管理系统v1.2!'.center(50))
else:
print('---普通用户登录成功!---')
while 1:
while 1:
print()
print('欢迎使用学生信息管理系统v1.2!'.center(50))
print('系统菜单'.center(52))
print('4.查看学生信息'.center(50))
print('5.退出管理系统'.center(50))
opt = input('请选择功能: ')
if not opt or opt not in '45' or len(opt) > 1:
print('---无效选项!请重新选择:---')
continue
else:
break
if opt in '4':
query()
else:
break
print('---已成功退出!---')
print('感谢使用学生信息管理系统v1.2!'.center(50))
if __name__ == '__main__':
main()
|