资源描述
真诚为您提供优质参考资料,若有不当之处,请指正。目 录1引言4 1.1课题背景. . .41.2 课程设计目的 . 41.3 课程设计任务.42 系统结构分析. 52.1 需求分析 .52.2 系统模块图. .63 数据库设计. 93.1 概念结构设计. 93.2 逻辑结构设计. 103.3 数据库表的建立 .104 系统实现.124.1 数据库的连接. 124.2 系统功能模块设计.135 功能测试 . 155.1 订单界面. 155.2 各功能模块的测试 166 结束语. 18致谢.19参考文献.20附录.21书店管理系统的设计与实现订单信息管理模块学生姓名:冯淑华 指导老师:唐汇国摘 要 本课程设计主要解决书店的管理问题, 设计开发一个简单的书店管理系统 ,实现分类登陆,人员管理,书籍管理,订单管理以及各种查询,报表等功能。在课程设计中,系统开发平台为Windows 7,程序设计语言采用Java,数据库采用Oracle Database 10g Express Edition,程序运行平台为Windows 7。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在网上书店的管理中,解决实际问题。关键词 书店管理系统;数据库;JavaThe Design and Implementation of the Bookstore Management SystemOrder information management moduleStudent name: Feng Shuhua Advisor:TANG Hui-guoAbstract This course is designed mainly to solve the management issues of the bookstore which include the design and development of a simple bookstore management systems , classification landingachievement , personnel management , book management , order management and various queries or reports functions . In curriculum design ,our system development platform is Windows 7 and programming language uses the Java and database uses Oracle Database 10g Express Edition, and the program run platform makes use of Windows 7 . After debugging and running , The program is preliminary designed to achieve objectives, and properly perfect so that it can be applied in the management of the online bookstore to solve practical problems .Keywords Bookstore management system; Database; Java 1 引言1.1课题背景Internet的迅速发展正以前所未有的深度和广度影响和改善着人类生活的各个方面,越来越多的人开始意识到Internet所起到的重大作用.随着书店规模的不断扩大,员工人数的不断增多,使得书店管理的手工操作管理模式的局限性越发突出.本书店管理系统应用了科学的管理模式对员工.书籍.订单信息进行管理和维护,并且还提供了给类报表的打印,使原本非常复杂的手工管理变得简洁明了。计算机信息管理技术的应用,除了能在相当大的程度上代替人工作业,从而减少人员工作量,减轻工作负担,减少工作中因人为原因而产生的错误从而避免不必要的损失外,更重要的是能建立准确畅通、简便的信息流通渠道,为工作提供所需要的准确、及时的信息以帮助做出正确而及时的选择与决定,从而给采用这门技术的单位带来了巨大的可见或不可见的利益与效益。1.2课程设计目的书店的不断扩张,需要更为人性化的管理。因而设计一个好的书店管理系统,能够提高书店的管理效率,创造更多的社会价值和经济价值。本论文旨在论述书店管理费系统的设计与开发。通过书店管理系统的设计,熟练掌握Java、Oracle Database 10g Express Edition等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提高自身分析问题、解决问题的能力。1.3课程设计任务本课程设计任务是通过开发一个数据库书店管理系统,学习数据库系统的设计与开发,采用Java和Oracle Database 10g Express Edition等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。2系统结构分析2.1 需求分析书店管理系统是适应时代发展的需要,提高管理的效率而开发设计的。通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为书店管理人员提供全面、准确的各种数据。实现了书店管理的简单化和规划化,提高了书店的工作效率,从而使书店能够以少的投入获得更好的社会效益与经济效益。经过综合分析,确定了书店管理系统的主要包括以下功能: (1). 登陆管理功能登陆设置包括员工登陆。基本信息需要正确的员工姓名和密码才可以登陆。(2). 员工管理功能系统设置包括员工编号设置、员工姓名设置、员工性别设置、员工生日设置和备注。基本信息管理模块可以实现查询和删除员工信息功能。(3). 书籍管理功能系统设置包括图书名称设置、书籍编号设置、书籍出版社设置、书籍数量设置、书籍价格设置和书籍备注信息。基本信息管理模块可以实现添加和重置书籍信息功能:(4). 订单管理功能系统设置包括客户姓名设置、订单日期设置、订单编号设置和经手人信息。基本信息管理模块可以实现删除订单信息功能,以及对订单的模糊查询。(5) .订单详单管理功能 系统设置包括客户姓名设置、订单日期设置、订单编号设置、书籍名称设置、书籍数目设置、图书单价设置和经手人信息。基本信息管理模块可以实现查询订单详单信息功能。2.2 功能模块图1. 根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示。书店管理系统登陆管理模块理顾客信息管理订单信息管理雇员信息模块书籍信息模块订单详单信息管理图2.1 书店管理系统功能模块示意图2.“雇员信息设置”功能模块用于雇员编号管理、雇员姓名管理、雇员性别管理、雇员生日管理以及备注信息管理,其功能模块如图2.2所示。雇员信息设置雇员编号管理雇员性别管理雇员生日管理雇员姓名管理雇员备注管理图2.2 雇员信息设置3“书籍信息管理”功能模块用于图书名称管理、书籍编号管理、出版社信息、书籍数量管理、书籍价格管理以及备注信息,其功能模块如图2.3所示。书籍信息管理图书名称管理备注信息管理书籍数量管理书籍编号管理出版社管理书籍价格管理 图2.3 书籍信息管理4 .“订单详单信息管理”功能模块用于销售信息统计查询以及医生效益统计查询,其功能模块如图2.4所示。订单详单信息管理顾客名称信息经手人信息书籍编号信息书籍数量信息订单日期信息订单编号信息书籍总价信息图2.4 订单详单信息管理5.“订单信息管理”功能模块用于订单编号管理、客户姓名管理、经手人姓名管理、订单日期管理,其功能模块如图2.5所示。订单信息管理系统订单编号信息客户姓名信息经手人姓名信息订单日期信息 图2.5 订单信息管理6. “顾客信息设置”功能模块用于顾客编号管理、顾客姓名管理、联系方式管理、权限密码信息管理,其功能模块如图2.6所示。顾客信息管理系统顾客编号信息顾客姓名信息联系方式信息权限密码信息 图2.6 顾客信息管理 本系统将用户划分为一种类型,即书店员工用户。管理员可以管理其他用户的信息,在所有方面所有管理员的权限相同。3数据库设计3.1 概念结构设计根据需求分析抽象出信息结构,可得该系统的E-R图。(1). 雇员E-R图,如图3.1所示。雇员姓名备注生日编号性别图3.1 用户E-R图根据分E-R图和需求分析,可得到总E-R图,如图3.10所示。图3.10 总体E-R图3.2逻辑结构设计根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。数据库Bookmanage包含以下5个表:员工信息表Employee、书籍信息表BookInfo 、订单信息表BookOrders、顾客信息表Customs、订单详单表OrderDetail。(1). 订单信息表BookInfo 订单信息表BookInfo 用来保存书籍编号、书籍名称、书籍价格、书籍类型、书籍标记、出版社和库存等信息。表BookInfo 的结构如表3-2所示。 表3-2 表BookInfo 的结构编号字段名称数据结构说明1BookIDVarchar2(12)记录书籍编号2BookNameVarchar2(40)记录书籍名称3Pricenumber记书籍价格4BookTypeVarchar2(20)记录书籍类型5BookRemarkVarchar2(20)记录书籍标记6PublisVarchar2(20)记录出版社7Stocknumber记录书籍库存通过对上面表的分析,插入,删除,查找等操作,所有模式都符合3NF。前面是通过前台来实现系统安全性的,我们也可以对数据库进行身份验证,可以从服务器角度建一个登录名,使得不同的服务器角色拥有不同的权限,从而实现对数据库的不同权限的管理,以此来增强书店管理系统的安全性。3.3数据库表的建立在设计数据库表结构之前,首先要创建一个数据库。本系统使用的数据库为Bookmanage。可以在企业管理器中创建数据库,也可以在查询分析器中执行以下TransactSQl语句:(1) . 创建表BookOrders 创建表BookOrders(订单信息表),它的代码如下:create table BookOrders(OrdID varchar2(12),TotalPrue number(8),CusID varchar2(12),EmpID varchar2(12),OrdDate date,primary key(OrdID,CusID,EmpID),foreign key(CusID) references Customs(CusID),foreign key(EmpID) references Employee(EmpID);GO(2) . 创建表OrderDetail创建表OrderDetail(订单详单信息表),它的代码如下:create table OrderDetail(OrdID varchar2(12),BookID varchar2(12),BookCount number-primary key(OrdID)-foreign key(OrdID) references Orders(OrdID),-foreign key(BookID) references BookInfo(BookID);4系统实现4.1 数据库的连接在该系统中使用的数据库是Oracle Database 10g Express Edition。客户端采用的是PL/SQL Developer。Java运行环境为Eclipse Indigo。在安装好了软件之后,数据库的连接设置在Eclipse里的Properties功能键中。 如图4.1所示图4.1 数据库连接在Java Build Path中的Libraries中,运行Add External JARs找到ojdbc14_g.jar并添加,则此时已将数据库和Java程序成功连接。4.2 系统功能模块设置(1). 设计订单信息管理对话框订单信息管理对话框可以用来删除和查询订单信息。添加一个对话框,将其命名为ContentPane。对话框的布局如图4.2所示。图4.2 对话框ContentPane的布局对话框启动,当你点击查找功能键时,则会出现要查询的订单信息,此时你可以实现删除。当用户单击“查询”按钮时,将执行ChazhaoYuangongInfo()函数;当用户单击“删除”按钮时,将执行ShanchuYuanfongInfo()函数,在删除数据之前,程序要是否选择了要删除的订单记录,否则会提示请“请选中一行”。设计订单详单信息管理对话框订单信息管理对话框可以用来删除和查询订单信息。添加一个对话框,将其命名为ContentPane。对话框的布局如图4.3所示。图4.3 对话框ContentPane的布局对话框启动,当你点击查找功能键时,则会出现要查询的订单细则信息,此时你可以实现查询。当用户单击“查询”按钮时,将执行ChazhaoYuangongInfo()函数。5功能测试该程序实现了书店管理系统应有的功能,即登陆设置功能、员工信息管理功能、顾客信息管理功能、书籍信息管理功能和订单信息管理和订单详单管理功能。5.1订单信息管理程序运行时,登陆后点击“订单管理”便进入订单管理界面.点击“订单详单”便进入订单详单管理界面。如图5.1所示图 5.1订单管理界面和订单详单管理界面5.2各功能模块的实现各功能的实现均与设计对话框相符合,如订单信息管理,当用户选择该项时,会弹出订单信息管理对话框,用户可以进行删除以及查询等操作,界面如图5.2所示,其他界面的功能也都一一实现,完成了该系统的功能要求。 图5.2订单信息管理对话框6 结束语经过这些天的努力,本次课程设计终于完成了。通过这次课程设计,使我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。在本次课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写程序的能力,培养了基本的、良好的程序设计技能。这次课程设计同样提高了我的综合运用所学知识的能力。并对Java语言有了更深入的了解。由于我的经验和知识的不足,在程序中还存在很多缺陷。经过这次课程设计,我的知识得到了很大提高,经验也更加丰富。今后我会更多的学习编程技巧,不断的提高程序理解和设计能力致 谢在这次数据库的课程设计中,曾遇到过不少问题,单靠我个人的努力,很难按时完成该课程设计。在此,我衷心感谢我的指导老师彭玉旭。彭玉旭老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。另外,还要感谢学校领导、辅导员、各位同学对我们的关怀、帮助,为我们提供了良好的设计环境以及各方面的支持。参考文献1 李彦,韩光林,李玉波. SQL SERVE完全自学手册M. 北京:电子工业出版社,20072 萨师煊,王珊. 数据库系统概论. 北京:高等教育出版社. 20053 Y.DanieI Liang.Java. 万波. JAVA语言程序设计M. 第六版. 北京:机械工业出版社,2008附录 部分程序代码/ 程序名称: BookDenglu.java/ 程序功能:登陆管理/ 程序作者:冯淑华/ 最后修改日期:2012-09-12/*订单类*/package .vo;public class OrdersVo private String ordersID;private String cusName;private String empName;private String bookName;private String bookPrice;private String bookCount;private String totalPrice;private String ordersDate;public String getOrdersID() return ordersID;public void setOrdersID(String ordersID) this.ordersID = ordersID;public String getCusName() return cusName;public void setCusName(String cusName) this.cusName = cusName;public String getEmpName() return empName;public void setEmpName(String empName) this.empName = empName;public String getBookName() return bookName;public void setBookName(String bookName) this.bookName = bookName;public String getBookPrice() return bookPrice;public void setBookPrice(String bookPrice) this.bookPrice = bookPrice;public String getBookCount() return bookCount;public void setBookCount(String bookCount) this.bookCount = bookCount;public String getTotalPrice() return totalPrice;public void setTotalPrice(String totalPrice) this.totalPrice = totalPrice;public String getOrdersDate() return ordersDate;public void setOrdersDate(String ordersDate) this.ordersDate = ordersDate;/*订单信息*/package .daoImpl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import .DB.DBUtil;import .dao.IOrdersDao;import .vo.BookVo;import .vo.OrdersVo;public class OrdersDao implements IOrdersDao private PreparedStatement pstm;private ResultSet rs;private int rowNum;private Connection conn;private String sql;Overridepublic List queryOrders(OrdersVo temp) / TODO Auto-generated method stubDBUtil du = new DBUtil();List list = new ArrayList();OrdersVo vo = null;try conn = du.getConnect();sql = select BookOrders.Ordid, BookOrders.Orddate, bookinfo.price, customs.cusname, employee.empname, BookInfo.Bookname, OrderDetail.Bookcount from BookOrders inner join OrderDetail on BookOrders.Ordid = OrderDetail.Ordid inner join customs on BookOrders.Cusid = customs.cusid inner join employee on BookOrders.Empid = employee.empid inner join BookInfo on OrderDetail.Bookid = BookInfo.Bookid where customs.cusName = ?;pstm = conn.prepareStatement(sql);pstm.setString(1, temp.getOrdersID();rs = pstm.executeQuery();while (rs.next() String ordersID = rs.getString(ORDID);String cusName = rs.getString(CUSNAME);String empName = rs.getString(EMPNAME);String ordersDate = rs.getString(ORDDATE);vo = new OrdersVo();vo.setOrdersID(ordersID);vo.setCusName(cusName);vo.setEmpName(empName);vo.setOrdersDate(ordersDate);list.add(vo); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally du.free(conn, pstm, rs);return list;Overridepublic List queryAllOrders() / TODO Auto-generated method stubDBUtil du = new DBUtil();List list = new ArrayList();OrdersVo vo = null;try conn = du.getConnect();sql = select BookOrders.Ordid, BookOrders.Orddate, bookinfo.price, customs.cusname, employee.empname, BookInfo.Bookname, OrderDetail.Bookcount from BookOrders inner join OrderDetail on BookOrders.Ordid = OrderDetail.Ordid inner join customs on BookOrders.Cusid = customs.cusid inner join employee on BookOrders.Empid = employee.empid inner join BookInfo on OrderDetail.Bookid = BookInfo.Bookid;pstm = conn.prepareStatement(sql);rs = pstm.executeQuery();while (rs.next() String ordersID = rs.getString(ORDID);String cusName = rs.getString(CUSNAME);String empName = rs.getString(EMPNAME);String ordersDate = rs.getString(ORDDATE);vo = new OrdersVo();vo.setOrdersID(ordersID);vo.setCusName(cusName);vo.setEmpName(empName);vo.setOrdersDate(ordersDate);list.add(vo); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally du.free(conn, pstm, rs);return list;Overridepublic List queryOrdersDetail(OrdersVo temp) / TODO Auto-generated method stubDBUtil du = new DBUtil();List list = new ArrayList();OrdersVo vo = null;try conn = du.getConnect();sql = select BookOrders.Ordid, BookOrders.Orddate, bookinfo.price, customs.cusname, employee.empname, BookInfo.Bookname, OrderDetail.Bookcount from BookOrders inner join OrderDetail on BookOrders.Ordid = OrderDetail.Ordid inner join customs on BookOrders.Cusid = customs.cusid inner join employee on BookOrders.Empid = employee.empid inner join BookInfo on OrderDetail.Bookid = BookInfo.Bookid where BookOrders.ordId = ?;pstm = conn.prepareStatement(sql);pstm.setString(1, temp.getOrdersID();rs = pstm.executeQuery();while (rs.next() String ordersID = rs.getString(ORDID);String cusName = rs.getString(CUSNAME);String empName = rs.getString(EMPNAME);String bookName = rs.getString(BOOKNAME);String bookCount = rs.getString(BOOKCOUNT);String bookPrice = rs.getString(PRICE);String ordersDate = rs.getString(ORDDATE);vo = new OrdersVo();vo.setOrdersID(ordersID);vo.setCusName(cusName);vo.setEmpName(empName);vo.setBookName(bookName);vo.setBookCount(bookCount);vo.setBookPrice(bookPrice);vo.setOrdersDate(ordersDate);list.add(vo); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally du.free(conn, pstm, rs);return list;Overridepublic List queryAllOrdersDetail() / TODO Auto-generated method stubDBUtil du = new DBUtil();List list = new ArrayList();OrdersVo vo = null;try conn = du.getConnect();sql = select BookOrders.Ordid, BookOrders.Orddate, bookinfo.price, customs.cusname, employee.empname, BookInfo.Bookname, OrderDetail.Bookcount from BookOrders inner join OrderDetail on BookOrders.Ordid = OrderDetail.Ordid inner join customs on BookOrders.Cusid = customs.cusid inner join employee on BookOrders.Empid = employee.empid inner join BookInfo on OrderDetail.Bookid = BookInfo.Bookid;pstm = conn.prepareStatement(sql);rs = pstm.executeQuery();while (rs.next() String ordersID = rs.getString(ORDID);String cusName = rs.getString(CUSNAME);String empName = rs.getString(EMPNAME);String bookName = rs.getString(BOOKNAME);String bookCount = rs.getString(BOOKCOUNT);String bookPrice = rs.getString(PRICE);String ordersDate = rs.getString(ORDDATE);vo = new OrdersVo();vo.setOrdersID(ordersID);vo.setCusName(cusName);vo.setEmpName(empName);vo.setBookName(bookName);vo.setBookCount(bookCount);vo.setBookPrice(bookPrice);vo.setOrdersDate(ordersDate);list.add(vo); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally du.free(conn, pstm, rs);return list;Overridepublic Boolean deleteOrders(OrdersVo temp) / TODO Auto-generated method stubDBUtil du = new DBUtil();boolean bool = false;try conn = du.getConnect();sql = delete from bookorders where ordid = ?;pstm = conn.prepareStatement(sql);pstm.setString(1, temp.getOrdersID();System.out.println(temp.getOrdersID();int flag1 = pstm.executeUpdate();sql = delete from orderdetail where ordid = ?;pstm = conn.prepareStatement(sql);pstm.setString(1, temp.getOrdersID();int flag2 = pstm.executeUpdate();if(flag1 != -1) & (flag2 != -1) )bool =true; catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally du.free(conn, pstm, rs);return bool;/*订单服务*/package .serviceImpl;import java.util.List;import .daoImpl.CusDao;import .daoImpl.OrdersDao;import .service.IOrdersService;import .vo.CusVo;import .vo.OrdersVo;public class OrdersService implements IOrdersService Overridepublic List queryAllOrdersService() / TODO Auto-generated method stubOrdersDao dao = new OrdersDao();List list = dao.queryAllOrders();return list;Overridepublic List queryOrdersService(OrdersVo vo) / TODO Auto-generated method stubOrdersDao dao = new OrdersDao();List list = dao.queryOrders(vo);return list;Overridepublic List queryOrdersDetailService(OrdersVo vo) / TODO Auto-generated method stubOrdersDao dao = new OrdersDao();List list = dao.queryOrdersDetail(vo);return list;Overridepublic List queryAllOrdersDetailService() / TODO Auto-generated method stubOrdersDao dao = new OrdersDao();List list = dao.queryAllOrdersDetail();return list;Overridepublic boolean deleteOrdersService(OrdersVo vo) / TODO Auto-generated method stubOrdersDao dao = new OrdersDao();boolean bool = dao.deleteOrders(vo);return bool;/*详单信息查找*/package .actionListener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import .view.FrmMain;public class OrdersDetailSearch_Listener implements ActionListenerprivate FrmMain frmMain;public OrdersDetailSearch_Listener(FrmMain frmMain) super();this.frmMain = frmMain;Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubfrmMain.ordersDetailPerformed(e);/*订单信息查找*/package .actionListener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import .view.FrmMain;public class OrdersSearch_Listener implements ActionListener private FrmMain frmMain;public OrdersSearch_Listener(FrmMain frmMain) super();this.frmMain = frmMain;Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubfrmMain.ordersSearchPerformed(e); / 34
展开阅读全文