目录
一.绪论 4
1.1研究背景及意义 4
1.2结构安排 4
二.关键技术介绍 6
2.1 SQL SERVER 6
2.2 Python 6
2.3 Tkinter GUI 6
2.4 PyMssql 7
三.系统分析 8
3.1可行性分析 8
3.1.1技术可行性 8
3.1.2经济可行性 8
3.1.3操作可行性 8
四.系统概要设计 9
4.1体系架构设计 9
4.2系统架构设计 9
4.3 UI模块设计 10
4.4 数据库设计 10
4.4.1 E-R图 10
4.4.2 数据库表结构设计 11
4.5业务逻辑设计 12
4.5.1登录与注册 13
4.5.2主界面 14
4.5.3邮寄界面 14
4.5.4 一键查询界面 15
4.5.5 查询界面 16
4.5.6管理界面 16
五.系统实现 17
5.1 SQL 命令配置文件 17
5.2 登录界面 17
5.3 注册界面 17
5.4 主界面 17
5.5 邮寄界面 18
5.5 一键查询界面 18
5.6 查件界面 18
5.7 管理界面 19
6.系统测试 20
6.1测试方法 20
6.2测试环境 20
6.3测试结果 20
7.总结与展望 21
一.绪论
1.1研究背景及意义
1.1.1我国国民经济高速发展
我国自改革开放以来,国民经济就走上了持续稳定高速发展的道路,年均增长8%以上,而从全国看,发展最快的又是我国东南沿海一些省市,他们利用国家给经济特区等一系列优惠政策,大力改革开放,发展经济,率先实现经济的超常规大幅度增长。
其中出现了一批大型实力企业,像海尔、宝洁、IBM等。经济的大幅增长,必然导致巨大的物质产品的流动,也就必然导致物流量的增加。这是经济发展的必然规律,也是物流业成长的必然规律。
1.1.2我国物流学发展的结果
我国第三方物流的发展有一个有趣的现象,就是一旦有了一个第三方物流的样板和模式,社会很快在各个地方推广开来。特别是最近几年,发展特快,上海、北京、天津等城市且不说,武汉就一下子兴起了如中远、长江、中储、武储等好几家大型第三方物流公司。
出现这种现象,可以说是中国物流学发展的结果,人们已经有了比较好的物流观念和物流学基础。
1.1.3 信息技术发展的结果
20世纪90年代以来,随着因特网技术以及各种信息技术的发展,为企业建设高效率高效率的信息技术网络创造了条件,信息技术实现了数据的快速、准确传递,一方面提高了物流企业在仓库管理、装卸运输、采购、订货、配送发运、认单处理的自动化水平。
促使订货、包装、保管、运输、流通加工一体化,使大规模、高质量、高服务水平处理物流企业与其他企业间的信息沟通交流、协调合作方便快捷,并能有效跟踪和管理物流渠道中的货物,精确计算物流活动的成本,这就使客户企业可以随时跟踪自己的货物。本文转载自http://www.biyezuopin.vip/onews.asp?id=15286
因而放心地把自己的物流业务交由第三方物流企业处理,这些环境条件都促使了第三方物流企业的产生。
1.1.4市场竞争的结果
第三方物流的产生是社会分工的必然结果。各企业为增强市场竞争力,而将企业的资金,人力,物力投入到其核心业务上,寻求社会化分工协作带来的效果和效率的最大化。
1.2结构安排
根据系统研发的背景,结合软件开发的流程和步骤,将分为七个章节对论文进行撰写,各章节内容如下:
第一章:绪论。介绍系统研发背景,对系统研究现状进行分析。
第二章:关键技术介绍。介绍开发过程中用到的工具、框架、技术等。
第三章:系统分析。首先分析系统的开发是否可行即进行可行性分析,评估该系统开发的经济效益。然后确定系统将要实现的功能、性能以及界面的需求。
第四章:系统设计。依据需求分析内容对系统各层和各功能模块进行设计,借助Python对系统内部各个模块进行详细设计。在数据库中对系统E-R图和各实体的物理表进行设计。
第五章:系统实现。给出各功能模块的界面截图,摘取核心代码,给出系统执行的流程步骤,对复杂模块则用流程图描述其操作过程。
第六章:系统测试。介绍系统测试的方法,设计测试用例对系统各模块的运行情况和性能进行测试。
第七章:总结与展望。分析研究中所遇到的问题和需要改进的模块和功能,并对未来的工作做出展望。

