WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 技术教程(干货) 2020学生疫情简单管理系统

2020学生疫情简单管理系统

夏柔 3月 2, 2020

2020学生疫情简单管理系统-WordPress极简博客

根据要求编写而成的学生信息管理系统

  • 基本功能包含(可依据自己情况增删):
  • 可以将完成过的实验融如本系统,统字符串进度条显示当前的录取进度等
  • | 1)添加学生信息              |
  • | 2)显示所有学生的信息           |
  • | 3)删除学生信息              |
  • | 4)修改学生信息              |
  • | 5)按学生外出次数高-低显示学生信息     |
  • | 6)按学生外出次数低-高显示学生信息     |
  • | 7)按学生所在地确诊人员数高-低显示学生信息 |
  • | 8)按学生所在地确诊人员数低-高显示学生信息 |
  • |    9)保存学生信息到文件(students.txt) |
  • |    10)从文件中读取数据(students.txt) |
  • | 退出:其他任意按键<回车> |
  • 学生信息包含但不限与:学号,姓名,外出次数,当地确诊数,录入时间等
student_info.py
import time
def meun():
    menu_info = '''+----------------------+
| 1)添加学生信息                           |
| 2)显示所有学生的信息                     |
| 3)删除学生信息                           |
| 4)修改学生信息                           |
| 5)按学生外出次数高-低显示学生信息       |
| 6)按学生外出次数低-高显示学生信息       |
| 7)按学生所在地确诊人数高-低显示学生信息 |
| 8)按学生所在地确诊人数低-高显示学生信息 |
| 9)保存学生信息到文件(students.txt)      |
| 10)从文件中读取数据(students.txt)      |
| 退出:其他任意按键<回车>                 |
+----------------------+
'''
    print(menu_info)
