GUI项目实战【二】:用tkinter+sqlite3制作可登录可注册的GUI界面【文末源码地址】

项目介绍

使用tkinter开发的一款登录和注册图形化界面

使用tkinter开发的一款登录和注册图形化界面,并且使用 ttkbootstrap 进行界面美化。

项目以学校选课系统为参考,将登陆身份设置为:管理员、教师、学生。登录时可根据登录的身份自动打开对应的界面【空白界面暂未开发】。

项目中用户的信息全部保存在 sqlite 数据库中,数据表有:users表保存账号密码信息,remember_psw表保存上次登录信息。

该项目还有其他小功能:左上角图标根据内容改变、根据输入有误信息准确提示;更多功能欢迎体验。

项目管理员手机号为:admin

项目管理员密码为:admin

登录功能

登录界面包含:输入手机号、密码,记住密码选项框组件,输入正确信息后登录成功!输入错误信息及未输入完整信息均有提示框。

登录界面展示

在这里插入图片描述

登录主要功能

  • 输入密码不显示明文,以 * 代替
  • 账号密码不正确或未输入,有不同弹窗提示
  • 记住密码功能,勾选后下次直接登录
  • 可以根据登录的身份不同,打开对应的界面【空白界面暂未开发】

登录部分源码

登录界面部分代码展示:

    def login_window(self, frame=None):
        # 用户名输入框
        username_label = Label(frame, text="手机号:")
        username_label.grid(row=1, column=1, padx=5, pady=20)
        self.login_phone = tk.StringVar()
        username_entry = Entry(frame, bootstyle=INFO, textvariable=self.login_phone, width=30)
        username_entry.grid(row=1, column=2, padx=5, pady=10)
        # 密码输入框
        psw_label = Label(frame, text="密    码:")
        psw_label.grid(row=2, column=1, padx=5, pady=10)
        self.login_psw = tk.StringVar()
        psw_entry = Entry(frame, bootstyle=INFO, textvariable=self.login_psw, show="*", width=30)
        psw_entry.grid(row=2, column=2, padx=5, pady=10)
        # 记住密码选项
        self.remember_psw = tk.IntVar()
        pwd_check_button = Checkbutton(frame, text="记住密码", variable=self.remember_psw)
        pwd_check_button.grid(row=3, column=1, padx=5, pady=5, columnspan=2, sticky="w")
        # 登录按钮
        login_button = Button(frame, text="登  录", bootstyle=PRIMARY, width=40, command=self.login)
        login_button.grid(row=4, column=1, padx=5, pady=10, columnspan=2)
        # 查看是否记住密码
        remember_select_sql = """SELECT phone,password,is_remember FROM remember_psw WHERE id=1;"""
        is_remember = self.execute_sql(remember_select_sql)
        if is_remember:
            if is_remember[0][2] == "1":
                self.login_phone.set(is_remember[0][0])
                self.login_psw.set(is_remember[0][1])
                self.remember_psw.set(int(is_remember[0][2]))

登录功能部分代码展示:

    def login(self):
        phone = self.login_phone.get()
        password = self.login_psw.get()
        remember = self.remember_psw.get()
        if phone and password:
            md5_password = self.encryption(password)
            select_sql = f"""select 1 from users where phone='{phone}' AND password_md5='{md5_password}';"""
            if self.execute_sql(select_sql):
                create_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                # 更新记住密码操作
                update_sql = f"""UPDATE remember_psw SET phone='{phone}',password='{password}',is_remember='{remember}',create_time='{create_time}' WHERE id=1;"""
                self.execute_sql(update_sql)
                # showinfo(title="登录", message="登录成功!")
                self.register_login.destroy()
                # 根据登录的身份打开不同的界面
                select_id_sql = f"""SELECT name,identity FROM users WHERE phone='{phone}';"""
                select_id_result = self.execute_sql(select_id_sql)
                if select_id_result[0][1] == "管理员":
                    self.admin_window()
                elif select_id_result[0][1] == "教师":
                    self.teacher_window()
                elif select_id_result[0][1] == "学生":
                    self.student_window()
            else:
                showerror(title="失败", message="账号密码输入错误!")
        else:
            showerror(title="失败", message="账号密码输入有误!")

注册功能

注册界面主要包括:输入用户名、手机号、密码、身份下拉框组件。输入信息有误均有不同弹窗提示输入错误信息及未输入完整信息均有提示框。

注册界面展示

在这里插入图片描述

注册主要功能

  • 信息未填写完整,有弹窗提示
  • 手机号格式不正确,有弹窗提示
  • 注册密码以md5格式保存在数据库
  • 密码至少6位数且由数字、字母组成
  • 身份必须选择一项,否则有弹窗提示
  • 注册的手机号已存在,有弹窗提示
  • 注册成功有弹窗提示
  • 注册成功后,自动清空注册内容

注册部分源码

注册界面部分代码展示:

    def register_window(self, frame=None):
        padx = 5
        pady = 5
        # 用户名输入框
        username_label = Label(frame, text="用户名:")
        username_label.grid(row=1, column=1, padx=padx, pady=pady)
        self.register_username = tk.StringVar()
        self.register_username_entry = Entry(frame, bootstyle=INFO, textvariable=self.register_username, width=30)
        self.register_username_entry.grid(row=1, column=2, padx=padx, pady=pady)
        # 手机号输入框
        username_label = Label(frame, text="手机号:")
        username_label.grid(row=2, column=1, padx=padx, pady=pady)
        self.register_pone = tk.StringVar()
        self.register_phone_entry = Entry(frame, bootstyle=INFO, textvariable=self.register_pone, width=30)
        self.register_phone_entry.grid(row=2, column=2, padx=padx, pady=pady)
        # 密码输入框
        psw_label = Label(frame, text="密    码:")
        psw_label.grid(row=3, column=1, padx=padx, pady=pady)
        self.register_psw = tk.StringVar()
        self.register_psw_entry = Entry(frame, bootstyle=INFO, textvariable=self.register_psw, show="*", width=30)
        self.register_psw_entry.grid(row=3, column=2, padx=padx, pady=pady)
        # 身份
        psw_label = Label(frame, text="身    份:")
        psw_label.grid(row=4, column=1, padx=padx, pady=pady)
        self.register_id = tk.StringVar()
        self.register_combox = Combobox(frame, bootstyle=PRIMARY, textvariable=self.register_id, state="readonly",
                                        width=28)
        self.register_combox["value"] = ("下拉选择身份:", "教师", "学生")
        self.register_combox.current(0)
        self.register_combox.grid(row=4, column=2, padx=padx, pady=pady)
        # 登录按钮
        login_button = Button(frame, text="注  册", bootstyle=PRIMARY, width=40, command=self.register)
        login_button.grid(row=5, column=1, padx=padx, pady=pady, columnspan=2)

注册功能部分代码展示:

 def register(self):
        user_name = self.register_username.get()
        phone = self.register_pone.get()
        password = self.register_psw.get()
        identity = self.register_id.get()
        if user_name and phone and password and (identity in ("教师", "学生")):
            if not re.match(r"^1[356789]\d{9}$", phone):
                showerror(title="失败", message="手机号填写有误!")
            elif not (password.isalnum() and len(password) >= 6):
                showerror(title="失败", message="密码至少6位且由数字、字母组成!")
            else:
                # 判断手机号是否存在
                select_sql = f"""select 1 from users where phone='{phone}' LIMIT 1;"""
                if self.execute_sql(select_sql):
                    # 手机号已注册
                    showerror(title="失败", message="该手机号已注册!")
                else:
                    md5_password = self.encryption(password)
                    create_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    insert_users_sql = f"""
                    INSERT INTO users (name,phone,password,password_md5,identity,create_time) VALUES ('{user_name}','{phone}','{password}','{md5_password}','{identity}','{create_time}');
                    """
                    self.execute_sql(insert_users_sql)
                    insert_remember_psw_sql = f"""
                    INSERT INTO remember_psw (phone,password,is_remember,create_time) VALUES ('{phone}','{password}','0','{create_time}');
                    """
                    self.execute_sql(insert_remember_psw_sql)
                    showinfo(title="注册", message="注册成功!")
                    self.register_username_entry.delete(0, "end")
                    self.register_phone_entry.delete(0, "end")
                    self.register_psw_entry.delete(0, "end")
                    self.register_combox.current(0)
        else:
            showerror(title="失败", message="信息未填写完整!")

源码地址

链接:https://pan.baidu.com/s/1IcBa-yuEDPRa6rHUlzIZiQ?pwd=g6w1
提取码:g6w1

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
学生信息管理系统是许多学校必备的管理工具,其作用是方便学校管理人员对学生信息进行添加、查询、修改、删除等操作,以提高信息处理效率。本系统应用python tkintersqlite3两种技术,实现学生信息管理系统的前台操作选择程序,进而实现前后台的联通。 在学生信息管理系统前台操作选择程序中,用户可以使用图形界面进行操作选择,包括添加、查询、修改、删除以及保存等操作。在操作选择界面中,使用tkinter技术制作多个按钮并绑定相应的操作功能。例如,添加按钮绑定添加学生信息的操作功能,查询按钮绑定查询学生信息的操作功能,修改按钮绑定修改学生信息的操作功能,删除按钮绑定删除学生信息的操作功能,保存按钮绑定将更新后的学生信息保存到数据库中的操作功能。 同时,为了实现前后台的联通,需要使用sqlite3技术建立数据库,并对数据库进行读写操作。在程序中,使用sqlite3连接数据库,并使用相应的函数对数据进行操作。例如,当用户选择添加学生信息时,程序读取用户在图形界面中输入的信息,并将其插入到数据库中;当用户选择查询学生信息时,程序根据用户输入的查询条件,从数据库中查找相应学生信息并显示在图形界面中。 综上所述,基于python tkintersqlite3两种技术,可以实现学生信息管理系统前台操作选择程序,进而实现前后台的联通,提高学校学生信息管理的效率与准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅帅的Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值