from denglu2 import *
from zhuce2 import *
from sqlml import Sql
from tkinter import *
from tkinter import ttk
from lujing import *
用户名=''
权限=''
def guanli():                                                     #管理界面 root6def shanchu(): #删除选中的记录a=v.get()if a != NONE:for x,y in lb: #选中按钮在第一列 用户if a==y:yhm=''for i in x:if i!= ' ':yhm+=ielse:breakyhm=yhm[4:]sql="DELETE FROM 用户表 WHERE 用户名 = '%s'"%(yhm)Sql.sql2(sql)root6.destroy()guanli()for x,y in lb2:     #选中按钮在第二列 快递单if a==y:kdd=xkdd=kdd[5:]kdd=kdd[:11]sql="DELETE FROM 快递表 WHERE 快递单号 = '%s'"%(kdd)Sql.sql2(sql)root6.destroy()guanli()def xiugai(): #修改def querenxiugai1():e1=e.get()e2=e8.get()print(e2)c=cmb1.get()if c=='管理员':c=0elif c=='普通用户':c=1sql="UPDATE 用户表 SET 用户类别 = %s WHERE 用户名 = '%s'"%(str(c),yhm)Sql.sql2(sql)if e1 != '':sql="UPDATE 用户表 SET 密码 = '%s' WHERE 用户名 = '%s'"%(e1,yhm)Sql.sql2(sql)if  e2 != '':sql="UPDATE 用户表 SET 电话 = '%s' WHERE 用户名 = '%s'"%(e2,yhm)Sql.sql2(sql)xi1.destroy()root6.destroy()guanli()def querenxiugai2():c=cmb1.get()i=0for x in k:i=i+1if x==c:sql="UPDATE 快递表 SET 到达位置 = '%s' WHERE 快递单号 = '%s'"%(str(i),kdd)Sql.sql2(sql)breakxi1.destroy()root6.destroy()guanli()a=v.get()if a != NONE:for x,y in lb:if a==y:yhm=''for i in x:if i!= ' ':yhm+=ielse:breakyhm=yhm[4:]xi1=Tk()xi1.geometry('560x200')l1=Label(xi1,text='用户名:%s'%(yhm),font=('Arial',20))l2=Label(xi1,text='用户级别: ')l3=Label(xi1,text="密码:")l4=Label(xi1,text="电话:")cmb1=ttk.Combobox(xi1,state='readonly')cmb1['value']=('管理员','普通用户')sql="select 用户类别 from 用户表 where 用户名='%s'"%(yhm)jibie=Sql.sql1(sql)jibie=jibie[0][0]if  jibie == 0:cmb1.current(0)else:cmb1.current(1)e=Entry(xi1)e8=Entry(xi1)b=Button(xi1,text='确认修改',command=querenxiugai1)l1.place(x=10,y=10,)l3.place(x=40,y=70,)e.place(x=80,y=70)l2.place(x=240,y=70)cmb1.place(x=300,y=70)l4.place(x=40,y=95)e8.place(x=80,y=95)b.place(x=130,y=120)return 0for x,y in lb2:if a==y:kdd=xkdd=kdd[5:]kdd=kdd[:11]xi1=Tk()xi1.geometry('560x200')l1=Label(xi1,text='快递单号:%s'%(kdd),font=('Arial',20))l2=Label(xi1,text='已到达城市: ')cmb1=ttk.Combobox(xi1,state='readonly')k=[]a=''sql="select 备注,到达位置 from 快递表 where 快递单号='%s'"%(kdd)b=Sql.sql1(sql)ddwz=b[0][1]b=b[0][0]pp=0for x in b:if x !='-':a=a+xif x == '市' or x == '区' or (x=='州' and b[pp-1]=='治'):k=k+[a]a=''pp+=1cmb1['value']=kcmb1.current(int(ddwz)-1)l1.place(x=10,y=10,)l2.place(x=210,y=70)cmb1.place(x=300,y=70)b=Button(xi1,text='确认修改',command=querenxiugai2)b.place(x=130,y=120)def fanhui3():root6.destroy()zhujiemian()root6 = Frame(root,width=960,height=540)root6.pack()b=Button(root6,text='返回主界面',font=('Arial',20),command=fanhui3)b.place(x=760,y=490) b12=Button(root6,text='修改',font=('Arial',20),command=xiugai)b13=Button(root6,text='删除',font=('Arial',20),command=shanchu)b12.place(x=100,y=490)b13.place(x=200,y=490)sql="select *  from 用户表"yh=Sql.sql1(sql)i=0lb=[]for x in yh:lb=lb+[('用户名:'+yh[i][0]+'   电话号码:'+yh[i][2]+'    权限: '+str(yh[i][3]),i+1),]i+=1sql="select 快递单号,备注,到达位置  from 快递表"kd=Sql.sql1(sql)j=0lb2=[]for y in kd:lb2=lb2+[('快递单号:'+kd[j][0]+"    路径:"+kd[j][1]+'    到达第%s个城市'%(kd[j][2][0:2]) , i+1           ),]i+=1j+=1v = IntVar()y1=1for a , num in lb:b8 = Radiobutton(root6, text=a, variable=v, value=num )b8.place(relx=0,y=y1)#,x=0,y=y1)y1+=19y1=1for a,num in lb2:b9 = Radiobutton(root6, text=a, variable=v, value=num )b9.place(relx=0.3,y=y1)#,y=y1)y1+=19def chaxun():                                               #查询快递单号 root5def fanhui2():root5.destroy()zhujiemian()def chaxun1():e1=e.get()if len(e1) != 11: #输入位数不为11位return 0else:sql="select 备注,到达位置 from 快递表 where 快递单号='%s'"%(e1)k=Sql.sql1(sql)if k[0][0]=='':#数据库没有该单号t.delete(1.0, END)t.insert(1.0, "%s的查询结果为空"%(e1))return 0else :b=k[0][0]#所有路径w=int(k[0][1])#到达位置k=[]    #将字符串转为列表 存进该变量a=''    #存储一个市的临时变量pp=0for x in b: #将字符串转为列表if x !='-':a=a+xif x == '市' or x == '区':k=k+[a]a=''if x=='州' and b[pp-1]=='治':k=k+[a]a=''pp+=1i=0if w==1:    a=a+'\n您的快递已从 %s中转站出发,发往 %s中转站\n'%(k[i],k[i+1])a=a+'\n您的快递即将到达 %s中转站\n'%(k[i+1])else:               while 1:if i+1 >= w:breaka=a+'\n您的快递已从 %s中转站出发,发往 %s中转站\n'%(k[i],k[i+1])a=a+'\n您的快递已到达 %s中转站\n'%(k[i+1])i+=1if len(k)!=w:a=a+'\n您的快递已从 %s中转站出发,发往 %s中转站\n'%(k[i],k[i+1])a=a+'\n您的快递即将到达 %s中转站\n'%(k[i+1])t.delete(1.0, END)t.insert(END, "%s的查询结果为\n路径:\n%s\n%s"%(e1,b,a)) root5 = Frame(root,width=960,height=540)root5.pack()e=Entry(root5)b1=Button(root5,text='返回主界面',font=('Arial',20),command=fanhui2)b1.place(x=760,y=470) b2=Button(root5,text='查询',command=chaxun1)t=Text(root5)e.place(x=200,y=40)b2.place(x=350,y=35)t.place(x=10,y=70)def yijianchaxun():                                         #一键查询           root4def fanhui1():root4.destroy()zhujiemian()def fuzhi():r = Tk()r.withdraw()r.clipboard_clear()i = v.get()j = kk[i-1][0]j =j[0:11]r.clipboard_append('%s'%(j))r.update() r.destroy()root4 =Frame(root,width=960,height=540)root4.pack()b1=Button(root4,text='返回主界面',font=('Arial',20),command=fanhui1)    b1.place(x=760,y=470)    sql="select 电话 from 用户表 where 用户名='%s'"%(用户名)    #查询用户名的电话k=Sql.sql1(sql)k=k[0][0]sql="select 快递单号 from 快递表 where 收件人手机号码='%s' or 寄件人手机号码='%s'"%(k,k)    #查询寄件人或者收件人电话与用户电话其\一致k=Sql.sql1(sql)if k[0][0]== '':      #  没有 提示没有快递l=Label(root4,text="您没有快递",font=('Arial',20))l.place(y=60,x=50)else:           #建立选择框.显示单号a=1k1=[]for x in k:sql="select 寄出市,收件市 from 快递表 where 快递单号='%s'"%(x[0])kk=Sql.sql1(sql)k1+=kkkk=[]x=0while 1:k2=[(k[x][0]+' '+k1[x][0]+'-'+k1[x][1],x+1,),]kk+=k2x+=1if x >= len(k):breakv = IntVar()    #v为唯一选择框编号y1=10for girl,num in kk:b = Radiobutton(root4, text=girl, variable=v, value=num )b.place(x=70,y=y1)y1+=30b2=Button(root4,text="选择后点我\n把快递单号复制进剪辑板",command=fuzhi)b2.place(x=760,y=370)def youjijiemian():                                         #   邮寄界面           ROOT3def fanhui():                #返回上一层 返回主界面root3.destroy()         zhujiemian()                                   def gengxin(event):          #将市选择框 与 省选择框联动sf=cmb1.get()               #省1选择框的输入sf3=cmb2.get()                 #市1选择框的输入sql="select 省编 from 省份表 where 省份='%s'"%(sf)sf=Sql.sql1(sql)sf=sf[0][0]                        #查询省1省编sql="select 市名 from 市表 where 省编='%s'"%(sf)sf=Sql.sql1(sql)                #查询省1 名下所有市sf2=()                            #用于保存省1   名下所有市for x in sf:sf2+=x[0],                  #将 [(1,),(2,),] 转化为[1,2,]a=0 #用于保存更新前 选中了第几个市for x in sf:    #遍历 名下所有的市 if x[0]==sf3 or sf3=='': #如果第a个市为选择的市 或者 没有选择市breakelse:a+=1if a >= len(sf):    #如果 a 比 市的个数多       也就是 省有变动 ,原来的市不属于变动后的省 上面for循环没有匹配成功 将a=0,默认选择更新后的第一个市a=0             print(sf,a)cmb2['value']=sf2#更新市选择框cmb2.current(a)#默认选择第a个市.意义在于如果省 市没有变动,这次更新就不改变任何东西 省有变动 默认选择第一个sf=cmb3.get()sf3=cmb4.get()sql="select 省编 from 省份表 where 省份='%s'"%(sf)sf=Sql.sql1(sql)sf=sf[0][0]sql="select 市名 from 市表 where 省编='%s'"%(sf)sf=Sql.sql1(sql)sf2=()for x in sf:sf2+=x[0],a=0for x in sf:if x[0]==sf3 or sf3=='':breakelse:a+=1if a >= len(sf):a=0print(sf,a)cmb4['value']=sf2cmb4.current(a)def youji():               #判断输入信息 询问是否确认邮寄   进入下级确认邮寄def querenjijian():        # 确认邮寄快递后 生成快递单号,并提交到数据库xi.destroy()            #快递单号kuaididanhao=''         sql="select 市编 from 市表 where 市名='%s'"%(jshi)k1=Sql.sql1(sql)kuaididanhao+=k1[0][0]  #寄出市市编为快递单号前4位sql="select 市编 from 市表 where 市名='%s'"%(sshi)k1=Sql.sql1(sql)kuaididanhao+=k1[0][0]#收件市 市编为快递单号5-8位sql="select 快递单号 from 快递表 "k1=Sql.sql1(sql)k1=k1[-1][0]    #查询数据库中最后一个快递单号if k1 == '':    #如果数据库中没有快递单k1 ='100'   #快递单最后3为为100else:               #有快递单号 新快递单号后3位为上一个快递单号后3位+1k1=k1[8:]print(1,k1)k1=int(k1)+1print(2,k1)k1=str(k1)kuaididanhao+=k1    #添加快递单号最后3位beizhu=''# 将路径城市多个变量if lujing2[0] == '0':#lujing2存储了省-省之间的路径 为0则为同省快递if jshi != sshi:    #寄出城市不为收件城市beizhu=jshi+'-'sql="select 省会城市 from 省份表 where 省份='%s'"%(jsheng)k1=Sql.sql1(sql)k1=k1[0][0]if jshi != k1 and sshi != k1:beizhu=beizhu+k1+'-'+sshi   #收件城市不为省会 备注=寄出城市+省会城市+收件城市else :beizhu=jshi+'-'+sshi    #收件城市为省会 备注=寄出城市+收件城市else:beizhu=jshi+'-'+sshi#同市快递else:   #跨省快递if jshi  != lujing2[0]: #寄出城市不为省会,将寄出城市放到首位beizhu=jshi+'-'for x in lujing2:beizhu = beizhu + x +'-'if sshi != lujing2[-1] :#收件城市不为省会 将收件城市放到末尾beizhu = beizhu+sshielse:beizhu = beizhu[:-1]sql="insert into 快递表(快递单号,寄出省,寄出市,寄出地址,寄件人姓名,寄件人手机号码,收件省,收件市,收件地址,收件人姓名,收件人手机号码,备注) values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"%(kuaididanhao,jsheng,jshi,jdz,jxm,jdh,ssheng,sshi,sdz,sxm,sdh,beizhu)Sql.sql2(sql)xi1=Tk()xi1.geometry('550x650')l=Label(xi1,text='邮寄成功!!!\n\n 快递单号:%s \n\n由%s   %s%s%s\n寄往%s   %s%s%s\n\n途经:\n%s'%(kuaididanhao,jxm,jsheng,jshi,jdz,sxm,ssheng,sshi,sdz,beizhu),font=('Arial',15))l.pack()def guanbi():           #按钮 关闭 邮寄成功 提示框xi1.destroy()b=Button(xi1,text="关闭",command=guanbi)b.pack()xi.mainloop()return 0jsheng=cmb1.get()           #寄出省 寄出市 寄出地址 寄出姓名 寄出电话jshi=cmb2.get()jdz=e1.get()jxm=e11.get()jdh=e12.get()ssheng=cmb3.get()  #同上 收件省sshi=cmb4.get()sdz=e2.get()sxm=e21.get()sdh=e22.get()list1 = [(jsheng,jshi,jdz,jxm,jdh),(ssheng,sshi,sdz,sxm,sdh)]for x in list1:#双重循环 遍历每个输入框信息,如果为空则 提示for y in x:if y == '':xi=Tk()xi.geometry('450x150')l=Label(xi,text='信息未填写完全,请重新填写!',font=('Arial',15))l.pack()xi.mainloop()return 0       lujing2=lujing(list1[0][0],list1[1][0])     #调用路径函数 获取路径 并提示是否寄件if lujing2[0][0]=='0':          #返回0则为同省快递if list1[0][1]==list1[1][1]:    #判断是否同市快递xi=Tk()xi.geometry('450x350')l=Label(xi,text='同市快递\n\n由%s%s寄往\n%s%s\n\n价格:6元\n\n时间:1天\n\n确认寄件请点击\n\n取消请关闭本窗口\n\n'%(list1[0][1],list1[0][2],list1[1][1],list1[1][2]),font=('Arial',15))l.pack()b=Button(xi,text="确认寄件",command=querenjijian)b.pack()xi.mainloop()return 0else:               #同省不同市xi=Tk()xi.geometry('450x350')l=Label(xi,text='同省快递\n\n由%s%s寄往\n%s%s\n\n价格:8元\n\n时间:1.5天\n\n确认寄件请点击\n\n取消请关闭本窗口\n\n'%(list1[0][1],list1[0][2],list1[1][1],list1[1][2]),font=('Arial',15))l.pack()b=Button(xi,text="确认寄件",command=querenjijian)b.pack()xi.mainloop()return 0  else:       #跨省快递xi=Tk()xi.geometry('450x350')jiage='0'shijian='0'if len(lujing2)<=3 :jiage='10' shijian='1.5'elif len(lujing2)<=6:jiage='12'shijian='3'else :jiage='15'shijian='3-5'l=Label(xi,text='全国快递\n\n由%s%s寄往\n%s%s\n\n价格:%s元\n\n时间:%s天\n\n确认寄件请点击\n\n取消请关闭本窗口\n\n'%(list1[0][0],list1[0][1],list1[1][0],list1[1][1],jiage,shijian),font=('Arial',15))l.pack()b=Button(xi,text="确认寄件",command=querenjijian)b.pack()xi.mainloop()return 0   root3=Frame(root,width=960,height=540)root3.pack()L1=Label(root3,text="尊敬的 %s\n 用户级别:%s"%(用户名,权限))L1.place(x = 800,y = 20)l1=Label(root3,text="寄件人地址:")l21=Label(root3,text="寄件人姓名:")l22=Label(root3,text="寄件人电话:")l3=Label(root3,text="收件人地址:")l41=Label(root3,text="收件人姓名:")l42=Label(root3,text="收件人电话:")e1=Entry(root3,width=40)e2=Entry(root3,width=40)e11=Entry(root3)e12=Entry(root3)e21=Entry(root3)e22=Entry(root3)cmb1=ttk.Combobox(root3,state='readonly')cmb2=ttk.Combobox(root3,state='readonly')cmb3=ttk.Combobox(root3,state='readonly')cmb4=ttk.Combobox(root3,state='readonly')b1=Button(root3,text='确定',font=('华康少女体',20),command=youji)b2=Button(root3,text='返回主界面',font=('Arial',20),command=fanhui)sql='select 省份 from 省份表'sf=Sql.sql1(sql)sf1=()for x in sf:sf1+=x[0],cmb1['value']=sf1cmb3['value']=sf1cmb1.current(22)cmb3.current(22)cmb1.bind("<Button-1>", gengxin)        #设定触发事件,选择省后更新市选择框cmb2.bind("<Button-1>", gengxin)cmb3.bind("<Button-1>", gengxin)cmb4.bind("<Button-1>", gengxin)b1.bind("<Button-1>", gengxin)l1.place(x = 20,y = 60)cmb1.place(x=90,y=60)cmb2.place(x=270,y=60)e1.place(x=450,y=60)l21.place(x=90,y=90)e11.place(x=160,y=90)l22.place(x=340,y=90)e12.place(x=420,y=90)l3.place(x = 20,y = 140)cmb3.place(x=90,y=140)cmb4.place(x=270,y=140)e2.place(x=450,y=140)l41.place(x=90,y=170)e21.place(x=160,y=170)l42.place(x=340,y=170)e22.place(x=420,y=170)b2.place(x=700,y=480)b1.place(x=420,y=300)def zhujiemian():                                            #  主界面          ROOT2def tuchudenglu(): #退出登录   回到登录界面root2.destroy()     #销毁主界面 打开登录界面 denglujiemian()def youji1():       #进入邮寄界面 先关闭主界面容器 邮寄界面再生成新的容器root2.destroy()youjijiemian()def yjcx1():        #进去一键查询界面root2.destroy()yijianchaxun()def chaxun1():      #进去查件界面root2.destroy()chaxun()def guanli1():      #进入管理界面root2.destroy()guanli()'''上面都是与按钮绑定的函数'''root2=Frame(root,width=960,height=540)root2.pack()l1=Label(root2,text="尊敬的 %s\n 用户级别:%s"%(用户名,权限))l1.place(x = 800,y = 20)b1=Button(root2,text='查询快递',font=('Arial',20),command=chaxun1)b2=Button(root2,text='邮寄快递',font=('Arial',20),command=youji1)b3=Button(root2,text='一键查询\n自己的快递',font=('Arial',20),command=yjcx1)b4=Button(root2,text='管理\n用户\n物流信息',font=('Arial',20),command=guanli1)b5=Button(root2,text='退出登录',font=('Arial',20),command=tuchudenglu)b1.place(x = 310,y = 100)b2.place(x = 310,y = 180)if 权限=='普通用户':b3.place(x = 310,y = 260)elif 权限=='管理员':b4.place(x = 310,y = 260)b5.place(x = 700,y = 480)def denglujiemian():                                        # 登录界面          ROOT1def denglu1():                   #点击 登录 按钮触发的事件global 用户名   #映入函数外全局变量global 权限if denglu(e1.get(),e2.get())== 1:   #将用户名 密码传递到模块 denglu2 若登陆成功则会返回 1用户名=e1.get()sql="select 用户类别 from 用户表 where 用户名='%s'"%(用户名)  #判断用户权限类别,并写去全局变量a=Sql.sql1(sql)if a[0][0] == 0:权限='管理员'else:权限='普通用户'root1.destroy()             #关闭容器root1zhujiemian()                #打开主界面def youke():                        #游客登录   设置权限,进入主界面global 用户名global 权限用户名='游客'权限='游客'root1.destroy()zhujiemian()root1=Frame(root,width=960,height=540)                  #在root窗口上建立虚拟容器root1,容纳登录界面的组件root1.pack()l=Label(root1,text='快递管理系统',font=('Arial',44))l.place(x = 270,y = 50)theLaber=Label(root1,text="账号:  ")theLaber.place(height = 20,width = 50,x = 310,y = 200)e1=Entry(root1)e1.place(height = 20,width = 200,x = 350,y = 200)theLaber2=Label(root1,text="密码:  ")theLaber2.place(height = 20,width = 50,x = 310,y = 240)e2=Entry(root1,show='*')e2.place(height = 20,width = 200,x = 350,y = 240)b1=Button(root1,text='登  录',command=denglu1)      #设置按钮,绑定触发的事件b2=Button(root1,text='注  册',command=zhuce)b3=Button(root1,text='游客访问',command=youke)b1.place(x = 310,y = 280)b2.place(x = 400,y = 280)b3.place(x = 490,y = 280)   #创立组件,并放置在容器root1上##################################################3 main函数
root=Tk()
root.title("快递公司管理系统")
root.geometry('960x540')
denglujiemian()
root.mainloop()
'''
建立窗口root
调用登录界面函数
'''
########################################################
