#以下二个函数用于sorted排序, key的表达式函数
def wbjd():
    scale = 50
    print("执行开始".center(scale//2,"-"))
    start = time.perf_counter()
    for i in range(scale +1):
        a = '*' * i;
        b= '.'*(scale - i)
        c = (i/scale)*100
        dur = time.perf_counter() - start
        print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
        time.sleep(0.1)
    print("\n"+"执行结束".center(scale//2,'-'))

def get_outgotimes(*a):
    for i in a:
        return i.get("outgotimes")
def get_people(*a):
    for i in a:
        return i.get("people")
# 1)添加学生信息
def add_student_info():
    L = []
    while True:
        sid = input("请输入学号:")
        if not sid: #学号为空跳出循环
            break
        n = input("请输入姓名:")
        if not n: #名字为空,跳出循环
            break
        try:
            a = int(input("请输入外出次数:"))
            s = int(input("请输入所在地确诊人数:"))
        except:
            print("输入无效,请输入整数....重新录入信息")
            continue
        t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        info = {"id":sid,"name":n,"outgotimes":a,"people":s,"intimes":t}
        L.append(info)
    print("学生信息录入完毕!!!")
    return L

# 2)显示所有学生的信息
def show_student_info(student_info):
    if not student_info:
        print("无数据信息......")
        return
    print("学号".center(12),"姓名".center(8),"外出次数".center(8),"确诊人数".center(8),"录入时间".center(30))
    for info in student_info:
        print(info.get("id").center(12),info.get("name").center(8),str(info.get("outgotimes")).center(8),str(info.get("people")).center(8),info.get("intimes").center(30))

# 3) 删除学生信息
def del_student_info(student_info,del_name = ''):
    if not del_name:
        del_name = input("请输入删除的学生姓名:")
    for info in student_info:
        if del_name == info.get("name"):
            print("学生信息即将被删除或更新")
            return info
    raise IndexError("学生信息不匹配,没有找到%s" %del_name)

# 4) 修改学生信息
def mod_student_info(student_info):
    mod_name = input("请输入修改的学生姓名:")
    for info in student_info:
        if mod_name == info.get("name"):
            m = input("请输入学号:")
            if not m:
                break
            a = int(input("请输入外出次数:"))
            s = int(input("请输入所在地确诊人数:"))
            t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            info = {"id":m,"name":mod_name,"outgotimes":a,"people":s,"intimes":t}
            return info
    raise IndexError("学生信息不匹配,没有找到%s"%mod_name)

# 5) 按学生外出次数高—低显示学生信息
def outgotimes_reduce(student_info):
    print("按学生外出次数高—低显示:")
    mit = sorted(student_info,key = get_outgotimes,reverse = True)
    show_student_info(mit)

# 6) 按学生外出次数低—高显示学生信息
def outgotimes_rise(student_info):
    print("按学生外出次数低—高显示:")
    mit = sorted(student_info,key = get_outgotimes)
    show_student_info(mit)

# 7) 按照学生所在地确诊人数高—低显示学生信息
def people_reduce(student_info):   
    print("按学生所在地确诊人数高-低显示学生信息:")
    mit = sorted(student_info ,key = get_people,reverse = True)
    show_student_info(mit)

# 8)按学生所在地确诊人数低—高显示学生信息
def people_rise(student_info): 
    print("按学生所在地确诊人数低—高显示学生信息")
    mit = sorted(student_info ,key = get_people)
    show_student_info(mit)

# 9)保存学生信息到文件(students.txt)
def save_info(student_info):
    try:
        students_txt = open("students.txt","w")     # 以写模式打开,并清空文件内容
    except Exception as e:
        students_txt = open("students.txt", "x")    # 文件不存在,创建文件并打开
    for info in student_info:
        students_txt.write(str(info)+"\n")          # 按行存储,添加换行符
    students_txt.close()

# 10)从文件中读取数据(students.txt) 
def read_info():
    old_info = []
    try:
        students_txt = open("students.txt")
    except:
        print("暂未保存数据信息")                       # 打开失败,文件不存在说明没有数据保存
        return
    while True:
        info = students_txt.readline()
        if not info:
            break
        #print(info)
        info = info.rstrip()    # 去掉换行符
        # print(info)
        info = info[1:-1]       # 去掉{}
        # print(info)
        student_dict = {}       # 单个学生字典信息
        for x in info.split(","):   # 以,为间隔拆分
            # print(x)
            key_value = []      # 开辟空间,key_value[0]存key,key_value[0]存value
            for k in x.split(":"):  # 以:为间隔拆分
                k = k.strip()       # 去掉首尾空字符
                # print(k)
                if k[0] == k[-1] and len(k) > 2:        # 判断是字符串还是整数
                    key_value.append(k[1:-1])           # 去掉 首尾的'
                else:
                    key_value.append(str(k))
                # print(key_value)
            student_dict[key_value[0]] = key_value[1]   # 学生信息添加
        # print(student_dict)
        old_info.append(student_dict)   # 所有学生信息汇总
    students_txt.close()  
    return old_info   

    
def main():
    student_info = []
    while True:
        wbjd()
        # print(student_info)
        meun()
        number = input("请输入选项:")
        if number == '1':
            student_info = add_student_info()
        elif number == '2':
            show_student_info(student_info)
        elif number == '3':
            try:
                student_info.remove(del_student_info(student_info))
            except Exception as e:
                # 学生学号不匹配
                print(e)            
        elif number == '4':
            try:                
                student = mod_student_info(student_info)
            except Exception as e:
                # 学生学号不匹配
                print(e)
            else:
                # 首先按照根据输入信息的名字,从列表中删除该生信息,然后重新添加该学生最新信息
                student_info.remove(del_student_info(student_info,del_name = student.get("name")))  
                student_info.append(student)
        elif number == '5':
            outgotimes_reduce(student_info)
        elif number == '6':
            outgotimes_rise(student_info)
        elif number == '7':
            people_reduce(student_info)
        elif number == '8':
            people_rise(student_info)
        elif number == '9':
            save_info(student_info)
        elif number == '10':
            student_info = read_info()
        else:
            break
        input("回车显示菜单")

main()
4825771
J2dcg1.png
猜你喜欢
  • Nginx添加跨域限制规则
  • 使用测速脚本对国内Linux服务器进行测速
  • 域名爆破之自动化信息收集脚本
  • 利用免费接口实现国家开放大学刷网课脚本
  • RiProV2定制导航条
  • 判断是否在微信浏览器打开
  • 微信内自动播放音频非百度方案
  • 利用veImageX加速您的网站,想不快都难!
  • SWAPIDC减少注册信息及防刷注册量教学
  • Python实现定时发送每日早报及生活指数
29 5月, 2020
不怕累,就怕脱贫户再掉队(干部状态新观察・提升贫困治理能力)
夏柔
站长
夏山如碧 - 怀柔天下
1688
文章
25
评论
58145K
获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2