MIS--信息管理系统

这是一个使用Python实现的学生信息管理系统,包括添加、删除、修改、遍历、排序和统计学生信息功能。数据存储在本地文本文件中,支持按学号查找、删除和修改记录,还能对学生信息进行排序和数量统计。整个系统通过用户交互界面进行操作,具有良好的用户体验。
摘要由CSDN通过智能技术生成

一、需求

MIS---学生信息管理,包括添加、删除、修改、遍历、排序、统计和退出系统的功能,并且把信息储存在本地的磁盘中(这里我将信息保存在了一个名为Stuinformation.txt的文本文件中,数据较大时,可可储存在数据库中)。

二、代码编写

  1. meau()函数,用于展示功能菜单
    
    def meau():
        print("\t\t\t1:添加用户 ")  # 功能选择
        print("\t\t\t2:删除用户 ")
        print("\t\t\t3:修改用户 ")
        print("\t\t\t4:遍历用户 ")
        print("\t\t\t5:排序用户 ")
        print("\t\t\t6:统计用户 ")
        print("\t\t\t0:退出系统 ")
        print('=====' * 8)
  2. find()函数,用于将输入的用户与本地保存的数据进行对比,判断是否存在
    def find(sid):                      #用于查找用户
        T = False
        with open('Stuinformation.txt','r+',encoding='utf-8')as lf:
            dic = {}                    # 定义空字典
            if not lf.read():           #文件没有内容
                T = True
            else:
                with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:#打开文件
                    for list in lf:
                        dic = dict(eval(list))                              # 字符串转字典
                        if str(dic['学号']) == str(sid):      #判断
                            T = True
                            break
                        else:
                            T = False
        return T
  3. save()函数,用于新的列表存储在文件中
    def save(lis):                #用于储存用户信息
        with open('Stuinformation.txt','w',encoding='utf-8')as f:
            for i in lis:
                f.write(str(i) + "\n")
        print("保存成功")
  4. addstudent()函数,用于添加用户信息到文件中
     

    def addstudent():#添加用户函数
        lis = []
        global flag     #标志
        flag = True
        dic1 = {}
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            for line in lf:
                if len(line) == '':#判断文件是不是为空
                    break
                else:
                    # with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
                    #     for list in lf:
                    dic1 = dict(eval(line))#将读出的数据转化为字典
                    lis.append(dic1)       #添加到列表
        while flag:
            try:                            #检测输入异常
                sid = int(input("请输入学生的学号(0-100):"))  # 此时需要判断 列表中是否为空 为空直接添加
                age = int(input("请输入学生的年龄(0-100)"))
            except:
                print("输入的不是正整数,重新输入:")
                continue
            name = input("请输入学生的姓名:")
            sex = input("请输入学生的性别(男/女):")
            spe = input("请输入学生的专业:")
            lis.append({'学号': sid, '姓名': name, '性别': sex, '年龄': age, '专业': spe})    #添加信息
            print()
            k = find(sid)
            if not k:
                res = input("是否继续添加用户(y/n)?")
                if res == 'y':
                    flag = True
                else:
                    flag = False
                    break
            else:
                print("已存在该用户,添加失败!")
                print('=====' * 8)
        save(lis)
  5. del()函数,用于删除用户信息
     

    def dels():#删除用户信息
        lis2= []           #用来存放用户信息
        dic1 = {}          #用来存放用户信息
        num = input('请输入要删除的学号:')
        k = find(num)#调用find函数查看是否存在该用户
        if k:
            with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
                for list in lf:
                    dic1 = dict(eval(list))
                    if str(dic1['学号']) == str(num):#判断是否存在该用户
                        pass                #存在不将信息添加到lis2列表中(在新的列表中不会出现该用户,达到删除的目的)
                    else:
                        lis2.append(dic1)   #将新的字典保存到列表中
                save(lis2)                  #储存信息
                print("删除成功!")
        else:
            print("没有该用户,无法删除!")
  6. revs()函数,用于修改用户信息
     

    def revs():
        num = input('请输入要修改的学号:')
        global fal
        fal = True
        dic1 = {}
        lis = []
        with open('Stuinformation.txt','r',encoding='utf-8')as f:
            for list in f:
                dic1 = dict(eval(list))
                if str(dic1['学号']) != str(num):
                    lis.append(dic1)
        if find(num):
            while fal:
                try:
                    sid = int(input("请输入新的学生学号(0-100):"))
                    age = int(input("请输入新学生年龄(0-100)"))
                except:
                    print("输入的不是正整数,重新输入:")
                    continue
                name = input("请输入新的学生姓名:")
                sex = input("请输入新的学生性别(男/女):")
                spe = input("请输入新的学生专业:")
                dic1 ={'学号': sid, '姓名': name, '性别': sex, '年龄': age, '专业': spe}
                lis.append(dic1)
                break
            save(lis)
            print("修改成功!")
        else:
            print("没有该用户,无法修改!")
  7. test()函数,用户遍历用户信息
     

    def test():#遍历内容函数
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            dic1 = {}
            for list in lf:
                dic1 = dict(eval(list))
                print('学号:',dic1['学号'],' 姓名:',dic1['姓名'],' 性别:',dic1['性别'], ' 年龄:',dic1['年龄'],' 专业:', dic1['专业'])
  8. sors()函数,用于排序用户信息(这里按找学号的大小排序)
     

    def sors():#排序函数--使用列表中的sort函数
        lis1 =[]
        dic1 ={}
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            for list in lf:
                dic1 = dict(eval(list))
                lis1.append(dic1)
                lis1.sort(key=lambda x:x['学号'])
            save(lis1)
  9. cens()函数,用于统计用户个数
     

    def cens():#统计用户个数--由于是按行保存 所以有多少行就有多少个用户
        i = 0
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            for list in lf:
                i+=1
            print("一共有%d个用户"%i)
  10. mian()函数,功能判断
     

    def main():             #功能选择
        print('=====' * 8)  # 上界面
        while 1:
            meau()
            num1 = int(input("请输入功能对应的数字:"))
            if num1 == 1:
                addstudent()
            elif num1 == 2:
                dels()
            elif num1 == 3:
                revs()
            elif num1 == 4:
                test()
            elif num1 == 5:
                sors()
            elif num1 == 6:
                cens()
            else:
                break


    完全代码
     

    #-*- coding:utf-8 -*-
    '''
    @Author: duanyh
    20/20
    @contact: 
    @Time: 2021/11/3 14:57
    @version: 1.0
    '''
    def meau():
        print("\t\t\t1:添加用户 ")  # 功能选择
        print("\t\t\t2:删除用户 ")
        print("\t\t\t3:修改用户 ")
        print("\t\t\t4:遍历用户 ")
        print("\t\t\t5:排序用户 ")
        print("\t\t\t6:统计用户 ")
        print("\t\t\t0:退出系统 ")
        print('=====' * 8)
    def find(sid):                      #用于查找用户
        T = False
        with open('Stuinformation.txt','r+',encoding='utf-8')as lf:
            dic = {}                    # 定义空字典
            if not lf.read():           #文件没有内容
                T = True
            else:
                with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:#打开文件
                    for list in lf:
                        dic = dict(eval(list))                              # 字符串转字典
                        if str(dic['学号']) == str(sid):      #判断
                            T = True
                            break
                        else:
                            T = False
        return T
    def addstudent():#添加用户函数
        lis = []
        global flag     #标志
        flag = True
        dic1 = {}
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            for line in lf:
                if len(line) == '':#判断文件是不是为空
                    break
                else:
                    # with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
                    #     for list in lf:
                    dic1 = dict(eval(line))#将读出的数据转化为字典
                    lis.append(dic1)       #添加到列表
        while flag:
            try:                            #检测输入异常
                sid = int(input("请输入学生的学号(0-100):"))  # 此时需要判断 列表中是否为空 为空直接添加
                age = int(input("请输入学生的年龄(0-100)"))
            except:
                print("输入的不是正整数,重新输入:")
                continue
            name = input("请输入学生的姓名:")
            sex = input("请输入学生的性别(男/女):")
            spe = input("请输入学生的专业:")
            lis.append({'学号': sid, '姓名': name, '性别': sex, '年龄': age, '专业': spe})    #添加信息
            print()
            k = find(sid)
            if not k:
                res = input("是否继续添加用户(y/n)?")
                if res == 'y':
                    flag = True
                else:
                    flag = False
                    break
            else:
                print("已存在该用户,添加失败!")
                print('=====' * 8)
        save(lis)
    
    def save(lis):#用于储存用户信息
        with open('Stuinformation.txt','w',encoding='utf-8')as f:
            for i in lis:
                f.write(str(i) + "\n")
        print("保存成功")
    def dels():#删除用户信息
        lis2= []           #用来存放用户信息
        dic1 = {}          #用来存放用户信息
        num = input('请输入要删除的学号:')
        k = find(num)#调用find函数查看是否存在该用户
        if k:
            with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
                for list in lf:
                    dic1 = dict(eval(list))
                    if str(dic1['学号']) == str(num):#判断是否存在该用户
                        pass                #存在不将信息添加到lis2列表中(在新的列表中不会出现该用户,达到删除的目的)
                    else:
                        lis2.append(dic1)   #将新的字典保存到列表中
                save(lis2)                  #储存信息
                print("删除成功!")
        else:
            print("没有该用户,无法删除!")
    def revs():
        num = input('请输入要修改的学号:')
        global fal
        fal = True
        dic1 = {}
        lis = []
        with open('Stuinformation.txt','r',encoding='utf-8')as f:
            for list in f:
                dic1 = dict(eval(list))
                if str(dic1['学号']) != str(num):
                    lis.append(dic1)
        if find(num):
            while fal:
                try:
                    sid = int(input("请输入新的学生学号(0-100):"))
                    age = int(input("请输入新学生年龄(0-100)"))
                except:
                    print("输入的不是正整数,重新输入:")
                    continue
                name = input("请输入新的学生姓名:")
                sex = input("请输入新的学生性别(男/女):")
                spe = input("请输入新的学生专业:")
                dic1 ={'学号': sid, '姓名': name, '性别': sex, '年龄': age, '专业': spe}
                lis.append(dic1)
                break
            save(lis)
            print("修改成功!")
        else:
            print("没有该用户,无法修改!")
    def test():#遍历内容函数
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            dic1 = {}
            for list in lf:
                dic1 = dict(eval(list))
                print('学号:',dic1['学号'],' 姓名:',dic1['姓名'],' 性别:',dic1['性别'], ' 年龄:',dic1['年龄'],' 专业:', dic1['专业'])
    def sors():#排序函数--使用列表中的sort函数
        lis1 =[]
        dic1 ={}
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            for list in lf:
                dic1 = dict(eval(list))
                lis1.append(dic1)
                lis1.sort(key=lambda x:x['学号'])
            save(lis1)
    def cens():#统计用户个数--由于是按行保存 所以有多少行就有多少个用户
        i = 0
        with open('Stuinformation.txt', 'r+', encoding='utf-8')as lf:
            for list in lf:
                i+=1
            print("一共有%d个用户"%i)
    
    def main():             #功能选择
        print('=====' * 8)  # 上界面
        while 1:
            meau()
            num1 = int(input("请输入功能对应的数字:"))
            if num1 == 1:
                addstudent()
            elif num1 == 2:
                dels()
            elif num1 == 3:
                revs()
            elif num1 == 4:
                test()
            elif num1 == 5:
                sors()
            elif num1 == 6:
                cens()
            else:
                break
    
    
    if __name__ == '__main__':
        main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值