基于Python+SQLSERVER的快递业务管理系统的设计与实现相关推荐

  1. 基于Python+Django+MYSQL的ERP管理系统的设计与实现

    基于Python+Django+MYSQL的ERP管理系统的设计与实现  源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ ERP管理系统是商业信息管 ...

  2. C++课程设计快递业务管理系统实验报告

    一.大型实验的内容 基本要求:能从文件读出快递派送及收件纪录信息,并能将信息保存到文件. 快递业务的信息记录包括:快递单号.快递类别(派送单/收件单).寄送人地址.寄送人电话.寄送人备注信息.收件人地 ...

  3. 基于Python的高校勤工俭学工资管理系统——实现对excel表格的数据操作(xwlings库)

    基于Python的高校勤工俭学工资管理系统 1 需求概述 1.1 需求分析 勤工俭学是指学校组织的或学生个人从事的有酬劳动,用以助学.在我国,许多高校借以对学生进行劳动技术教育,培养正确的劳动观点和态 ...

  4. python大学生信息管理系统_基于Python的高等学校社团信息管理系统

    基于 Python 的高等学校社团信息管理系统 王金龙 孙月兴 [摘 要] 摘要 : 首先 , 本文通过对高等学校大学生社团信息化管理存在的问题进 行了阐述 , 然后简要介绍了 Python 语言的基 ...

  5. 基于Python+django的高校资产管理系统-计算机毕业设计

    项目介绍 当前高校的数量一直在不断地增加,相应的高校的设备已在不断地增加,传统的高校设备和资产管理都是通过手动的方式进行管理,这种管理方式非常的落后,而且管理效率低下,为了能够满足当前高校对资产和设备 ...

  6. 基于Python+Django的客户关系管理系统

    基于Python+Django的客户关系管理系统  源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 随着市场经济的深入发展,市场竞争.行业竞争越演越 ...

  7. 商城管理系统服务器,基于Python实现的购物商城管理系统

    完整项目地址: 简介 本项目使用Python语言编写,实现了顾客端和商家端. 功能 店主功能:注册.登录.修改店铺信息.添加商品.删除商品.修改商品.查找商品.查看交易记录. 顾客功能:注册.登录.修 ...

  8. 基于javaweb+SSM校园快递物流管理系统

    基于javaweb+SSM校园快递物流管理系统 开发工具:eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 <if te ...

  9. 基于javaweb+jsp的快递物流管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)

    基于javaweb+jsp的快递物流管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot) JavaWeb JavaBean JSP MVC ...

