| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 2021-10-02 -> 正文阅读 |
|
[Python知识库]2021-10-02 |
学生信息记录管理系统主模块python代码
数据组织结构 ??编写本系统是学习python之dict练习之作业。数据以字典作为处理容器,用pickle序列化到磁盘文件保存。我想达到每个学生信息都可以用学号或姓名直接用key查询。我想到的是每个学生用学号和姓名分别为key做两条的记录(两条记录的学号和姓名的后面是完全相同的——一个以字段为key的字典): 1,'学号: {‘姓名’: {‘性别’: ‘男’, ‘民族’: ‘汉’, …, ‘家长电话’: ‘153 2514’}} 2,'姓名: {‘学号’: {‘性别’: ‘男’, ‘民族’: ‘汉’, …, ‘家长电话’: '1532514’}} ??就在我写这个文档的时候发现:修改一下,更易于代码操作,可能查找速度也会快些(将抽时间百万记录验证速度后,重新改版)。 网友提点我的结构方法: ??通过百万条学生信息记录记录(实则是分别以是1万、100万和200万,进行比拼验证)的查找,比拼速度。在平均速度上(随机查找10条记录),两种数据组织结构,无太大差异,几乎持平。但就单条记录查找来看,(学号, 姓名)元组为key,需要遍历,有快有慢,快慢相较不止一倍。但分别以学号或者姓名为key的数据组织,则相对均衡,几近平均速度。由实验可见,数据量(1w、100w、200w)大小,影响都不是很大,特别是字典,2w和400w中查找,时间几乎相等,确实让人震惊! **口令校验** 口令校验python 代码
??一个系统,设置登录口令是必要的,于是做了个通过ord()、chr()简单加密解密的口令校验模块。口令字符以单个加密字符为元素的密文列表pickle序列化到文件磁盘保存。如无磁盘密文文件或口令设置为''(空),登录时不进入校验界面,口令不为'',提示输入口令字符数。 校验口令不解密,以同样的方式加密输入的口令,直接比对密文列表(我感觉这样子好像更安全)。 **“口令”模块** ??“口令”菜单下,可以对口令进行“修改”和“查看”操作。进入“口令”菜单与进入系统一样,要校验口令。([返回页首](#top))
系统菜单 ??制作菜单界面,我对细节显示调节感觉有些繁琐,费时。因而将调整好的菜单做成了一个模板def show_menu(list),list为菜单列表(不含“退出”),模板会list.append()“退出”,依次双列显示菜单列表项,方便下次弄类似菜单。([返回页首](#top))
菜单显示python 代码
“字段”模块 python 代码
??如果学生信息记录管理系统的操作者不能对学生信息记录字段进行编辑,那么这就是一个“铁核桃”。对于学生信息记录项的更改,还要用到代码层面,相当不便,这不是我想要的结果。基于这个想法就有了这个字段模块,可以对字段进行“修改”“插入”“追加”“删除”操作。最初,字段内容我是序列化到文件磁盘保存的,每次操作都得从文件读取。后来发现,把字段内容列表优化到了学生信息记录字典中('字段': ['性别', '民族', ..., '家长电话']),与字典一起在系统运行时即随字典读入内存,方便、安全。
“添加”模块 ??学生信息记录的新增模块。输入学号时,对学号的格式进行检查(数字位数和范围),不合规范报错并中断添加操作返回主菜单。输入“姓名”可以是任意字符串,检索字典中是否已有该输入字符串为key的记录,有则重新输入,直到不重名(但不能为''(空),为''返回。)。([返回页首](#top))
“查询”模块 ??“查询”模块,对输入学号或者姓名进行查找。找到列印,找不到打印错误提示后返回主菜单。([返回页首](#top))
“删除”模块 ??“删除”模块,对输入的学号或者姓名进行查找,找到列印并让用户确认删除,不确认返回。找不到打印错误提示并返回。([返回页首](#top))
“修改”模块 ?? “修改”模块,对查找到的记录按序列印,选择相应序号修改相应项。对学号的修改,一样要检查是否规范和重复,对姓名修改要检查重复。其他字段的修改相应简单,直接修改即可。不选择序号,返回主菜单。 ??修改的实现:找到记录,读取内容到变量,修改变量后,确认修改,删除原有的字典记录,修改后的记录存入字典,序列化到文件磁盘保存。([返回页首](#top))
“备份”模块 ??用os.system()作为容器来执行Linux命令,备份数据文件和恢复。
“文本”模块 ??“文本”模块,将学生信息记录以学号为序,逐条将记录以utf-8码格式写入students.txt,每条记录一行。([返回页首](#top))
“说明”模块 ??“说明”模块,列印本文档内容。 “作者”模块 ??“作者”模块,打印作者信息。请大家指正、探讨。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 17:41:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |