邮局订报管理系统课程设计报告.doc

上传人:文库蛋蛋多 文档编号:4167973 上传时间:2023-04-08 格式:DOC 页数:43 大小:1.54MB
返回 下载 相关 举报
邮局订报管理系统课程设计报告.doc_第1页
第1页 / 共43页
邮局订报管理系统课程设计报告.doc_第2页
第2页 / 共43页
邮局订报管理系统课程设计报告.doc_第3页
第3页 / 共43页
邮局订报管理系统课程设计报告.doc_第4页
第4页 / 共43页
邮局订报管理系统课程设计报告.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《邮局订报管理系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《邮局订报管理系统课程设计报告.doc(43页珍藏版)》请在三一办公上搜索。

1、 南京农业大学信息科技学院数据库课程设计报告 设计题目:邮局订报管理系统 专 业:计算机科学与技术 班 级: 组 长: 成 员: 指导老师: 黄芬 日 期:2009年11月2日成 绩:目录1.开发环境和相关技术介绍11.1开发环境11.2相关技术介绍12.需求分析12.1系统需求和功能12.1.1系统需求12.1.2系统功能12.2数据字典22.2.1数据结构22.2.2数据项22.2.3数据流22.3数据流图32.4安全性要求33概念结构设计33.1设计方法和步骤43.2概念结构E-R图44.逻辑结构设计64.1关系模式设计与优化分析64.1.1关系模式设计64.1.2优化分析64.2系统结

2、构图84.3系统完整性设计85.数据库物理设计95.1数据存放位置95.2确定系统配置95.3模块设计95.3.1登陆模块95.3.2管理模块95.3.3管理账户模块105.3.4查询模块106.数据库实施106.1数据库构建106.1.1各数据表说明106.1.2数据库创建116.2数据库分离和恢复方案116.2.1分离数据库116.2.2恢复数据库117.应用界面设计和应用程序编码127.1用户界面设计127.2类文件功能描述137.3主要代码分析138.系统测试198.1测试方案208.2测试过程208.2.1登陆测试208.2.2主界面各子模块测试219.安装和使用说明389.1安装说

3、明389.1.1安装Java运行环境JRE389.1.2安装Microsoft SQL Server 2000 JDBC驱动程序389.1.3升级Microsoft SQL Server 2000数据库管理系统389.1.4附加数据库389.1.5可能出现情况389.2使用说明3810.完成情况和总结3810.1完成情况3810.2总结39【参考文献】391.开发环境和相关技术介绍1.1开发环境数据库系统:Microsoft SQL Server 2000 sp4开发语言:JAVA数据库连接方式:JDBC连接方式开发工具:Eclipse 3.31.2相关技术介绍Microsoft SQL Se

4、rver 2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进行操作,也可以使用功能强大的GUI工具进行灵活的数据管理。同时,系统还提供功能完善的API,可以在应用程序中调用这些API来实现与数据库系统的连接以及相关数据的操作。Sp4是该系统的一个版本号,SQL Server 2000 SP3以上的版本才可以支持纯JDBC的连接方式。Eclipse:功能强大的应用程序开发工具,主要支持基于Java语言的各种开发项目。灵活的Plun-in功能,可以根据具体需要安装各种插件。JDBC连接方式:Java与数据库系统的一种连接

5、方式,Java程序使用JDBC API与数据库进行通信,并用它操作数据库中的数据。JDBC API使Java程序与具体数据库系统独立开来,保证了Java程序高度的可移植性。2.需求分析2.1系统需求和功能2.1.1系统需求设计本系统模拟客户在邮局订购报刊的管理内容,包括查询报刊、订报刊、订购后的查询、统计等的处理情况,系统需要管理的情况如下:(1)可随时查询出可订购报纸的情况,如报刊编号(PNO)、报刊名称(PNA)、单价(PPR)、出版单位(PDW)等,这样便于用户选订。(2)客户订购报刊时,可订购多种报刊,每种报刊可订若干份。(3)为便于邮局投递报刊,客户需提供如下信息:客户编码(CID)

6、、客户姓名(CNA)、联系电话(CTE)、联系地址(CAD)、邮编(CPC)。(4)邮局对每种报刊的订购人数不限,每个客户可多次订购报刊,所订报刊亦可重复。2.1.2系统功能1. 客户可到邮局通过管理员查询可订购报刊的详细情况。2客户通过管理员根据自己的需求订购报刊,完成一次订购后需进行结账才能提交订单。3客户可以通过管理员查询自己的订报情况。4管理员可以登录系统对各库表进行插入、修改、删除、查询等基本操作。5管理员每次要添加一个新客户时,由客户提供各种信息。6每次要添加一个新的订单时,系统会自动为该订单编制唯一的订单编号,然后管理员根据客户订刊要求填写订单并结账收费。7管理员能详细查询某报刊

7、的订出情况,并且能统计出某报刊的总订数量与总金额。8管理员可以管理客户、报刊、订单和系统账户,对系统进行维护。2.2数据字典2.2.1数据结构管理员 = 管理员账号+管理员密码客户 = 客户编号+客户姓名+联系电话+联系地址+邮编报刊 = 报刊编号+报刊名+单价+出版单位+备注订单 = 订单编号+客户编号+订刊日期详细订单 = 订单编号+报刊编号+订刊份数+期数+单价+总金额2.2.2数据项表2.1数据项表编号标识符类型长度所属表名同义名1AIDchar20Admin管理员账号2APWchar20Admin管理员密码3CIDchar8Customer,Oder客户编号4CNAchar20Cus

8、tomer客户姓名5CTEchar15Customer联系电话6CADchar50Customer联系地址7CPCchar10Customer邮编8PNOchar6Paper,Orderdetail报刊编号9PNAchar50Paper报刊名10PPRfloat8Paper,Oderdetail单价11PDWchar50Paper出版单位12PREMchar20Paper备注13ONOchar10Oder,Orderdetail订单编号14ODATEdatetime8Oder订刊日期15NUMint4Orderdetail订刊份数16QISHUint4Orderdetail期数17TOTALf

9、loat8Orderdetail总金额2.2.3数据流表2.2数据流表编号名称来源去向组成1身份信息系统管理员应用系统管理员账号+密码2授权信息应用系统系统管理员3错误身份信息应用系统系统管理员4查询请求系统管理员应用系统待查询对象识别符5查询结果应用系统系统管理员被查询对象具体信息6管理请求系统管理员应用系统识别符+管理类型7管理结果信息应用系统系统管理员被管理对象处理结果8非法请求应用系统系统管理员非法请求提示信息2.3数据流图系 统 管 理 员报 刊 订 阅 应 用 系 统身份信息授权信息错误身份信息查询请求查询结果信息信息管理请求管理结果信息非法请求图2.1报刊订阅系统顶层图2.4安全

10、性要求在数据库内设有管理员表,登陆系统时会要求输入管理员账号和密码。登陆模块根据输入账号和密码查管理员表,查到匹配记录则允许其登陆系统。管理员账号和密码可以在登陆系统后添加和修改。3概念结构设计3.1设计方法和步骤采用自底而上的设计方法。先自顶向下地进行需求分析,对报刊订阅管理系统的需求进行逐步细化;然后再自底而上地设计概念结构,最终将各个局部应用的概念结构集合成为全局概念结构。3.2概念结构E-R图通过对局部应用的选择,逐一设计出分E-R图,并对各个分E-R图进行合并,生成初步E-R图,消除不必要的系统冗余,可以得出订报管理系统E-R图。CustomerCIDCADCTECNACPC图3.1

11、客户E-R图PNOPNAPREMPaperPPRPDW图3.2报刊E-R图OderONOCIDODATE图3.3订单E-R图ONOPNOQISHUTOTALPPRNUMOrderdetail图3.4详细订单E-R图AdminAIDAPW图3.5管理员E-R图CPCCIDPPRPDWPREMPNAPNOCNACTECADAPWAIDTOTALQISHUNUMPPRPNOCIDONOP/OC/OPaperAdminCustomerOrderdetail1ODATEnmnONOn1O/OOder 图3.6订报管理系统E-R图4.逻辑结构设计4.1关系模式设计与优化分析4.1.1关系模式设计根据概念结

12、构的设计,可以将系统E-R图转换为以下关系模式(画横线的为各关系的码):Customer(CID,CNA,CTE,CAD,CPC)Paper(PNO,PNA,PDW,PPR,PREM)Oder(ONO,CID,ODATE)Foreign key:CIDOrderdetail(ONO,PNO,PPR,NUM,QISHU,TOTAL)Foreign key:ONO,PNOAdmin(AID,APW)4.1.2优化分析考察关系模式:Customer(CID,CNA,CTE,CAD,CPC):CIDCNACIDCTECIDCADCIDCPC它只有一个码:CID,这里没有任何属性对CID部分依赖或传递依

13、赖,所以此关系模式属于3NF,由于此关系模式中CID是唯一的决定因素,所以该关系模式属于BCNF.考察关系模式:Paper(PNO,PNA,PDW,PPR,PREM):PNOPNAPNOPDWPNOPPRPNOPREM它只有一个码:PNO,这里没有任何属性对PNO部分依赖或传递依赖,所以此关系模式属于3NF,由于此关系模式中PNO是唯一的决定因素,所以该关系模式属于BCNF.考察关系模式:Order(ONO,CID,ODATE):ONOCIDONOODATE它只有一个码:ONO,这里没有任何属性对ONO部分依赖或传递依赖,所以此关系模式属于3NF,由于此关系模式中ONO是唯一的决定因素,所以该

14、关系模式属于BCNF.考察关系模式:Orderdetail(ONO,PNO,NUM,PPR,QISHU,TOTAL):(ONO,PNO)NUM(ONO,PNO)PPR(ONO,PNO)QISHU(ONO,PNO)TOTAL (NUM,PPR,QISHU)TOTAL由上每个非主属性完全函数依赖于码可得出该关系模式属于2NF,由于属性TOTAL还完全依赖于非码属性组(NUM,PPR,QISHU),故不满足3NF.关系模式:Admin(AID,APW)AIDAPW显然属于BCNF.4.2系统结构图退出系统添加报刊邮局订报管理系统报刊管理订单管理客户管理账户管理数据统计删除报刊修改报刊 查询删除客户修

15、改客户删除订单添加订单 查询删除管理员添加客户修改管理员添加管理员 查询按报刊编号查询按报刊名查询按订单编号查询按客户编号查询按客户编号查询按客户姓名查询查询所有报刊查询所有客户查询所有订单查询订单详情修改订单项删除订单项图4.14.3系统完整性设计Customer (CID,CNA,CTE,CAD,CPC)其中:CID为主码,CID,CAN,CTE,CAD,CPC约束都为非空Paper (PNO, PNA, PDW,PPR,PREM)其中:PNO为主码,PNA,PPR约束为非空Oder (ONO, CID, ODATE)其中:ONO为主码,CID为外码(参照对象为Customer(CID))

