本次改进的方面有:

1.通过函数把不同的功能封装成为了一个个模块,使主程序看起来清晰简明。

2.把信息都通过文件操作写入了json文件中,在退出系统后重新登录时数据都还存在。

整个工程分为了四个.py文件,主程序文件为mianmenu.py ,还有三个模块文件分别为 file_operation.py(文件封装模块),land.py(登录模块以及主要功能模块),regis.py(注册模块)

mianmenu.py

# @Author : Fizzyi

import regist

import land

def mainmenu():

#主界面

while True:

print(''''

---- 欢迎 ----

1.登陆

2.注册

3.退出

''')

order = input('请输入:')

if order == '1':

##进入登录界面

land.landing()

elif order == '2':

#进入注册界面

regist.regist_menu()

else:

#退出程序

break

if __name__ == '__main__':

stu_id = 0

mainmenu()

模块 1file_operation.py

# @Author : Fizzyi

import json

def basic_file_read(file):

#普通文本文件的读取

with open(file,'r',encoding='utf-8') as f:

return f.read()

def basic_file_write(file,content):

#普通文本文件的写

content = json.dumps(content)

with open(file,'w',encoding='utf-8') as f:

f.write(content)

模块2 land.py

# @Author : Fizzyi

import file_operation as files

import json

def examine_name_pwd():

#验证账号密码是否正确

user_name = input('输入账号:')

user_psw = input('请输入密码:')

file = 'userinfo/'+user_name+'.json'

dict1 = {}

try:

dict1 = json.loads(files.basic_file_read(file)) #通过loads将json格式的文件转换成python格式的字典

except:

print('该账号未注册')

return

if dict1[user_name] == user_psw:

print('密码输入正确')

else:

print('密码输入错误')

return

return file

def landing_menu(file):

#学生信息关系系统主界面

while True:

print('''

1.查看学生信息

2.添加学生信息

3.修改学生信息

4.删除学生信息

5.退出

''')

order = input('请输入-->')

if order == '1':

##查看学生信心

showall(file)

elif order == '2':

#添加学生信息

addstu(file)

elif order == '3':

#修改学生信息

exchange(file)

elif order == '4':

#删除学生信息

delstu(file)

else:

#退出

break

def showall(file):

#展示所有学生信息的函数

all_content = json.loads(files.basic_file_read(file))

for key in all_content['student'].keys():

print('姓名:%s,年龄:%s,性别:%s'%(key,all_content['student'][key]['age'],all_content['student'][key]['sex']))

def addstu(file):

#添加学生信息的函数

new_stu_name = input('请输入学生姓名:')

new_stu_age = input('请输入学生年龄:')

new_stu_sex = input('请输入学生性别:')

with open(file,'r',encoding='utf-8') as addstus:

content = json.load(addstus)

content['student'][new_stu_name]={'age':new_stu_age,'sex':new_stu_sex}

with open(file,'w',encoding='utf-8') as f:

json.dump(content,f)

print('添加成功')

def exchange(file):

#修改学生信息的函数 先不考虑重名的情况

find_name = input('请输入要修改的学生姓名:')

with open(file,'r',encoding='utf-8') as allstus:

content =json.load(allstus)

for key in content['student'].keys():

if key == find_name :

#如果找到这位同学

finde_key=input('请输入要修改的类型(age,sex):')

finde_content = input('请输入修改的内容:')

content['student'][key][finde_key] = finde_content

print('修改成功')

break

else:

print('未找到这名同学的信息')

with open(file,'w',encoding='utf-8') as allstus:

json.dump(content,allstus)

def delstu(file):

#删除学生信息的模块

delstu_name = input('请输入要删除的学生的姓名:')

with open(file,'r',encoding='utf-8') as allstus:

content =json.load(allstus)

for key in content['student'].keys():

if key == delstu_name :

del content['student'][key]

print('删除成功')

break

else:

print('未找到这名同学的信息')

with open(file,'w',encoding='utf-8') as allstus:

json.dump(content,allstus)

def landing():

#登录后先执行账号密码验证函数 在执行主函数

file = examine_name_pwd()

landing_menu(file)

模块3 regis.py

# @Author : Fizzyi

#注册功能的实现

import file_operation as files

#导入文件操作模块

def regist_menu():

user_name = input('请输入用户名:')

user_pwd = input('请输入密码:')

user_repwd = input('请再次输入密码:')

if user_pwd != user_repwd:

