怎样用Python搭建一个管理系统

本文介绍了如何使用Python和tkinter库构建一个疫苗管理系统,涵盖了数据库连接、用户界面设计,包括注册、登录、疫苗信息管理等多个功能模块,适合Python初学者进行实战练习。
摘要由CSDN通过智能技术生成

最近有不少小伙伴问我,Python 怎么学,我的统一回答:就是实战,多练。无论做什么,都逃不过熟能生巧。其次就是从自己的兴趣出发,做一些实战小项目。往往一些小项目都藏着很多基础,这周在家闲着的时候给大家用Python写了一个疫苗管理系统的小项目。很适合新手练习,主要涉及的知识有Python、tkinter、数据库存储等。(资料点这里

在这里插入图片描述

整体结构图

在这里插入图片描述

连接数据库

def connect_DBS(self, database, content):
    db = pymysql.connect(host="localhost", user="root", password="pwd", database=database)
    cursor = db.cursor()
    cursor.execute(content)
    data = cursor.fetchone()
    db.commit()
    db.close()
    return data

主界面

在这里插入图片描述

def main_window(self):
    tk.Button(app, text='登录', bg='white', font=("Arial,12"), width=12, height=1, command=self.login).place(x=260,                                                                                                      y=200)
    tk.Button(app, text='注册', bg='white', font=("Arial,12"), width=12, height=1, command=self.register).place(x=260,                                                                                                                y=240)
    tk.Button(app, text='退出', bg='white', font=("Arial,12"), width=12, height=1, command=self.quit_mainloop).place(x=260, y=280)

注册界面

在这里插入图片描述

def register(self):
    register = tk.Toplevel(app)
    register.title('用户注册')
    register.geometry("600x400")
    tk.Label(register, text="欢迎注册", font=("KaiTi", 40)).place(x=200, y=20)
    tk.Label(register, text='添加管理员姓名:', font=("Arial", 9)).place(x=80, y=120)
    tk.Label(register, text='确认管理员编号:', font=('Arial', 9)).place(x=80, y=150)
    entry1 = tk.Entry(register, font=("Arial, 9"), width=46, )
    entry2 = tk.Entry(register, font=("Arial, 9"), width=46, )
    entry1.pack()
    entry2.pack()
    entry1.place(x=180, y=120, width=350, height=25)
    entry2.place(x=180, y=150, width=350, height=25)

    def user_register():
        user_name = entry1.get()
        user_code = entry2.get()
        if user_name == "" or user_code == "":
            tkinter.messagebox.showwarning(title="警告", message="用户名或密码不能为空!")
        else:
            content = "INSERT INTO user_info (user_name, user_code) VALUES ('%s', '%s');" % (user_name, user_code)
            self.connect_DBS(database="vaccine_info", content=content)
            tkinter.messagebox.showinfo(title="信息", message="注册成功!")
    tk.Button(register, text="注册", bg='white', font=("Arial,9"), width=12, height=0, command=user_register).place(x=250, y=250)

登陆界面

在这里插入图片描述

def login(self):
    login = tk.Toplevel(app)
    login.title('用户登录')
    login.geometry("600x400")
    tk.Label(login, text="欢迎登录", font=("KaiTi", 40)).place(x=200, y=20)
    tk.Label(login, text='管理员姓名:', font=("Arial", 9)).place(x=80, y=120)
    tk.Label(login, text='管理员编号:', font=('Arial', 9)).place(x=80, y=150)
    entry1 = tk.Entry(login, font=("Arial, 9"), width=46)
    entry2 = tk.Entry(login, font=("Arial, 9"), width=46, show="*")
    entry1.pack()
    entry2.pack()
    entry1.place(x=180, y=120, width=350, height=25)
    entry2.place(x=180, y=150, width=350, height=25)

    def user_check():
        user_name = entry1.get()
        user_code = entry2.get()
        content = "SELECT * FROM user_info WHERE user_name = '%s';" % user_name
        data = self.connect_DBS(database="vaccine_info", content=content)
        try:
            if user_name == data[1] and user_code == data[2]:
                tkinter.messagebox.showinfo(title="信息", message="欢迎登录!")
                self.options()
            elif user_name != data[1]:
                tkinter.messagebox.showerror(title="错误", message="请注册后再进行登录!")
            elif user_name == data[1] and user_code != data[2]:
                tkinter.messagebox.showerror(title="错误", message="密码错误!")
        except TypeError:
            tkinter.messagebox.showerror(title="错误", message="请注册后再进行登录!")
    tk.Button(login, text="登录", bg='white', font=("Arial,9"), width=12, height=0, command=user_check).place(x=250, y=250)

功能选项

功能区主界面

在这里插入图片描述

def options(self):
    options = tk.Toplevel(app)
    options.title('功能选项')
    options.geometry("600x500")
    tk.Label(options, text="欢迎使用!", font=("KaiTi", 40)).place(x=180, y=15)
    tk.Button(options, text='新建疫苗信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.add_vacc_info).place(x=100, y=100)
    tk.Button(options, text='新建疫苗分配信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.add_vaccine_distr_info).place(x=100, y=160)
    tk.Button(options, text='新建疫苗养护信息', bg='white', font=("Arial,12"), width=20, height=2,              command=self.add_vaccine_maintenance_info).place(x=100, y=220)
    tk.Button(options, text='新建接种人员信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.add_vaccination_person_info).place(x=100, y=280)
    tk.Button(options, text='查询疫苗分配信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.vaccine_distr_info_query).place(x=100, y=340)
    tk.Button(options, text='查询疫苗养护信息', bg='white', font=("Arial,12"), width=20, height=2,           command=self.vaccination_maintenance_info_query).place(x=320, y=100)
    tk.Button(options, text='查询接种人员信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.vaccination_person_info_query).place(x=320, y=160)
    tk.Button(options, text='查询疫苗信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.vaccine_info_query).place(x=320, y=220)
    tk.Button(options, text='修改疫苗信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.modify_vaccine_info).place(x=320, y=280)
    tk.Button(options, text='删除疫苗信息', bg='white', font=("Arial,12"), width=20, height=2,command=self.del_vaccine_info).place(x=320, y=340)

新建疫苗信息

在这里插入图片描述

  def add_vacc_info(self):
        add_vacc_info = tk.Toplevel(app)
        add_vacc_info.title('添加疫苗信息')
        a
好的,为了简单起见,我假设这个宿舍管理系统只需要实现基本的学生信息管理和宿舍房间管理。我们可以用Python的Flask框架来搭建这个系统。 第一步是安装必要的依赖项,包括Flask、Flask-RESTful等库。可以在命令行中输入以下命令进行安装: ``` pip install flask flask-restful ``` 第二步是创建一个Flask应用,我们可以在一个名为app.py的文件中编写以下代码: ```python from flask import Flask, request from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) student_list = [] room_dict = {} class Student(Resource): def get(self, student_id): for student in student_list: if student["id"] == student_id: return student return {"error": "Student not found."}, 404 def post(self): student = request.get_json(force=True) student_list.append(student) return {"message": "Student added."} def put(self, student_id): for student in student_list: if student["id"] == student_id: updated_student = request.get_json(force=True) student.update(updated_student) return {"message": "Student updated."} return {"error": "Student not found."}, 404 def delete(self, student_id): for student in student_list: if student["id"] == student_id: student_list.remove(student) return {"message": "Student deleted."} return {"error": "Student not found."}, 404 class Room(Resource): def get(self, room_number): if room_number in room_dict: return room_dict[room_number] return {"error": "Room not found."}, 404 def post(self): room = request.get_json(force=True) room_number = room["room_number"] room_dict[room_number] = room return {"message": "Room added."} def put(self, room_number): if room_number in room_dict: updated_room = request.get_json(force=True) room_dict[room_number].update(updated_room) return {"message": "Room updated."} return {"error": "Room not found."}, 404 def delete(self, room_number): if room_number in room_dict: del room_dict[room_number] return {"message": "Room deleted."} return {"error": "Room not found."}, 404 api.add_resource(Student, "/students", "/students/<string:student_id>") api.add_resource(Room, "/rooms", "/rooms/<int:room_number>") if __name__ == "__main__": app.run(debug=True) ``` 这个代码创建了一个名为app的Flask应用,并创建了两个资源类:Student和Room。Student类包含了获取、添加、修改和删除学生信息的方法,而Room类包含了获取、添加、修改和删除宿舍房间信息的方法。我们在这里使用了一个全局变量student_list来保存学生信息,以及一个字典room_dict来保存宿舍房间信息。 最后,我们将这两个资源类添加到Flask的API中,以及指定了API的路由。如果我们运行这个代码,它将在本地启动一个Web服务器,可以通过访问http://localhost:5000/students和http://localhost:5000/rooms来访问这两个资源。 这个代码只是一个框架,你可以根据自己的实际需求添加更多的功能和逻辑。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值