Python基础练习:学生信息管理系统

        在学习完Python的基本语法和文件的基本操作之后,用一个学生信息管理系统来练练手。这个系统可以对学生信息进行增删改查。学生信息就是姓名、QQ号、微信号,用面向对象的思想来编程。

编程思路及编码

        数据的存取

        使用文本文件来存储学生信息。将每个学生的信息用一个字典来包装,所有学生的数据字典放到一个list中,最后用json将数据存到文件中,实现系统数据的持久化。json的知识我在另一篇中做了入门讲解:Python中的json入门

        面向对象

        创建一个student类,将增删查改四个函数封装起来。还有显示主界面的函数、显示所有学生信息的函数、重写文件的函数等。

        增加一个学生

        将文件以追加的形式打开,然后从控制台接收输入的学生信息,通过json的loads和write函数将数据追加进文件中。函数如下:

def add(self):
    name=input("姓名:")
    qq=input("QQ号:")
    weixin=input("微信号:")
    data={"name":name,"qq":qq,"微信":weixin}
    with open(self.filename, "a+") as file:
        d = json.dumps(data)
        file.write(d + '\n')
        print("添加成功!")

        删除一个学生

        将文件中的数据先全部读取出来并解析,放到一个列表中。接收输入的要删除的学生姓名,在列表中找到对应的一项,通过下标和del将这项删掉,最后将列表重写进文件中。函数如下:

def drop(self):
    list=self.load()
    name=input("请输入要删除的学生姓名:")
    i=-1
    for temp in list:
        i+=1
        if name==temp["name"]:
            del list[i]
            self.save(list)
            print("删除成功!")
            break

        查询所有学生

        将文件中的所有数据读出来并解析,放到一个列表中输出。

def load(self):
    risk_date=[]
    with open("tt.json", "r") as file:
        risk_temp = file.read().split('\n')[:-1]
        for x in risk_temp:
            json_x = json.loads(x)
            risk_date.append(json_x)
        file.close()
    return risk_date

        修改某个学生的信息

        将文件中的数据先全部读取出来并解析,放到一个列表中。接收输入的要修改的学生姓名和信息,在列表中找到对应姓名的一项,通过下标将列表中的这一项改掉,最后将列表重写进文件中。

def modify(self):
    list=self.load()
    name=input("请输入要修改的学生姓名:")
    qq=input("请输入QQ号:")
    weixin=input("请输入微信号:")
    i=-1
    for temp in list:
        i+=1
        if name==temp["name"]:
            break
    list[i] = {"name": name, "qq": qq, "微信": weixin}
    self.save(list)
    print("修改成功!")

源代码

import json
import os

class student:
    filename = "tt.json"
    def add(self):
        name=input("姓名:")
        qq=input("QQ号:")
        weixin=input("微信号:")
        data={"name":name,"qq":qq,"微信":weixin}
        with open(self.filename, "a+") as file:
            d = json.dumps(data)
            file.write(d + '\n')
            print("添加成功!")

    def save(self,list):
        with open(self.filename, "w+") as file:
            for dic in list:
                d = json.dumps(dic)
                file.write(d + '\n')
            file.close()

    def load(self):
        risk_date=[]
        with open("tt.json", "r") as file:
            risk_temp = file.read().split('\n')[:-1]
            for x in risk_temp:
                json_x = json.loads(x)
                risk_date.append(json_x)
            file.close()
        return risk_date

    def allStu(self):
        list=self.load()
        mat = "{:20}\t{:28}\t{:32}"
        for i in list:
            print("姓名:",i["name"],"\t\tQQ号:",i["qq"],"\t\t微信:",i["微信"])

    def drop(self):
        list=self.load()
        name=input("请输入要删除的学生姓名:")
        i=-1
        for temp in list:
            i+=1
            if name==temp["name"]:
                del list[i]
                self.save(list)
                print("删除成功!")
                break

    def modify(self):
        list=self.load()
        name=input("请输入要修改的学生姓名:")
        qq=input("请输入QQ号:")
        weixin=input("请输入微信号:")
        i=-1
        for temp in list:
            i+=1
            if name==temp["name"]:
                break
        list[i] = {"name": name, "qq": qq, "微信": weixin}
        self.save(list)
        print("修改成功!")

    def start_up(self):
        while True:
            list=self.load()
            print("==========================学生管理系统===========================")
            print()
            print(f"                          共有{list.__len__()}个学生                         ")
            print()
            print("==============================操作==============================")
            print("1、添加学生 2、删除学生 3、修改学生信息 4、查看所有学生 5、退出")
            op=input("请输入操作对应的号码:")
            if(op=="1"):
                self.add()
            elif op=="2":
                self.drop()
            elif op=="3":
                self.modify()
            elif op=="4":
                print()
                print("所有学生信息:")
                self.allStu()
                print()
                print()
            elif op=="5":
                os._exit(0)

s=student()
s.start_up()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值