16、Orderdetail (ONO, PNO, NUM,PPR,QISHU,TOTAL)其中:(ONO,PNO)为主码,ONO和PNO分别为外码,(参照分别为:Oder(ONO)和Paper(PNO);NUM,PPR,QISHU,TOTAL都约束为非空Admin(AID,APW)其中:AID为主码。5.数据库物理设计5.1数据存放位置本系统数据存放在磁盘中。5.2确定系统配置根据具体需要配置。5.3模块设计5.3.1登陆模块管理员账号管理员密码查看Admin表确认身份进入系统报出错误身份信息图5.15.3.2管理模块待添加节点信息待修改节点标示符操作类型(修改、删除)请求合法性检查检查是否有插入

17、冲突完成节点添加请求合法性检查根据标识符查找节点执行相应操作处理结果显示错误信息图5.25.3.3管理账户模块待修改ID和密码操作类型(添加、删除)待添加节点信息查找Admin表执行相应操作信息完整性检查插入冲突检查插入节点处理结果显示错误信息图5.35.3.4查询模块待查询节点标示符请求合法性检查根据ID在相应表中查找记录显示查找结果显示错误信息图5.46.数据库实施6.1数据库构建6.1.1各数据表说明6.1数据说明表编号数据表名称类型内容1Admin辅助表记录管理员帐号,密码2Customer主表记录客户信息3Paper主表记录报刊信息4Oder主表记录订单基本信息5Orderdetai

18、l主表记录详细订单信息6.1.2数据库创建CREATE TABLE Admin(AID CHAR(20) PRIMARY KEY NOT NULL,APW CHAR(20) NOT NULL);CREATE TABLE Customer(CID CHAR(8) PRIMARY KEY NOT NULL,CNA CHAR(20) NOT NULL,CTE CHAR(15) NOT NULL,CAD CHAR(50) NOT NULL,CPC CHAR(10) NOT NULL);CREATE TABLE Paper(PNO CHAR(6) PRIMARY KEY NOT NULL ,PNA CH

19、AR(50) NOT NULL ,PDW CHAR(50),PPR FLOAT(8) NOT NULL,PREM CHAR(20);CREATE TABLE Oder(ONO CHAR(10) PRIMARY KEY,NOT NULL ,CID CHAR(8) NOT NULL ,ODATE DATETIME DEFAULT(GETDATE(),FOREIGN KEY (CID) REFERENCES Customer(CID);CREATE TABLE Orderdetail(ONO CHAR(10) NOT NULL, PNO CHAR(6) NOT NULL, PPR FLOAT(8)

20、NOT NULL, NUM INT(4) NOT NULL, QISHU INT(4) NOT NULL, TOTAL FLOAT(8) NOT NULL, PRIMARY KEY (ONO,PNO),FOREIGN KEY (ONO) REFERENCES Oder(ONO),FOREIGN KEY(PNO) REFERENCES Paper(PNO);6.2数据库分离和恢复方案6.2.1分离数据库在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库”,执行分离操作,之后可进行拷贝数据库MDF文件和LDF文件。6.2.2恢复数据库在企业管理器的控制台树中选择“数据库”节点,右击

21、,“所有任务”,“附加数据库”,找到待恢复数据库的MDF文件,确定。7.应用界面设计和应用程序编码7.1用户界面设计本系统的用户界面用Java Swing编写,主要由一个登陆界面,一个主界面,多个子功能实现界面和多个辅助对话框组成。主界面集合系统主要基本功能按键,子功能实现界面和辅助对话框负责采集用户输入信息和做基本的信息处理图7.1登陆界面图7.2主界面7.2类文件功能描述NO.类名类功能1LoginFrameFrame登陆界面类,实现登陆功能2MainFrameFrame主界面类,显示主界面,可连接到其他各个子功能界面3PaperFrameFrame报刊管理类,实现报刊管理界面,及部分子功

22、能4OrderFrameFrame订单管理类,实现订单管理界面,及部分子功能5CustomerFrameFrame用户管理类,实现用户管理界面,及部分子功能6AdminFrameFrame账户管理类,实现修改账户密码、添加管理员和删除管理员7StatsFrameFrame数据统计类,统计各种报刊的汇总订阅情况并列表显示8addCustomerDialog添加客户类,实现添加客户功能9addOrderDialog添加订单类,实现添加订单功能10addPaperDialog添加报刊类,实现添加报刊功能11ConnectDB辅助类实现数据库连接功能12deleteCutomerDialog删除客户类

23、,实现删除客户功能13deleteOrderDialog删除订单类,实现删除订单功能14deletePaperDialog删除报刊类,实现删除报刊功能15updateCustomerDialog修改客户类,实现修改客户信息功能16updateOrderDialog查看订单详情类,实现修改订单功能,可以删除和修改订单项17updatePaperDialog修改报刊类,实现修改报刊信息功能7.3主要代码分析/数据库连接类,实现与数据库的连接,并能返回一个Statement对象/采用JDBC方式,需要加载SQLServer for JDBC Driver(驱动)public class Connec

24、tDB String driverclass = com.microsoft.jdbc.sqlserver.SQLServerDriver;String url = jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=DingBao;String userName = sa;String userPassword = sa;private Connection con;public Statement stmt;public Statement Connect()tryClass.forName(driverclass);con = Dr

25、iverManager.getConnection(url,userName,userPassword);stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);catch(Exception e)e.printStackTrace();return stmt;/添加客户模块,实现添加客户信息功能/下程序为“添加”按钮所执行的添加客户信息功能的实现final JButton button = new JButton();button.addActionListener(new

26、ActionListener() public void actionPerformed(final ActionEvent e) if(textField.getText().trim().length()!=0&textField_1.getText().trim().length()!=0&textField_2.getText().trim().length()!=0&textField_3.getText().trim().length()!=0&textField_4.getText().trim().length()!=0)if(textField.getText().trim(

27、).length()8)JOptionPane.showMessageDialog(null,客户ID过长,请重新输入!n客户ID不能超过8位数,错误!,JOptionPane.ERROR_MESSAGE);elseString sql = select * from Customer where CID=+textField.getText()+;tryStatement stmt = new ConnectDB().Connect();ResultSet rs = stmt.executeQuery(sql);if(rs.next()JOptionPane.showMessageDialo

28、g(null,客户ID已存在,请重新输入!,错误!,JOptionPane.ERROR_MESSAGE);elseString sql1 = insert into Customer values( +textField.getText().trim()+, + textField_1.getText().trim()+,+ textField_2.getText().trim()+,+ textField_3.getText().trim()+,+ textField_4.getText().trim()+);tryStatement stmt1 = new ConnectDB().Conn

29、ect();stmt1.executeUpdate(sql1);JOptionPane.showMessageDialog(null,添加客户成功!,成功!,JOptionPane.INFORMATION_MESSAGE);textField.setText(null);textField_1.setText(null);textField_2.setText(null);textField_3.setText(null);textField_4.setText(null);catch(Exception e3)e3.printStackTrace();catch (Exception e2)

30、e2.printStackTrace();elseJOptionPane.showMessageDialog(null,输入的客户信息不完整,添加失败!,错误!,JOptionPane.ERROR_MESSAGE););button.setText(添加);button.setBounds(22, 167, 72, 28);getContentPane().add(button);/添加订单模块,实现添加订单功能,一个订单可以选择多个报刊/下程序忽略了界面实现部分,只给出了实现主要功能的部分button.addActionListener(new ActionListener() public

31、 void actionPerformed(final ActionEvent e) /查询tryString sql = select CNA from Customer where CID=+textField.getText().trim()+;Statement stmt = new ConnectDB().Connect();ResultSet rs = stmt.executeQuery(sql);if(rs.next()textField_1.setText(rs.getString(CNA).trim();textField_2.setEditable(true);textFi

32、eld_3.setEditable(true);combobox.setEnabled(true);button_1.setEnabled(true);button_2.setEnabled(true);String sql1 = insert into Oder (ONO,CID) values(+label_2.getText().trim()+,+textField.getText().trim()+);sqls.add(sql1);elseJOptionPane.showMessageDialog(null,输入的客户ID不存在!,错误!,JOptionPane.ERROR_MESSA

33、GE);catch (Exception e1)e1.printStackTrace(););button_1.addActionListener(new ActionListener() public void actionPerformed(final ActionEvent e) /添加报纸textField.setEditable(false);button.setEnabled(false);if(textField_2.getText().trim().length()!=0&textField_3.getText().trim().length()!=0)tryString sq

34、l = select * from Paper where PNO=+combobox.getSelectedItem().toString().trim()+; Statement stmt = new ConnectDB().Connect(); ResultSet rs = stmt.executeQuery(sql); rs.next(); price = rs.getFloat(PPR); num = Integer.parseInt(textField_2.getText().trim(); qishu = Integer.parseInt(textField_3.getText(

35、).trim(); total = price * num * qishu; sum += total; sql = insert into Orderdetail (ONO,PNO,PPR,NUM,QISHU,TOTAL) values( + label_2.getText().trim()+, + combobox.getSelectedItem().toString().trim()+, + price+, + num+, + qishu+, + total+); sqls.addElement(sql); Vector vt = new Vector();vt.addElement(c

36、ombobox.getSelectedItem().toString().trim();vt.addElement(rs.getString(PNA).trim();vt.addElement(+price);vt.addElement(+num);vt.addElement(+qishu);vt.addElement(+total);rows.add(vt);DefaultTableModel model = new DefaultTableModel(rows,columnHeads);table.setModel(model);label_9.setText(+sum);combobox

37、.removeItem(combobox.getSelectedItem(); catch (SQLException e3) e3.printStackTrace(); catch (NumberFormatException exc) JOptionPane.showMessageDialog(null, 请在 订阅份数 和 订阅期数 输入正确的数字,错误!, JOptionPane.ERROR_MESSAGE); elseJOptionPane.showMessageDialog(null, 请输入 订阅份数 和 订阅期数,错误!, JOptionPane.ERROR_MESSAGE);

38、);button_2.addActionListener(new ActionListener() public void actionPerformed(final ActionEvent e) /提交订单if(sqls.size()1)int answer = JOptionPane.showConfirmDialog(null, 一共需要支付货款: + sum + 元n是否支付?, 确认支付,JOptionPane.YES_NO_CANCEL_OPTION);if(answer=JOptionPane.YES_OPTION)try Statement stmt = new ConnectDB().Connect();for (int i = 0; i sqls.size(); i+) stmt.executeUpdate(sqls.get(i);dispose();JOptionPane.showMessageDialog(null, 添加订单成功!,成功!,JOptionPane.INFORMATION_MESSAGE);catch (SQLException e5)e5.printStackTrace();else if(answer = JOptionPane.NO_OPTION)dispose();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号