文章目录

  • 前言
  • 一、问题描述
    • 1.1权限管理
    • 1.2业务管理
    • 1.3模型管理
    • 1.4案例管理
  • 二、实现步骤
    • 1.构建数据库和xlsx的读入
    • 2.登陆界面
      • 2.1 初始化窗体
      • 2.2 创建窗体背景以及布局
      • 2.3 创建登录函数
  • 界面
  • 总结

前言

想试着用python做个端到端的开发,从后台数据库构建到前端系统界面的实现,并且后期加入模型预测和数据分析的模块,同样在tkinter里面进行实现。虽然treeview我还在继续摸索和学习中,确实对我这种前端小白很不友好,不过想到能打通这个障碍做一个完完整整的系统就很开心。


一、问题描述

信贷系统是银行的核心业务支持系统,根据不同的岗位角色,设定的权限级别不一样。主要的用户角色有:

1.1权限管理

此为系统管理岗对应的模块,主要的功能需求是:
(1)重置密码;
(2)重置流程:将在途流程往回调节点;
(3)客户归属重置:分配用户由哪个客户经理来负责。

1.2业务管理

此为客户经理岗对应的模块,主要的功能需求是:
(1)客户管理
(2)授信管理
(3)放款申请

1.3模型管理

此为模型管理岗对应的模块,主要的功能需求是:
(1)数据统计
(2)模型调整
(3)模型测试

1.4案例管理

此为案例分析岗对应的模块,主要功能需求是:
(1)待判定案例
(2)已判定案例
(3)行内案例集

二、实现步骤

1.构建数据库和xlsx的读入

代码如下(示例):

import sqlite3
import xlrd
conn = sqlite3.connect("./bin/CRM.db")  # 打开或创建数据库
c = conn.cursor()  # 获取游标
sql_create = '''   CREATE TABLE loginuser (username varchar(6) NOT NULL PRIMARY KEY ,password varchar(16) NOT NULL ,loginrole int,loginerror int);
'''
filename = "CRM.xlsx"
#filename = filename.decode("utf-8").encode("gbk")
ex = xlrd.open_workbook(filename)
sh = ex.sheet_by_name('loginuser')
row_num = sh.nrows
list = []   # 定义列表用来存放数据
for i in range(1, row_num):  # 第一行是标题名,对应表中的字段名所以应该从第二行开始,计算机以0开始计数,所以值是1row_data = sh.row_values(i)  # 按行获取excel的值value = (row_data[0], row_data[1], row_data[2], row_data[3])list.append(value)  # 将数据暂存在列表# print(i)sql = "INSERT INTO loginuser(clientid,password,loginrole,loginerror)\VALUES(%s,%s,%s,%s)"cursor.executemany(sql, list)  # 执行sql语句db.commit()  # 提交list.clear()  # 清空listprint("worksheets: " + sheet + " has been inserted " + str(row_num) + " datas!")conn.close()

2.登陆界面

2.1 初始化窗体

初始化窗体时,主要是设置窗体的标题(title),窗口大小(geometry),窗体的其他属性的申明。这里定义的属性在整个窗体类中有效。

代码如下(示例):

def __init__(self):super().__init__() #Tk类的初始化self.title("xx银行信贷系统")self.geometry('560x320')self.resizable(0,0)tku.center_window(self)self.setup_UI()self.user = ""  #当前用户self.pw = "" #当前用户密码

2.2 创建窗体背景以及布局

窗体有几大常用的控件:

  1. Label:标签控件,可以动态展示或者静态展示,动态时用textvariable获取变量。
  2. Entry:输入框控件,获取输入的值传给对应的变量。
  3. Button:按钮控件,主要设置事件响应。

而窗体的布局主要有三种方法:

  1. grid(row=x,column=y):grid方法的布局是将界面自动划分成表格的样式,有row和column来设置处于“表格”的第几行第几列。但是这个方式不利于展示图片,特别是想将图片作为背景显示的时候。
  2. pack(side=‘top’/‘left’/‘right’/‘bottom’):pack方法相较于grid方法显得更加的灵活,还可以使用padx和pady来进行对于布局的设定。padx和pady是指相对于窗体/容器的边缘有多少个字符。
    注意:pack()和grid()方法不能同时使用,不然会让服务器纠结很久用什么方式来布局.
  3. place(x=digit,y=digit):place方法显得更灵活一点,直接指定控件的位置。

代码如下(示例):

def setup_UI(self):#创建背景画布self.canvas = tk.Canvas(self, height=400, width=600)self.image_file = ImageTk.PhotoImage(file="./welcome.png")self.image = self.canvas.create_image(280, 0, anchor='n', image=self.image_file)self.canvas.pack(side='top')#创建用户名和登录参数self.user_label = tk.Label(self, text='用户名:')self.pwd_label = tk.Label(self, text='密码:')self.username = tk.Entry(self, width=20)self.password = tk.Entry(self, width=20, show='*')self.login_btn = tk.Button(self, command=self.login,text='登录', width=6)self.exit_btn = tk.Button(self, command=self.quit,text='退出', width=6)self.user_label.place(x=130, y=210)self.pwd_label.place(x=130, y=235)self.username.place(x=205, y=210)self.password.place(x=205, y=235)self.login_btn.place(x=130, y=275)self.exit_btn.place(x=310, y=275)

2.3 创建登录函数

登录时需要判断用户的角色是什么,登录进入后会到不同的界面,这样更加便于权限管理的需求。

代码如下(示例):

