下面来做登陆这一块功能。新建SIMS项目,并把数据库驱动添加进项目里,然后新建all包、mainPro包、user包和View包,新建的包及类如下图:
![图片](https://i-blog.csdnimg.cn/blog_migrate/ad522d4983b560d3a35f86c869b7f496.png)
一、
all包,暂时有三个类。
connection类的来由,连接数据库很多地方都要用到,每一次连接数据库就要写上加载驱动和连接数据库的代码,这样代码就大量重复,另外如果数据库的密码临时改了,又要在SIMS项目里到处去修改连接数据库所用的密码!有了connection类,在连接数据库时直接实例化connection类,再用实例化的connection对象调用connection类里的getCon()方法获取数据库连接对象,然后就可以对数据库进行操作了(创建connection类的过程就是封装的过程),数据库的密码改了也不怕,到connection类里改一下数据库连接密码(dbPassword)就行了,connection类的代码如下图
connection类的来由,连接数据库很多地方都要用到,每一次连接数据库就要写上加载驱动和连接数据库的代码,这样代码就大量重复,另外如果数据库的密码临时改了,又要在SIMS项目里到处去修改连接数据库所用的密码!有了connection类,在连接数据库时直接实例化connection类,再用实例化的connection对象调用connection类里的getCon()方法获取数据库连接对象,然后就可以对数据库进行操作了(创建connection类的过程就是封装的过程),数据库的密码改了也不怕,到connection类里改一下数据库连接密码(dbPassword)就行了,connection类的代码如下图
![图片](https://i-blog.csdnimg.cn/blog_migrate/50ba7f9f1dfdc62267816235f4d9d137.png)
help类的来由,登陆界面和进入系统后的界面要有菜单栏,菜单栏有“帮助”这一菜单,单击后就进入了帮助界面,不管登陆与否,帮助界面都是一样的,显示同样的内容,所以把帮助界面放到all包里面作为公共类,help类的主要代码如下图(事件监听后面再解释)
![图片](https://i-blog.csdnimg.cn/blog_migrate/492ed0028a7472552f2cf78cfa471236.png)
msPro类的来由,msPro类封装了一些与程序相关的信息,例如程序名称、开发人员信息。当其他类需要使用这些信息时,可以直接通过类名(msPro)进行调用(与调用某些系统方法类似,如“Math.random()”),主要代码如下图
![图片](https://i-blog.csdnimg.cn/blog_migrate/8634d658a1fb98e255175471e334c42a.png)
二、mainPro包暂时有两个类,除了部分界面类以外(如帮助界面),大部分界面类都放在此包下。
welcome类是登陆界面,它的界面运行效果及代码如下图
welcome类是登陆界面,它的界面运行效果及代码如下图
![图片](https://i-blog.csdnimg.cn/blog_migrate/4d1d872c7e16438daae337d4999ccdd4.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/3625ca15c45e294e9b86c56ad993d4e9.png)
注:welcome类里并没有生成菜单的代码,我刚刚把菜单封装到all包下的menuBar类里面了,那么怎么使用这个菜单呢,用法如上图第146行代码所示,menuBar类主要代码如下
![图片](https://i-blog.csdnimg.cn/blog_migrate/33d8e6059bc19169280c9f21bfc469ff.png)
main类是登陆成功后的界面,它的运行效果及代码如下图
三、View包是放“界面操纵”类的,它暂时只有一个showView类。
你也许会感到奇怪,怎么一直没看到setVisible?java和网页不一样,没有超链接来实现界面的跳转。关于界面切换可以使用setVisible属性来实现,即设置是否可见。setVisible就集中在showView类里面,界面之间的切换主要由showView类来掌控,showView类的主要代码如下图
四、user包,主要放一些与用户相关的类,如验证用户登陆信息的类(yanzheng.java)、管理用户权限的类(暂未实现)。
当用户点击按钮登陆时,在监听事件里实例化一个yanzheng对象出来(把用户输入的用户名和密码作为yanzheng类构造方法的参数),然后通过yanzheng对象调用yanzheng类里的yz()方法,方法的返回值为boolean类型,返回true表示验证通过。主要代码如下图(javaTest数据库新建一个user表,有username、password、quanxian三个字段,username为varchar类型,其他两个为int类型)
程序执行的过程:showView类里的main方法是整个程序的入口,所以程序开始运行时首先把登陆面板(welcome.java)显示出来,如下图
当用户点击帮助时,触发 menuBar类里 文本 为“帮助” 的JMenu对象 的MenuListener事件,并执行下图中的方法
![图片](https://i-blog.csdnimg.cn/blog_migrate/bf8d80ed1e3df34539729a48ceea49cb.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/b848f4dd4548f8aebc0af2b19a4aa370.png)
三、View包是放“界面操纵”类的,它暂时只有一个showView类。
你也许会感到奇怪,怎么一直没看到setVisible?java和网页不一样,没有超链接来实现界面的跳转。关于界面切换可以使用setVisible属性来实现,即设置是否可见。setVisible就集中在showView类里面,界面之间的切换主要由showView类来掌控,showView类的主要代码如下图
![图片](https://i-blog.csdnimg.cn/blog_migrate/0e065756b47520bf8362aa1dfc96dd62.png)
四、user包,主要放一些与用户相关的类,如验证用户登陆信息的类(yanzheng.java)、管理用户权限的类(暂未实现)。
当用户点击按钮登陆时,在监听事件里实例化一个yanzheng对象出来(把用户输入的用户名和密码作为yanzheng类构造方法的参数),然后通过yanzheng对象调用yanzheng类里的yz()方法,方法的返回值为boolean类型,返回true表示验证通过。主要代码如下图(javaTest数据库新建一个user表,有username、password、quanxian三个字段,username为varchar类型,其他两个为int类型)
![图片](https://i-blog.csdnimg.cn/blog_migrate/3df2d30688d25bf3e8b8c5f5c017fc28.png)
程序执行的过程:showView类里的main方法是整个程序的入口,所以程序开始运行时首先把登陆面板(welcome.java)显示出来,如下图
![图片](https://i-blog.csdnimg.cn/blog_migrate/3a37db13f5047d889c0113496223be21.png)
当用户点击帮助时,触发 menuBar类里 文本 为“帮助” 的JMenu对象 的MenuListener事件,并执行下图中的方法
![图片](https://i-blog.csdnimg.cn/blog_migrate/7b2ae6778fa411f13548ae2cc1fde8a6.png)
在menuSelected方法里把helpFlag的值设为true,然后调用showView类(showView,java)里的“绘制”帮助面板的drawHelp()方法,drawHelp()方法的代码如下图
因为helpFlag被设为true,所以boo接收helpFlag后,在if语句里执行上图红色箭头所示的三条代码,出现下图界面(help.java)
对于上图返回按钮,得考虑一个问题:用户是登陆前点击“帮助”还是登陆成功后点击“帮助”,如果是前者,那么当点击上图返回按钮时应前往登陆界面。这时,welcome类里的status(登陆状态,值为0表示未登录,非0表示已登陆,初始值为0)就派上了用场。若用户在未登录的状态下(status值为0)查看帮助界面,当点击上图返回按钮时,触发按钮的ActionListener事件,并执行下图所示方法
因为helpFlag被设为false且status值为0,所以boo接收helpFlag后,在if语句里执行了下图红框里的代码(返回登陆界面)
注:登陆成功后的界面很简洁,连菜单都没有,菜单的使用前面讲过,这里就不赘述了。另外,当用户登陆成功后,status的值会被赋值为1。
当然了,还有很多地方不完善,登陆功能基本上已经做完了。
![图片](https://i-blog.csdnimg.cn/blog_migrate/c2b04a39ccc198be2f78a5ed6dbd263f.png)
因为helpFlag被设为true,所以boo接收helpFlag后,在if语句里执行上图红色箭头所示的三条代码,出现下图界面(help.java)
![图片](https://i-blog.csdnimg.cn/blog_migrate/5ff46672e6f7c6c9b0e50d33a77020fa.png)
对于上图返回按钮,得考虑一个问题:用户是登陆前点击“帮助”还是登陆成功后点击“帮助”,如果是前者,那么当点击上图返回按钮时应前往登陆界面。这时,welcome类里的status(登陆状态,值为0表示未登录,非0表示已登陆,初始值为0)就派上了用场。若用户在未登录的状态下(status值为0)查看帮助界面,当点击上图返回按钮时,触发按钮的ActionListener事件,并执行下图所示方法
![图片](https://i-blog.csdnimg.cn/blog_migrate/ede34eb0f42994e34a9f05e0f733f077.png)
因为helpFlag被设为false且status值为0,所以boo接收helpFlag后,在if语句里执行了下图红框里的代码(返回登陆界面)
![图片](https://i-blog.csdnimg.cn/blog_migrate/44e437881c99d7c267c1ef5882f1f999.png)
注:登陆成功后的界面很简洁,连菜单都没有,菜单的使用前面讲过,这里就不赘述了。另外,当用户登陆成功后,status的值会被赋值为1。
当然了,还有很多地方不完善,登陆功能基本上已经做完了。