最新文章

  1. 带你从源码角度分析ViewGroup中事件分发流程
  2. docker 部署redis
  3. 数据结构 链表(一)
  4. js中函数声明先提升还是变量先提升
  5. 海量数据库的查询优化及分页算法方案(一)
  6. 实现Fragment的切换和ViewPager自动循环设置切换时间
  7. jQuery 自定义选择器
  8. SQL 和T-SQL学习(一)
  9. [转+]C语言复杂声明
  10. java中的flag
  11. 联邦学习模型鲁棒性攻击
  12. 跨境电商系列 | 防范第三方脚本对数据隐私与安全的侵蚀
  13. mysql : 使用不等于过滤null的问题
  14. 关于springmvc项目一加入validation-api包就报错的解决方法
  15. Vue 子组件接收到父组件传的值之后再渲染页面
  16. 跌倒自动检测雷达的应用
  17. 最新版本vue3+vite重构尚品汇(解决接口问题)第1-20集
  18. LINUX编译OpenJDK 9
  19. 人人都在说的数字化,到底什么是数字化?
  20. 2011级-csdn-java-张侃— JDBC开发—连接池(一)

热门文章

  1. 后部发声-----学会英语的发音方法
  2. C、C++数组初始化,数组赋值
  3. 在MatLab中FFT和IFFT的互相转换
  4. iled to read key AndroidDebugKey from store “D:\路经\.android\debug.keystore“: Invalid keystore format
  5. 不使用第三个变量,交换两个变量值
  6. 前端工程师的摸鱼日常(7)
  7. Unity Universal RP asset not assigned
  8. 【翻译】Wide Deep Learning for Recommender Systems--推荐系统的广泛深度学习
  9. 安卓webview中键盘遮挡输入框如何解决
  10. JQuery播放暂停HTML视频