def login(self):connection = tku.con()curs = tku.cur(connection)self.user = self.username.get()self.pw = self.password.get()query = "select username,password,loginrole,loginerror from loginuser where username='%s'" % self.user curs.execute(query)c = curs.fetchall()  # 接收全部信息if len(c) == 0:tk.messagebox.showerror('登录失败', '您没有权限访问哦~如果需要权限,请确保您在CRM系统注册')else:us, pw, lr, lerror = c[0]if lerror >= 3:tk.messagebox.showwarning('登录失败', '您的账号已被锁定,请联系CRM系统解除')elif us == self.user and pw == self.pw:self.destroy()if lr == 1:A = AdminPage(self.user,self.get_now_time())elif lr == 2:C = ClientPage()tku.gui_arrange(C)tk.mainloop()elif lr == 3:CS = CaseStudyPage()tku.gui_arrange(CS)tk.mainloop()elif lr == 4:M = ModelPage()tku.gui_arrange(M)tk.mainloop()elif lr == 5:A = ApprovePage()tku.gui_arrange(A)tk.mainloop()else:tk.messagebox.showwarning('登录失败', '密码错误')

界面

总结

在构建用户登录的中最后将功能尽量模块化,继续关注我后面的博文哦,还会介绍登录成功之后的窗体如何做。以及涉及到参数传递在不同的窗体之间的问题。

信贷系统搭建——实现登录界面与验证相关推荐

  1. Vue实战篇一: 使用Vue搭建注册登录界面

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  2. vue框架搭建前端登录界面

    使用vue框架搭建前端登录界面,用v-bind引入类,v-model实现数据绑定,v-on实现事件处理机制的处理. <!DOCTYPE html> <html lang=" ...

  3. windows2003系统在启动登录界面的时候蓝屏报错:STOP:c0000218 {Registry File Failure}

    今天我发现服务器windows2003系统在启动登录界面的时候报出这样子的错误:STOP:c0000218 {Registry File Failure} The registry cannot lo ...

  4. 登录界面的验证登录以及session的使用

    登录界面的验证登录以及session的使用 一.实验要求 (1) 新建 login.jsp 页面,其中,包含登录所需用户名与密码字段. 以及提交(input)和重新填写按钮(reset):表单meth ...

  5. 东航航空货运系统(三)设计登陆界面与验证登陆

    1.7设计登陆界面,实现验证登陆 第一步:添加一个Windows窗体应用程序 1.7 (图1) 选择C#中的Windows窗体,填写窗体名称 1.7(图2) 第二步:根据项目需要和个人设计登陆界面,注 ...

  6. linux系统一直循环登录界面,Ubuntu 14.04解决登录界面无限循环的方法

    在Ubuntu下配置Android的环境时,想像在Windows中那样在终端中直接启动adb,以为Linux和Windows一样,将adb的路径添加到环境变量中,于是将adb的路径也export到/e ...

  7. EasyUI 搭建后台登录界面和管理系统主界面

    EasyUI介绍 1.EasuyUI介绍: EasyUI:简单的界面设计框架,作用主要是用来设计网站的后台管理系统.帮助程序员快速的构建网站界面. 特点: 基于jQuery的一个UI插件 2.Easy ...

  8. linux系统一直循环登录界面,Ubuntu卡在登陆界面无限循环的问题

    某次虚拟机Ubuntu18开机之后,点击用户名输入密码,屏幕一闪接着又返回用户登录界面,无限次循环,已经不是第一次了,第一次的时候直接重装了虚拟机,但是这次虚拟机中有重要的文件,不能进行重装,仔细回想 ...

  9. 使用HTML5搭建京东登录界面(一)

    先来看一下最终的效果: HTML部分的代码如下: <body> <header> <div class="header-content"> &l ...

最新文章

  1. 2022-2028年全球与中国生物质燃料粒行业市场智研瞻分析报告
  2. php更改asp.net教程,ASP.NET 教程
  3. Only Train Once:微软、浙大等研究者提出剪枝框架OTO,无需微调即可获得轻量级架构...
  4. android注册广播监听按钮,Android实现广播监听HOME键操作
  5. 极测未来|淘宝千人千面内容下的智能评测技术与实践
  6. python快速排序代码_Python实现快速排序算法
  7. 2017.10.6 Java命名规范及使用情况
  8. educoder实训答案python_Educoder Python入门之经典函数实例
  9. 【LOJ】#2230. 「BJOI2014」大融合
  10. 2019年研究生数学建模竞赛优秀论文汇总
  11. elasticsearch小记之—— unmapped_type的使用
  12. 图像处理叶片面积matlab,基于Matlab图像处理求植物叶片面积
  13. Qt QTouchEvent 多点触控
  14. 跨国企业在中国 | 3M与美的达成家电领域战略合作;舍弗勒南京公司开建新厂房...
  15. ps、markman、cutterman下载地址
  16. 青少年中医药文化教育功在当代利在千秋
  17. consume(consume名词)
  18. Angular Material 图标素材网址与使用
  19. 实战 本地服务器Confluence 7.13部署 一篇就够(从0开始安装配置 Debian11 + Mysql + Java)超详细
  20. 局域网内QQ代理设置

热门文章

  1. NLPCC-2019 依存句法分析领域移植评测技术分享(封闭情况下双第一)
  2. Java 随机点名器
  3. 114个ChatGPT全网最热话题
  4. Ubuntu系统电池管理软件TLP(Thinkpad设置电池充电阈值)
  5. python验证角谷_角谷猜想-随心随性无为而为-51CTO博客
  6. 送人玫瑰,手有余香----七夕情人节的电子玫瑰
  7. java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider 使用MySqlMapper的问题
  8. DotNet 连接 Oracle 10G数据库的测试
  9. 集大1513 1514班 软件工程第二次作业评分与点评
  10. cesium模型纹理替换