网学网为需要PB毕业设计的朋友们搜集整理了基于PB某电脑公司销售管理系统的设计相关资料,希望对各位网友有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4.4.1.2登录窗口的设计 系统登录窗口的设计目的是防止非法用户使用应用程序,并且为系统的用户限制权限。本窗口是在应用程序运行以后,在启动窗口完后弹出的一个窗口,如果用户的身份验证正确无误,将会进入到系统主窗口中去。否则,用户将不可能进入到系统中去;根据不同的用户,不同的登陆密码,进入系统的用户将会有不同的操作权限。因此,在本窗口的代码中将会有登陆身份的验证和和对登陆到系统的用户的权限设置的代码,并且为了防止非法用户的进入,限制登陆密码只能输入三次,超过三次系统将会自动关闭,禁止再次的输入密码。其功能实现的具体代码如下: 1. 添加职务的代码: //ddlb_zw for constructer string zw integer is_index //定义游标 DECLARE mmm CURSOR FOR SELECT bmlbb.lbmc FROM bmlbb ; //打开游标 OPEN mmm ; //使用搜查记录 if sqlca.sqlcode=-1 then messagebox("sql错误","提取数据错误!") else zw="" do if zw<>"" then //取消相同的内容 is_index=ddplb_1.finditem(zw,0) if is_index<>-1 then ddplb_1.deleteitem(is_index) end if //添加内容 ddplb_1.additem(zw) end if FETCH mmm INTO :zw; loop while sqlca.sqlcode=0 end if //关闭游标 close mmm 2. 下面的代码是在选择了职务以后,在该职务下的用户添加代码:; //ddlb_zw for losefocus string shuming,ll_name,zw zw=trim(ddplb_1.text) reset(ddlb_1) DECLARE newname CURSOR FOR SELECT secret.username FROM secret WHERE secret.bumen = :zw ; open newname ; if sqlca.sqlcode=-1 then messagebox("错误",string(sqlca.sqlcode)+":"+sqlca.sqlerrtext) else ll_name="" DO if ll_name<>"" then shuming=string( ll_name) ddlb_1.additem(shuming) end if FETCH newname INTO :ll_name; LOOP while sqlca.sqlcode=0 if sqlca.sqlcode=-1 then messagebox("错误",string(sqlca.sqlcode)+":"+sqlca.sqlerrtext) end if end if close newname; 3. 有了职务,有了用户,下面是对输入情况的判断和对用户的权限设置,其具体的代码: //cb_ok for click //变量的定义 string ll_yhm,ll_mima,ll_zw,name,mima,zw,dlshijian ll_zw=trim(ddplb_1.text) ll_yhm=trim(ddlb_1.text) ll_mima=trim(sle_mima.text) //有效性检查 if ddplb_1.text="" or isnull(ddplb_1.text) then MessageBox("缺少数据", "请选择您的职务!") ddplb_1.setfocus() return elseif ddlb_1.text="" or isnull(ddlb_1.text) then MessageBox("缺少数据", "请选择您的用户名!") ddlb_1.setfocus() return elseif sle_mima.text="" or isnull(sle_mima.text) then MessageBox("缺少数据", "请输入输入您的口令!") sle_mima.setfocus() return end if //查找数据 SELECT secret.username, secret.password, secret.bumen INTO :name, :mima , :zw FROM secret WHERE ( secret.username = :ll_yhm ) AND ( secret.password = :ll_mima ) AND ( secret.bumen = :ll_zw ) ; //判断查找的结果 if ll_yhm<>name and ll_mima<>mima and ll_zw<>zw then ii_entertimes=ii_entertimes+1 if ii_entertimes>=3 then MessageBox("错误", "连续三次输入错误密码,系统将退出!",stopsign!) halt else MessageBox("错误", "你的密码输入不正确,请重新输入密码!",stopsign!) sle_mima.setfocus() sle_mima.text="" return end if else // 存储登录记录 //···························· string is_mkm,is_jb,is_sjsj,is_kssj,is_jssj is_mkm="登录" is_sjsj=string(today(),"yyyy-mm-dd hh:mm:ss") ll_sjsj=is_sjsj is_kssj=string(now(),"hh:mm:ss") is_jssj=string(now(),"hh:mm:ss") SELECT secret.class INTO :is_jb FROM secret WHERE secret.username = :ll_yhm ; INSERT INTO rizhi ( czy, sjsj, czkssj, czmk, czjssj, xjsj, dljb ) VALUES ( :ll_yhm, :is_sjsj, :is_kssj, :is_mkm, :is_jssj, null, :is_jb ) ; //························ open(w_main) close(w_login) is_czy=ll_yhm end if string qq int i SELECT secret.quanxian INTO :qq FROM secret WHERE secret.username = :is_czy ; //权限的设置 i=wf_opclass(qq) 4. 登陆窗口的外观如下: 主窗口的菜单设计 主窗口的设计主要是为了将所有的操作集中在一起,以便于集中的操作,因此,对主窗口而言,它的菜单显的尤为重要,对于我的系统而言,我把所有大部分功能全部集中在菜单中了,所有系统的功能都是通过点击菜单项目来实现的,这样,最突出的两大优点是:一是节省屏幕的显示空间,几十上百的功能选择集合到菜单里只占一行的空间;二是对系统功能的分门别类,菜单可以一级一级地展开,形成树形结构,条理清晰,查找快捷。我在菜单的设计中,参考了以下的设计原则: 菜单的整体要有统筹规划,使其划分合理,条理清晰,简明直观,方便易用。基本作到能够根据前级菜单项,知道下级菜单包含的范围;根据用户的功能要求,知道应该从哪一个菜单标题以及菜单项去操作。 菜单标题和菜单项的名称设计应当简明扼要,具有概括和直观性; 采用加速键和快捷键,起到加速和没有鼠标只用键盘也能操作菜单的双重效果; 如果某菜单项将打开一个对话框,则在该菜单项的标题中要使用省略号进行提示; 某一菜单项或整个菜单标题下菜单项不能使用或禁止使用时,应该当使其变灰; 级联菜单的层数不宜太多,菜单栏以及下拉菜单不要超过屏幕范围,否则无法操作; 采用状态栏对菜单的使用提供帮助和提示信息,对菜单项的功能进行详细的说明。 主窗口的菜单设计如下: 其它的菜单,如右键菜单、系统日志的菜单等的设计思想和主窗口的菜单设计思想是一致的,它们的目的也是为了便于操作或是集中操作。 4.4.1.3主窗口设计 快捷栏中的操作进行权限设置。在登录的时候设置的权限是对主窗口的菜单的权限设置,但是由于菜单的操作不是十分的便捷,因此,我采用了快捷栏,对于它的操作,由于操作员的不同,也要进行权限的设置。 对软件的注册次数进行编辑,如果已经注册,则对使用的次数不在进行限制,否则,对使用的次数要减一。 4.4.2快捷栏的设计 虽然,对系统的操作通过菜单可以实现,并且完成强大的功能,但是,操作仍然不是最简洁的,最快捷的,因为菜单的有些项目是不通过点击是看不到的,而且有些功能的界限并不是十分明确,因此,试图从窗口的菜单名称来判断到底它放在那个菜单级下面是很难的,只有通过逐个的点击去查找,这样会给操作带来很大的麻烦,而且,会浪费很多的宝贵时间。但是我所设计的快捷栏将会克服上述的所有缺点,我把系统的所有主要功能都放在了快捷栏里面,在系统的主窗口打开的时候,快捷栏也将会随之打开的,这样为系统的操作员又提供了一种选择操作的方法。同时,在快捷栏的打开的同时,也对它里面的某些功能设置了权限,有些项目如果操作员的权限不到位的话是不能操作的。但是,它的外观是我模拟QICQ的操作界面制作的。如何判断操作员自己的权限是否可以操作呢?我在设计的时候为这种问题,提出了一种很隐蔽的方法,那就是看鼠标放在上面的图标,如果是手形的则是有权限的,如果是一个箭头的符号则是没有权限的了。实现目的一样,但是使用快捷栏更直观,更简洁明了、更便于操作。
|
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |