传统WEB应用只能在PC机上使用,不能做到随时随地的使用,为了解决这样的不足,基于Android平台的图书馆管理系统客户端就应运而生。本设计阐述了在Android平台下图书馆管理系统的设计与实现过程,其目的是让人们能够在基于Google Android平台的移动设备上享用传统WEB上图书馆管理系统的基本功能。本系统采用C/S结构, MVC软件开发模式,使用android布局技术完成UI的设计,基于Java语言开发完成,在不同型号的设备模拟器上测试通过。系统实现了用户注册、登录、查询图书以及学生用户管理和图书管理等功能。“操作简单,功能实用”这是本软件设计的核心理念,本系统力求创造最好的用户体验。
基于Android平台的图书馆管理系统手机客户端是依据现在的形式所开发的,它是一套基于开放性的图书馆管理系统,它有传统WEB上图书馆管理系统的大部分功能。整个系统分为前台界面管理和后台服务器管理两部分,划分为用户管理、图书管理、信息管理等三个部分。在前台管理中,用户进行注册、登录、查询特定图书等功能;后台管理模块,负责控制前台界面管理的所有功能;本系统设置了学生用户和管理员两类,两类用户都是使用同一个平台,只是权限不同。学生用户只能注册、查询图书等功能;管理员拥有最高权限,可以对已经毕业的学生用户账号进行删除,查询学生用户信息,实时更新图书馆的新书,发布图书馆最新信息等权限。
Eclipse的发展史,版本代号 平台版本 主要版本发行日期 SR1发行日期 SR2发行日期,如下:
Callisto 3.2 2006年6月26日 N/A N/A
Europa 3.3 2007年6月27日 2007年9月28日 2008年2月29日 Ganymede 3.4 2008年6月25日 2006年9月24日 2009年2月25日 Galileo 3.5 2009年6月24日 2006年9月25日 2010年2月26日 Helios 3.6 2006年6月23日 2006年9月24日 2011年2月25日 Indigo 3.7 2006年6月22日 2006年9月23日 2012年2月24日 Juno(预
定) 3.8及4.2 2006年6月27日 2006年9月28日
2013年2月22日 Kepler 4.3 2006年6月26日 2006年9月27日
2014年2月28日
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
Android工程是在Eclipse工具上编写的,进行android工程的编写,首先需要在Eclipse上安装ADT插件,然后指定SDK所在的路径,便可以创建android虚拟机了。
在Eclipse下创建虚拟机的步骤如下:
(1)安装ADT插件
在Eclipse单击菜单栏的Help,在Help里面选中Install NewSoftware选项之后,便可以出现如下界面:
指定好你的ADT路径后,便可以安装好ADT插件。
(2)导入AndroidSDK
安装好ADT插件后,单击Eclipse菜单栏Windows下找到preperence,点击进入,得到如下界面:
在左边选项选中Android,在SDK Location下导入AndroidSDK路径,点击Apply应用,便会导入Android的各个版本。
(3)创建虚拟机
安装好ADT和导入AndroidSDK成功后,便可以在菜单栏Windows下找到AVD manage选项,单击进入后便有新建android虚拟机界面,在创建界面设置好虚拟机参数点击确定后,就创建好了一个android虚拟机。
创建好虚拟机后,点击开始便可以运行一个android虚拟机,虚拟机运行成功界面如下:
虚拟机模拟的是android智能手机的界面,通过操作虚拟机可以体验到android智能手机的部分应用。同时虚拟机是作为开发的android应用运行的场所,他提供基本的人机交互功能。
本系统采用C/S模式开发的,该系统的客户端和服务器端是分开的,这样的分开也就形成了前台管理和后台管理。前台管理注重用户的交互是否简便,后台管理注重功能的逻辑和与数据库数据交互的功能。
1 注册
用户通过手机客户端主界面上的注册按钮注册新的学生用户,注册用户的信息通过服务器端和数据库连接,数据库中的用户表则会生成你注册的信息,同时在手机客户端提示注册成功。
2 用户登录
用户登录分为两类用户:管理员和学生用户。可以通过登录界面中选定身份登录,服务器根据登录选定的信息选择数据库中的数据表进行匹配,用户名和密码正确则登录成功。
3 图书查询
在查询界面输入所需查询书籍的书名和作者名,通过服务器端查询数据库返回你所查询的书籍信息,书籍信息包括:书名、作者、出版社名、是否被接、剩余本数等信息。
在图书查询功能中,运用到了ANDROID的一个自动完成文本的控件,该控件可以通过你输入的查询信息列出带有你输入字的书名,以方便你的检索。通过此控件,大大的提高了用户检索书籍的效率,同时满足了模糊查询的功能,是用户查询书籍方便、快捷。
.4 用户管理
用户管理模块是管理员对学生用户账号的管理,对于某些特殊原因账号不使用了,比如:学生毕业等原因不再使用账号的问题,管理员有权利对这类账号进行删除,同时可以学生用户的用户名查询学生用户的信息。
5 图书管理
这个功能也只有管理员身份才能拥有,管理员通过此功能,可以对图书进行增加、删出功能。
通过这个模块,管理员可以对新进的图书进行添加处理,并能实时发布新增书籍。对于删除功能,管理员可以把一些已经下架,不再外借的书籍进行删除,以便造成不必要的麻烦。
服务器端数据库设计
采用的是Oracle数据库。在本系统中采用了简易版的Oracle,即数据库的名字为Oracle XE,首先要解决的是在该数据库里某个用户下创建表。
首先配置Oracle数据库,步骤如下:
(1) 以Oracle管理员身份进入Oracle,在终端输入的命令为:sqlplus "/as sysdba";
(2) 启动Oracle,在终端输入的命令为:startup;
(3) 创建新的用户,在终端的命令为:先以管理员身份登录数据库,然后创建新的用户的命令为:
create user liuyujuan identified by liuyujuan;
grant resource,connect to liuyujuan;
所创建的用户账号和密码分别为:liuyujuan,liuyujuan;
(4)然后以liuyujuan用户登录,命令为:sqlplus liuyujuan/liuyujuan。
在账户liuyujuan下创建数据表,以满足图书馆管理的日常需要,表格名称分别为: lib_admin,lib_user,lib_books,lib_ret,各个数据表的储存的信息分别为:管理员信息、普通用户信息、书籍信息、书籍外借信息表。
4.1.1 数据库逻辑结构设计
在需求分析阶段已完成该系统所有的数据分析。根据该阶段所建立的概念模型,已经得出满足系统设计要求的几个关系描述,该阶段的主要工作就是把前一阶段的成果转化为具体的数据库。
管理员用户有用户名和密码两个属性,通过这两个属性来确定管理员用户的身份是否合法,其中ID为主键,其E-R图如下:
学生用户有用户名、密码身份证号、入学年份、性别、所在学院名称等属性,通过这些属性,来确认学生信息表的信息,其中主键为ID,其E-R图如下:
书籍信息表,是用来存储书籍的基本信息,其数星星包括书名、作者名、书籍位置、出版社名称、所属科目、是否借出、最大借阅时间等,其中自动分配的ID和书名作为联合主键,其E-R图如下:
外借书籍信息表是用来存储外借书籍的有关信息,通过此表格,来获取该外借书籍的基本状态,其属性有书籍编号、书籍名、书籍作者、最大外借时间、实际外借时间、外借时间、借阅者ID,其E-R图如下:
对于各个实体之间的关系E-R图如下:
数据库物理结构设计
依据数据库的原理,并结合以上E-R图,经过转化,即可进行数据库的物理设计。基于以上数据库的逻辑设计,考虑程序设计的简易性,同时考虑题目的时间,该系统的数据库采用Oracle简易版本建立一个数据库,在其下创建4个数据表,其结构分别如下各表:
表4-1 数据表清单
表名 | 说明 |
管理员用户表 | 用于存储管理员信息表格 |
普通用户表 | 用于存储普通用户信息表格 |
书籍信息表 | 用于存储书籍基本信息表格 |
书籍外借信息表 | 用于储存外借书籍的基本信息 |
字段名 | 数据类型 | 长度 | 主键 | 备注 |
ID | 自动编号 | 10 | 是 | 由数据库sequence自动生成 |
Adminname | Varchar2 | 50 | 否 | 管理员的登录账号 |
Password | Varchar2 | 50 | 否 | 管理员登录的密码 |
字段名 | 数据类型 | 长度 | 主键 | 备注 |
ID | 自动编号 | 10 | 是 | 由数据库sequence自动生成 |
Username | Varchar2 | 50 | 否 | 唯一标识用户,不可缺 |
Password | Varchar2 | 50 | 否 | 普通用户用户登录密码 |
Indentityid | Varchar2 | 100 | 否 | 用户注册的身份证号 |
Year | Varchar2 | 50 | 否 | 用户入学年份 |
Gender | Varchar2 | 30 | 否 | 用户性别 |
College | Varchar2 | 50 | 否 | 用户所在学院 |
字段名 | 数据类型 | 长度 | 主键 | 备注 |
ID | 自动编号 | 10 | 联合主键 | 由数据库sequence自动生成 |
Bookname | Varchar2 | 50 | 联合主键 | 书籍名称 |
Bookauthor | Varchar2 | 50 | 否 | 书籍作者名 |
Phname | Varchar2 | 50 | 否 | 出版社名称 |
Location | Varchar2 | 60 | 否 | 所在位置 |
Category | Varchar2 | 80 | 否 | 所属科目 |
Status | Varchar2 | 20 | 否 | 书籍状态 |
Renttime | Varchar2 | 20 | 否 | 最大借阅时间 |
字段名 | 数据类型 | 长度 | 主键 | 备注 |
ID | Varchar2 | 10 | 是 | 由数据库自动生成 |
Book_date | Varchar2 | 50 | 否 | 外借时间 |
Act_ret_date | Varchar2 | 50 | 否 | 实际的外借时间 |
Exp_ret_date | Varchar2 | 50 | 否 | 最大的外借时间 |
Book_id | Varchar2 | 10 | 否 | 书籍编号 |
Bookname | Varchar2 | 50 | 否 | 书籍名字 |
Authorname | Varchar2 | 50 | 否 | 书籍作者名 |
User_id | Varchar2 | 10 | 否 | 借阅者id |
服务器端的设计---搭建java web服务器
本软件是C/S结构的系统,因此要先搭建服务器端,利用Java EE中的servlet来提供服务,并将其部署在Tomcat下。需要解决的是创建不同的servlet来提供不同的服务。
Web服务的名称:LibraryService
在MyEclipse中新建一个web project,取名为LibraryService,其结构如下图:
连接数据库模块
com.briup.jdbc是CVM模式中的低层,数据库层,包中的类是用来连接数据库和操作数据库的,其中JDBCConnectionFactory.java用来连接数据库的,连接数据库的三个变量为:
private static String url;
private static String userName;
private static String userPwd;
连接数据库需要url,username,userPassword这三个值,而这三个值放入到jdbcinfo中,通过Properties来获取,部分代码如下:
Properties pro = new Properties();
pro.load(new FileInputStream("E:\\Myeclipse6.5 workspace\
LibraryService\\src\\com\\briup\\jdbc\\ jdbcinfo"));
url=pro.getProperty(“url”);
new oracle.jdbc.driver.OracleDriver();
Connection conn = DriverManager.getConnection(url,userName,userPwd);
服务器功能模块
com.briup.dao是CVM模式中的Dao层,为service提供服务,封装对数据库的操作的方法。
com.briup.servlet包中就各个不同的Servlet类,其具体情况如下:
注册模块
提供用户注册servlet为RegisterServlet,重写其doPost()和doGet()方法,该servlet是用来处理学生用户注册请求。注册的参数有username、password、indentityid、year、gender、college,其url为:
http://192.168.19.1:8088/LibraryService/servlet/registerservlet
部分代码如下:
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String indentityid = request.getParameter("indentityid");
String year = request.getParameter("year");
String gender = request.getParameter("gender");
String college = request.getParameter("college");
LibraryDao dao =new LibraryDaoImpl();
try {User user1=(User)dao.findByUsername(username);
if(user1!=null)
{xml=MakeXML.makeXml("该用户名已存在了false);
}else{
User user=new User();
user.setUsername(username);
user.setPassword(password);
user.setIndentityid(indentityid);
user.setYear(year);
user.setGender(gender);
user.setCollege(college);
dao.save(user);
("恭喜您注册成功了true);
}
登录模块
提供用户登录的servlet为LoginServlet,重写其doPost()和doGet()方法,该servlet是用来处理学生用户和管理员登录的请求。登录的参数有username、password,其url为:
http://192.168.19.1:8088/LibraryService/servlet/loginservlet
部分代码如下:
PrintWriter out = response.getWriter();
System.out.println("welcome clientlogin");
String xml=null;
//获得帐号
String flag=request.getParameter("flag").trim();
String username =
request.getParameter("username").trim();
String password=
(String)request.getParameter("password").trim();
LibraryDao dao=new LibraryDaoImpl();
if(flag.equals("normal")){
if(username!=null)
{
try {
com.briup.pojo.User user=dao.findByUsername(username);
if(user!=null)
{
if(user.getPassword().equalsIgnoreCase(password))
{
xml=MakeXML.makeXml("恭喜您登录成功了true);
}else{
xml=MakeXML.makeXml("密码不对false);
}
}else{
"用户名不正确false);
}
} catch (Exception e) {
// TODO Auto-generated catch block
("网络异常");
out.println(""); out.println("网络异常
}
}
}else if(flag.equals("admin")){
try {
Admin admin=dao.findByAdminname(username);
if(admin!=null)
{
if(admin.getPassword().equals(password))
{
xml=MakeXML.makeXml("恭喜您登录成功了true);
}else{
xml=MakeXML.makeXml("密码不对false);
}
}
else{
用户名不存在false);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
书籍查询模块
提供特定书籍查询servlet为findBookServlet,重写其doPost()和doGet()方法,该servlet是用来处理学生用户查询特定书籍的请求。查询书籍参数有bookname、bookauthor,其url为:
http://192.168.19.1:8088/LibraryService/servlet/findbooksservlet
部分代码如下:
String bookname=request.getParameter("bookname").trim();
String authorname=request.getParameter("authorname").trim();
String status=request.getParameter("status").trim();
为yes表示被借出了 为no表示没被借出没
System.out.println("----hello i am in findBooksServlet----");
String xml=null;
List list=null;
LibraryDao dao=new LibraryDaoImpl();
if(status.equals(""))
{
try {
list=dao.findBookByName(bookname, authorname);
if(list!=null)
{
xml=MakeXML.makeXml(list,list.size()+"");
}
else{
"抱歉图书馆没有该书了");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
try {
list=dao.findBookByName(bookname, authorname,status);
if(list!=null)
{
xml=MakeXML.makeXml(list,list.size()+"");
}
else{
"抱歉图书馆没有该书了");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
特定用户查询模块
提供特定用户查询servlet为findUserServlet,重写其doPost()和doGet()方法,该servlet是用来处理管理员用户查询特定学生用户信息的请求。管理员查询特定学生用户参数有username,其url为:
http://192.168.19.1:8088/LibraryService/servlet/finduserservlet
部分代码如下:
PrintWriter out = response.getWriter();
String username =
request.getParameter("username").trim();
String xml=null;
LibraryDao dao=new LibraryDaoImpl();
try {
com.briup.pojo.User user=dao.findByUsername(username);
if(user!=null)
{
try {
xml=MakeXML.makeXml(user,"");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
try {
密码不对false);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (DataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
查询所有用户模块
提供所有用户查询servlet为findAllUserServlet,重写其doPost()和doGet()方法,该servlet是用来处理管理员用户查询所有学生用户信息的请求。查询所有学生用户信息不需要提供任何参数,只需要点击查询所有按钮便可以查询出所有,其url为:
http://192.168.19.1:8088/LibraryService/servlet/findalluserservlet
部分代码如下:
PrintWriter out = response.getWriter();
List list=null;
LibraryDao dao=new LibraryDaoImpl();
try {
list=dao.findAlluser();
xml=MakeXML.makeXml(list,"");
} catch (Exception e) {
// TODO Auto-generated catch block
try {
"网络异常false);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
添加书籍模块
提供管理员添加书籍servlet为saveBookServlet,重写其doPost()和doGet()方法,该servlet是用来处理管理员用户对新书籍进行添加上架的请求。对需要上架处理的书籍需要提供参数有书籍名、书籍作者、书籍所属科目、书籍所在位置,书籍出版社名字、最大借阅时间等参数,其url为:
http://192.168.19.1:8088/LibraryService/servlet/savebookservlet
部分代码如下:
PrintWriter out = response.getWriter();
String bookname=request.getParameter("bookname").trim();
String authorname=request.getParameter("authorname").trim();
String phname=request.getParameter("phname").trim();
String location=request.getParameter("location").trim();
String category=request.getParameter("category").trim();
//String status=request.getParameter("status").trim();
String renttime=request.getParameter("renttime").trim();
String num=request.getParameter("num").trim();
String xml=null;
int number=Integer.parseInt(num);
if(number>0)
{
LibraryDao dao =new LibraryDaoImpl();
for(int i=0;i Book book=new Book(); book.setBookname(bookname); book.setAuthorname(authorname); book.setPhname(phname); book.setLocation(location); book.setCategory(category); book.setStatus("no"); book.setRenttime(renttime); try { dao.save(book); System.out.println("I have save this book "); } catch (Exception e) { // TODO Auto-generated catch block try { 抱歉出错了",false); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } e.printStackTrace(); } } try { 恭喜已保存了该图书",true); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 客户端的设计---设计ANDROID UI界面 在Eclipse安装好了ADT插件并且导入了AndroidSDK后,创建一个android project,此工程是作为图书馆管理系统的客户端,是为广大用户下载使用的,所以,该UI界面的主要要求是要操作性强和交互简单。客户端的注意事项为:一个是数据库的设计,一个是各个功能的布局。 Android project名称:Library 工程结构如图所示: com.briup.utils中包含的是各种工具类和封装的方法;com.briup中则是客户端中实现各个功能的类,每一个界面的类都在此包中,详细情况如下: LibraryActivity.java是系统主界面,用于选择登录或者注册; RegisteActivity.java是注册界面; LoginActivity.java是登录界面; NuActivity.java是学生用户查询书籍信息界面; AdminActivity.java是管理员管理界面; ManagerBook.java是管理员管理书籍界面,包括书籍的添加、查询、删除; ManagerUser.java是管理学生用户界面; FindOneUser.java是管理员查询特定学生界面; FindAllUserActivity.java是管理员查询所有学生界面。 具体功能模块 注册界面 对于一个系统的开始,首先必须的是用户的注册界面,注册模块是为了登录系统所进行的获取通行证的步骤,注册所有的信息都将提交给数据库进行存储,注册的信息将作为用户在本系统进行一切活动的标识。注册功能对应的程序名为com.briup包下的RegisterActivity.java。注册界面如下: 登录界面 登录界面作为系统的门面,登录界面完成的功能是验证所登录用户的账号是否正确,以验证是否有进入系统的权限。登录功能对应的程序名为com.briup包下的LoginActivity.java。登录界面如下: 学生用户书籍查询界面 学生用户通过输入所需查询的书籍名字和书籍作者名,便可以从数据库中查询到所查询的图书。书籍查询功能对应的程序名为com.briup包下的NuActivity.java。查询界面如下: 管理员界面 管理员界面显示的是管理员的两个主要功能:管理用户和管理图书,通过点击不同的按钮可以实现不同的功能进行管理。注册功能对应的程序名为com.briup包下的AdminActivity.java。管理员管理界面如下: 管理学生用户界面 管理学生用户界面是对所有学生用户进行管理的界面,这个界面的主要功能有查找特定用户和查找所有用户两种方式,通过查找,最终把所有用户都显示在界面上。注册功能对应的程序名为com.briup包下的ManagerUserActivity.java.管理学生用户界面如下: 管理图书界面 管理图书界面是管理员的另外一个主要功能,管理员能通过这个界面增加新的书籍和查询特定的书籍信息情况,同时,能对查询到的书籍进行删除等功能。注册功能对应的程序名为com.briup包下的ManagerBookActivity.java。管理图书界面如下: 图书增加界面 管理员通过增加书籍界面,增加所要增加的书籍的基本信息,通过添加这些信息,是为了普通学生用户通过作者名和书籍名查询时能更好的了解到书籍的基本信息等基本情况。注册功能对应的程序名为com.briup包下的AddBookActivity.java。图书增加界面如下: 用户注册测试 用户在手机终端打开客户端应用程序后,有两个按钮选择,如果还没有账号,则点击用户注册按钮跳转到注册界面。注册界面需要你输入你的用户名、密码、身份证号、入学年份、性别和所在学院等信息。如果用户填写的信息不全或者遗漏,则提示填写完整。如果注册成功,则跳转到登录模块进行登录。 注册无效类:注册信息不完整,提示填写完整。 注册有效类:注册信息完整,并且注册信息符合唯一性,跳转到登录界面。 用户登录测试 用户登录分为学生用户登录和管理员登录,两者的登录方式都是只需要提供用户名和密码就可进行登录操作。学生用户登录成功后,跳转到图书查询界面;管理员登录成功后,跳转到管理员界面,管理员界面分为学生管理和图书管理两部分。 登录无效类:登录账号或者密码不符,登录不成功,提示错误。 登录有效类:登录账号密码相符,登录成功,并跳转到学生用户或管理员相对应的界面。 图书查询测试 作为图书馆管理系统的主要功能,用户通过用户名和密码登录后,便可以享受图书查询等功能服务。学生用户想要查询的书籍只要提供书籍名和书籍作者,就能查询到该书籍的基本信息。 测试无效类:查询的图书不存在,提示查询图书不存在。 测试有效类:查询的图书存在,并列出所查询图书的基本信息。 用户管理测试 对于图书管理员而言:他们除了上述所具有的权利外,还需要对普通用户进行管理。 在用户管理中,通过用户名搜索出特定学生用户或者查询出所有学生用户,在用户列表出来之后,通过长按用户列表上的某一条信息,可以对该用户进行删除操作。 测试无效类:查询特定的学生不存在,提示所查询的学生不存在。 测试有效类:查询特定学生存在,并列出学生的基本信息。 书籍管理测试 书籍管理中,除了书籍查询功能外,还有对书籍进行添加的操作,在对书籍进添加操作时,需写明书籍的一些基本信息,比如:书名、作者名、所属科目、所放位置等信息。在书籍查询功能上,可以通过长按查询出来的书籍列表,来删除、更新所选中的书籍。 测试无效类:书籍添加信息不完整,提示填写完整。 测试有效类:书籍添加信息完整,添加成功。 总 结 经过一学期的努力终于完成了基于Android平台的图书管理系统的设计以及论文,本图书管理系统实现一般传统WEB上的图书管理系统所必备的基本功能,并且提供了友好的用户交互界面,让用户操作起来极为方便和快捷,在这13周里,我收获了很多,也付出了很多,从一个系统设计者的角度来说,我体会到了一个系统的设计其实不是想象的那么简单,对于用户来讲,也许手机软件上的一个看似很小的功能,但在系统开发者看来有时却并不显得简单,有句俗话叫“牵一发而动全身”,在一个系统有时一个小小的改动往往会牵涉到一些复杂的业务逻辑和算法,因此作为一个开发者,必须要有十足的耐心,才能将系统尽可能设计的合理,这款系统,我从整体设计和用户交互的UI层,到完成具体功能的业务逻辑层,直至底层数据库的设计,都花了很多时间去思考,做了很多繁琐的工作,但我认为是值得的,因为我做的大量工作换来了用户操作的简便,也为用户提供了良好的体验。 在没有做毕业设计之前,觉得以前学过的知识太零碎,只是单纯的概念和计算之类的,并且没有整体的联系和框架,并且也单纯的认为毕业设计只是对以前的知识点的总结,但是通过这次毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高。通过这次毕业设计使自己明白了原来的知识是非常欠缺的,要以后的工作和生活中都应该不断地学习,努力提高自己的知识和综合素质。 在这次毕业设计中,我遇到了很多问题。单从图书管理系统的服务器端来说用到的知识都有XML、Servlet、JDBC、数据库Oracle、等等……当初学习时,只是听懂了一部分,没有完全理解,所以做整体框架花费了一部分时间,以至于时间比较紧张。至于开发客户端相对来说比较熟练一点。当然,图书管理系统是一个比较大的项目,光调试就要启动数据库、服务器端Tomcat、客户端,一旦中间有什么问题需要检查的地方很多,确实需要细心,耐心,更重要的是技术。因此这次毕业设计让我看到了我们不能只满足于掌握一种计算机语言,其实多种计算机语言之间是相通的,我们要学会联系,只有技术过关了,才能做出好项目。 在这次毕业设计中,同学之间互相帮助,有什么不懂得大家一起商量,发现我们所学的知识实在是有限,不过我们能够充分利用网络的优势去查阅资料。在整个设计过程中懂得了许多东西,也培养了思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了设计过程中成功的喜悦。虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。 对于本系统,虽然完成了图书馆管理系统的基本功能,但我觉得还好很多的不足,首先,交互界面虽然尽量做到简洁、方便,但是由于时间和经验的不足,有许多地方还是不能很好的做到美观和简洁的平衡点。 本系统虽然完成了传统WEB图书馆管理系统的基本功能,但我觉得还是有很多功能可以有待发挥,比如,图书馆的电子书下载及电子书在线阅读等模块,以上两个模块都没在本系统实现,但我相信,如果能加上这些没有实现的模块,本系统将更加完善。