下面来做登陆这一块功能。新建SIMS项目,并把数据库驱动添加进项目里,然后新建all包、mainPro包、user包和View包,新建的包及类如下图:


一、all包,暂时有三个类。
connection类的来由,连接数据库很多地方都要用到,每一次连接数据库就要写上加载驱动和连接数据库的代码,这样代码就大量重复,另外如果数据库的密码临时改了,又要在SIMS项目里到处去修改连接数据库所用的密码!有了connection类,在连接数据库时直接实例化connection类,再用实例化的connection对象调用connection类里的getCon()方法获取数据库连接对象,然后就可以对数据库进行操作了(创建connection类的过程就是封装的过程),数据库的密码改了也不怕,到connection类里改一下数据库连接密码(dbPassword)就行了,connection类的代码如下图
connection类的来由,连接数据库很多地方都要用到,每一次连接数据库就要写上加载驱动和连接数据库的代码,这样代码就大量重复,另外如果数据库的密码临时改了,又要在SIMS项目里到处去修改连接数据库所用的密码!有了connection类,在连接数据库时直接实例化connection类,再用实例化的connection对象调用connection类里的getCon()方法获取数据库连接对象,然后就可以对数据库进行操作了(创建connection类的过程就是封装的过程),数据库的密码改了也不怕,到connection类里改一下数据库连接密码(dbPassword)就行了,connection类的代码如下图

help类的来由,登陆界面和进入系统后的界面要有菜单栏,菜单栏有“帮助”这一菜单,单击后就进入了帮助界面,不管登陆与否,帮助界面都是一样的,显示同样的内容,所以把帮助界面放到all包里面作为公共类,help类的主要代码如下图(事件监听后面再解释)


msPro类的来由,msPro类封装了一些与程序相关的信息,例如程序名称、开发人员信息。当其他类需要使用这些信息时,可以直接通过类名(msPro)进行调用(与调用某些系统方法类似,如“Math.random()”),主要代码如下图

二、mainPro包暂时有两个类,除了部分界面类以外(如帮助界面),大部分界面类都放在此包下。
welcome类是登陆界面,它的界面运行效果及代码如下图
welcome类是登陆界面,它的界面运行效果及代码如下图


注:welcome类里并没有生成菜单的代码,我刚刚把菜单封装到all包下的menuBar类里面了,那么怎么使用这个菜单呢,用法如上图第146行代码所示,menuBar类主要代码如下

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事件,并执行下图中的方法


三、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事件,并执行下图中的方法

在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。
当然了,还有很多地方不完善,登陆功能基本上已经做完了。

因为helpFlag被设为true,所以boo接收helpFlag后,在if语句里执行上图红色箭头所示的三条代码,出现下图界面(help.java)

对于上图返回按钮,得考虑一个问题:用户是登陆前点击“帮助”还是登陆成功后点击“帮助”,如果是前者,那么当点击上图返回按钮时应前往登陆界面。这时,welcome类里的status(登陆状态,值为0表示未登录,非0表示已登陆,初始值为0)就派上了用场。若用户在未登录的状态下(status值为0)查看帮助界面,当点击上图返回按钮时,触发按钮的ActionListener事件,并执行下图所示方法

因为helpFlag被设为false且status值为0,所以boo接收helpFlag后,在if语句里执行了下图红框里的代码(返回登陆界面)

注:登陆成功后的界面很简洁,连菜单都没有,菜单的使用前面讲过,这里就不赘述了。另外,当用户登陆成功后,status的值会被赋值为1。
当然了,还有很多地方不完善,登陆功能基本上已经做完了。