#验证两次输入的密码是否相等

print('输入的两次密码不相等,请重新注册')

return

file = 'userinfo/'+user_name+'.json' #将用户名设为json文件的文件名

try: #判断用户名是否存在

with open(file,'r',encoding='utf-8'):

print('该账号已被注册,请重新注册')

except:

content ={user_name:user_pwd,'student':{}} # 将用户名和密码以键值对的方式写入文件

files.basic_file_write(file,content) #调用文件写入函数

print('注册成功')

在每次注册成功后,会在工程的userinfo文件夹下新建一个以用户名为名字的.json文件,文件的初始内容为两个键值对,第一个kye和value为用户名和密码

1.png

2.png

3.png

完整运行程序过程图如下:

complete_operation_process.png

json文件内容如下:

{"zhy": "123", "student": {"asdf": {"age": "20", "sex": "女"}}}

python学生管理系统-Python 学生信息管理系统 2.0相关推荐

  1. [附源码]java毕业设计高校学生疫情防控信息管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  2. javawebJAVAJSP客户关系管理系统jsp会员信息管理系统jsp客户管理系统jsp客户登记系统

    javawebJAVAJSP客户关系管理系统jsp会员信息管理系统jsp客户管理系统jsp客户登记系统 //用户首页return "views/user/user_list";}@ ...

  3. c语言 汽车违章管理系统,车辆违章信息管理系统.docx

    PAGE PAGE IⅠ 本 科 生 毕 业 设 计(论 文) 论文题目:车辆违章信息管理系统 车辆违章信息管理系统刘步实 Vehicle Illegal Information Management ...

  4. python+django大学生专业社团信息管理系统

    社团管理信息系统,利用先进的计算机技术.网络通信技术.多媒体技术等相关的技术,将各社员与学校管理老师联系起来实现即时信息通迅,为老师学生都节约了大量的时间与精力并大大提高了学校管理工作的效率与质量,同 ...

  5. 【附源码】Python计算机毕业设计企业固定资产信息管理系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

  6. 【附源码】Python计算机毕业设计宁夏旅游信息管理系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

  7. 计算机毕业设计(附源码)python裕民镇养老院信息管理系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

  8. [附源码]Python计算机毕业设计JAVA医院信息管理系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

  9. python+vue 服装穿搭信息管理系统

    本系统采用自上往下的方法开发,基本定位如下功能: 本课题要求实现一套服装信息管理系统的设计与实现,系统主要包括管理员模块和用户模块功能模块.  由于本系统需要在不同设备上都能运行,而且电脑配置要求也要 ...

  10. 【附源码】Python计算机毕业设计社区养老信息管理系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

最新文章

  1. Linux零拷贝的原理
  2. PWA(Progressive Web App)入门系列:(四)Promise
  3. 阿里巴巴Java开发手册的正确学习姿势是怎样的? | 文末送书
  4. linux下和htm的运行,嵌入式LINUX下CGI与HTML网页之间的通信
  5. 30个超实用Python代码片段
  6. cogs 1111. 最短路
  7. 概率论————思维导图(上岸必备)(一维随机变量及其分布)
  8. 『现学现忘』Git后悔药 — 34、git commit --amend 命令
  9. 统筹高效利用时间——《小强升职记(升级版):时间管理故事书》读后感
  10. 外贸找客户软件工具-G-EXTRACTOR-谷歌商家
  11. 在ubuntu下安装韦诺之战(一款好玩策略游戏)
  12. 模拟IC设计——反相器
  13. 多源数据 单源数据是什么意思
  14. 二阶常系数齐次线性微分方程的解法
  15. 文件恢复软件哪个最好用?5 款最佳照片文件恢复软件
  16. ccc4和ccc5的区别
  17. Kettle邮件发送
  18. jstorm mysql_JStorm模型设计
  19. Box推出文字处理器Box Notes
  20. XRecyclerView、Okhttp

热门文章

  1. js判断是否在iframe和禁止网页在iframe中显示
  2. Vue之动态class写法总结
  3. GO 跟C++/C差异
  4. [翻译] CSStickyHeaderFlowLayout
  5. iOS常用第三方库之Masonry
  6. 【IMOOC学习笔记】多种多样的App主界面Tab实现方法(二)
  7. iOS MVC 介绍
  8. 关于骨骼动画及微软示例Skinned Mesh的解析
  9. delegate,event, lambda,Func,Action以及Predicate
  10. SSL 1052——开心的金明