软件工程硕士论文

您当前的位置:学术堂 > 毕业论文 > 在职硕士论文 > 工程硕士论文 > 软件工程硕士论文 >

系统界面的搭建与登录的实现

来源:学术堂 作者:陈老师
发布于:2017-01-09 共2829字
  本篇论文快速导航:

展开更多

  第五章 系统的详细设计与实现
  
  5.1 连接数据库
  
  数据库连接我们使用 JDBC-ODBC 桥驱动程序,目的在于使用 JDBC 连接技术来实现多接口的关机数据库连接,JDBC-ODBC 桥技术旨在通过 JDBC 接口连接数据库,借用 ODBC 的多兼容性来实现多个数据库的连接。由于 ODBC 已经可以连接多个关系数据库,所以使用 JDBC-ODBC 桥驱动程序可以间接地实现多关系数据库的连接。以下是数据库连接类代码:
  
  在数据库连接代码中,我们首先明确 JDBC-ODBC 桥的设立需要导入几个连接数据库的包,也就是 cn.system.manage.tools.PageBean,这里 PageBean的导入为我们省去了几个常用类的麻烦,最终返回的是 impl.getmaxadminIdByadminname 类型的变量,这里的 impl 是一个引用类型,定义上来看是一个char 类型的返回变量,需要在使用时重新转换为数据库地址。
  
  5.2 系统界面的搭建与登录的实现
  
  5.2.1 系统界面的设计与实现
  
  系统界面搭建,目的在于设计一个简介实用的界面,用户根据不同的身份登录系统,系统根据输入的登录名来确认对方用户等级,从而跳入不同的用户管理界面,具体实现代码如下:
  
  以上代码包括在 Login_manager 包中,分别从 Java.swing中导入菜单,菜单项与框架三个包,来搭建系统界面,界面按钮的新建使用 JMenuBar()来实现,具体形式是 JMenuBar jMenuBar1 = new JMenuBar();需要说明 MenuBar 和MenuItem 的区别,我们知道菜单中包括的东西是很多的,不一定只有按钮,还有类似于下拉菜单,选项等项目,这些不在按钮中的选项都算作 MenuItem,此外,MenuBar 在动作添加方面只能选择点击,而 MenuItem 则可以进行多种动作的选择和概括,在为 MenuItem 添加 Label时,可以根据界面效果进行统一处理,比如添加统一的前缀,返回统一目录等等,但对于 MenuBar 则需要逐个操作,因为 Bar 相对于 Item是独立存在的,不能因为其相关性而联系。图 5-1 为成绩管理系统登陆界面展示。
  
  5.2.2 登录功能实现
  
  在实现登录功能时,具体的程序模块划分为 Login()和 LoginMgr(),Login()主要用于设定登陆功能中的主要接口,而 LoginMgr()负责对其进行实现,需要注意的是 Login()中 this 返回值的使用,需要标注明确 this 返回的是什么对象,以便以后调用,另外还有一点,当需要在登录过程中访问数据库,我们使用的DBAccess.getDBAccess()方法,通常 getDBAccess()返回的是一个地址,也就是这个函数访问的数据库信息表的具体位置,但是比如像姓名这种信息,在多个数据库表格中均有包括,取地址时并不能很好的执行,还需要对应访问密码和具体表格信息,这里就需要 DBAccess.uniDBaccess()的使用,这个函数返回数据所在表格的具体信息,来得到一个唯一的访问量,使用 DBAccess.uniDBaccess()可以很好地避免重复信息提取错误的问题。
  
  以下是登陆功能的具体实现代码,图 5-2 为用户登录后主界面展示,需要说明的是三个等级的用户登陆效果相同,只是登录名和登录类别处有不同,在这里不再对每个等级的登陆效果作展示。
  
  
  以上代码解释了登录过程中的数据库访问问题,即通过什么方法来访问数据库。我们使用 DBAccess.getDBAccess()方法,是因为通常 getDBAccess()返回的是一个地址,也就是这个函数访问的数据库信息表的具体位置,但是比如像姓名这种信息,在多个数据库表格中均有包括,取地址时并不能很好的执行,还需要对应访问密码和具体表格信息,这里就需要 DBAccess.uniDBaccess()的使用,DBAccess.uniDBaccess()是一个基于 DataBaseAPI 下的方法,用于返回一个进入数据库的变量,通过这个可以进入数据库的变量来传递信息,这个函数返回数据所在表格的具体信息,来得到一个唯一的访问量,使用 DBAccess.uniDBaccess()可以很好地避免重复信息提取错误的问题。
  
  以上代码中还有一个比较突出的问题,那就是 op 的使用,通常在异常处理机制中我们会使用 op 来传递异常信息,然后捕获 op,通过 ex.printStackTrace 来分析和解决异常,而以上代码中我们添加 dao 这个表达变量,在 finally{}中我们用 dao 来确认 op 的信息然后向异常处理机制传递 dao,不在传递 op,来统一异常处理,使得每一个部分的代码最终都返回一个 dao 形式的异常处理问题,统一解决,省去了很多麻烦。
  
  5.3 学生功能实现
  
  学生功能包括验证个人信息,登录系统;查询个人基本信息:学号,班级,课程表等;查看成绩;查询自己的所有成绩,并得到平均分,总分等指标;查看某一科目的年级平均成绩,或班级平均成绩;查询自己的绩点等相关指标;打印和下载自己的成绩以及退出系统。实现以上功能的具体划分需要借鉴数据库设计的部分思想,然后在设计的时候充分运用封装的思想,按照模块的划分来实现代码。
  
  通过 sqlBuf.append()来实现信息提取时,要注意 append()这个函数的定义,append 在 JDK 中的定义中有 toStringCache=null,这是来源于 Java 源码中cache 的定义问题,许多人会觉得 cache 不会为 null,但信息提取时如果 String无意义,并不代表不进行提取,只不过不提取相应字串的功能,也就是toStringCache 值为 null,但这个字串还是需要保存的。再添加数据库信息时,使用 StringBuffer sqlBufValues = new StringBuffer 实现,sqlBufValues 是我们新添加的数据信息,同样的道理,还是需要调用 append 功能,比如在添加学生学号这一信息时,就可以用。append(“”+ student.getCode(学生学号)+“”)来实现。在获取到 的 信 息 与 数 据 库 信 息 进 行 匹 配 时 , 我 们 用 获 取 信 息 =dao.query(sqlBuf.toString())来进行匹配校验,其他的具体实现过程,比如查询,删除,更改,还有信息的综合处理等,在这里不做一一赘述。以下为具体实现代码:
  
  
  以上接口代码中可以发现 impl.getStudentListSplitBySearch(page,studentSearch 这个返回值,由于代码的层叠使用,使得这个返回值变得异常复杂且不便于理解,这是因为首先当 page,studentSearch返回一个地址时,我们的目的已经达到了,但返回的地址不能够用于系统识别和更改,我们需要将这个地址通过一个方法来解析,即。getStudentListSplitBySearch,通过。getStudentListSplitBySearch 的调用,首先在格式上统一了返回 char 类型,便于系统的修改,同时由于 impl类的限定,我们使用统一标识的变量便于内部的访问和更改,所以这么做。
  
  同时在 getStudentList( student )中也是使用了这个思想,取出的是一个 char类型变量,但这里有一点不同,那就是 getStudentList 虽然取出的仍然是 char 类型的变量,却是被List类限定过的,即取出的char是有格式的,这是因为在 student数据库中所存储的信息较多,而且联系较为紧密,使用 getStudentList 可以很好地将这些信息进行约束和管理,同时由于学生数目较多,而且各方面信息差别比较大,所以使用一个 List 来控制变量存储的格式和大小,可以很好地节省程序运行时间和成本,也方便工作人员统计,还有一点那就是使用 getStudentList 可以实现信息的分解保存,信息查看的时候也可以做到分节浏览,便于我们的工作人员保护学生信息。
  
  
返回本篇论文导航
相关内容推荐
相关标签:
返回:软件工程硕士论文