欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

课程设计汇本报刊订阅管理系统

  • 资源ID:87355949       资源大小:584.50KB        全文页数:24页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

课程设计汇本报刊订阅管理系统

软件工程课程设计报告目 录1.开发环境和相关技术介绍1.1开发环境31.2相关技术介绍32.需求分析2.1系统需求和功能32.2数据字典42.2.1数据构造42.2.2数据项42.2.3数据流52.3平安性要求52.4一致性要求52.5完整性要求53面向对象分析 3.1面向对象分析5 3.2系统的构造图 84.数据库实施4.1数据库创立84.1.1各数据表说明84.1.2数据库创立94.2数据库备份和恢复方案104.2.1应用辅助工具进展备份和恢复104.2.2别离数据库法104.3用户界面设计和应用程序编码104.3.1用户界面设计104.3.2类文件功能描述114.3.3主要代码分析115.系统测试方案和测试报告5.1测试方案165.2测试过程165.2.1登陆测试165.2.2目录管理功能测试175.2.3订户管理功能测试205.2.4订单管理功能测试215.2.5统计查询测试236.完成情况和总结6.1完成情况246.2总结247.参考文献1.开发环境和相关技术介绍1.1开发环境系统构造:C/S构造数据库系统:Microsoft SQL Server 2000 sp3宿主语言:JAVA数据库连接方式:JDBC连接方式开发工具:Eclipse 3.21.2相关技术介绍Microsoft SQL Server 2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进展操作,也可以使用功能强大的GUI工具进展灵活的数据管理。同时,系统还提供功能完善的API,可以在应用程序中调用这些API来实现与数据库系统的连接以及相关数据的操作。sp3是该系统的一个版本号,只有sp3以上的SQL 2000系统才能够支持纯JDBC连接方式。Eclipse:功能强大的应用程序开发工具,主要支持基于Java语言的各种开发工程。灵活的Plun-in功能,可以根据具体需要安装各种插件。JDBC连接方式:Java与数据库系统的一种连接方式,Java程序使用JDBC API与数据库进展通信,并用它操作数据库中的数据。JDBC API使Java程序与具体数据库系统独立开来,保证了Java程序高度的可移植性。2.需求分析2.1系统需求和功能设计一个报刊订阅应用系统,使系统满足以下功能和需求:1a一个订户可订多种报刊;一种报刊可被多个用户订阅;订单只能订阅现有报刊目录容;b投递时,必须根据订单的情况进展投递,不得超出订单的订阅品种、数量;2、系统功能包括:a订户管理:订户添加、修改、删除;b 目录管理:目录添加、修改、删除;c订单管理:完成订户订阅数据的管理包括添加、修改、删除;d 订单查询:按订户或者订单号查询订单详细情况;e统计查询:按报刊目录统计各类报刊的订阅数量及金额;f表单生成:根据统计查询结果导出统计信息到文件.xl2.2数据字典2.2.1数据构造管理员用户=管理员+管理员密码订户=订户编号+订户名+联系+ 目录=目录编号+目录名+单价+批注信息订单=订单号+订户编号+下订日期订单细节=订单号+目录编号+订阅数量+订阅期数+单价+总价注:为保证订单确定后价格不随目录单价变动,订单细节中应该有独立的单价来记录下订时目录的单价2.2.2数据项表2.1 数据项表编号标识符类型长度所属表名同义名1UNameVarchar20Login管理员2UPasswordVarchar20Login管理员密码3CidVarchar10Customer,Order订户编号4ameVarchar20Customer订户名5PhoneVarchar15Customer联系6AddressVarchar50Customer 7DidVarchar10Diretory,OrderDetail目录编号8DnameVarchar20Diretory目录名9UnitPriceFloat8DiretoryOrderDetail目录单价,下订时目录单价10IfoVarchar50Diretory批注信息11OnoVarchar10Order,OrderDetail订单编号12OdateDatetime8Order下订日期13Quantity, Int4OrderDetail订阅数量14QiShu,Int4OrderDetail订阅期数15TotalFloat8OrderDetail订单项总价2.2.3数据流表2.2 数据流表编号名称来源去向组成1身份信息系统管理员应用系统管理员+密码2授权信息应用系统系统管理员3错误身份信息应用系统系统管理员4查询请求系统管理员应用系统待查询对象识别符如Cid,Ono5查询结果应用系统系统管理员被查询对象具体信息6管理请求系统管理员应用系统识别符Cid,Ono等+管理类型7管理结果信息应用系统系统管理员被管理对象处理结果8非法请求应用系统系统管理员非法请求提示信息 2.3平安性要求访问数据库时需要输入登陆和密码。在数据库设有管理员表,登陆系统时会要求输入管理员和密码。登陆模块根据输入和密码查管理员表,查到匹配记录那么允许其登陆系统。管理员和密码可以在系统中添加和修改。2.4一致性要求在管理系统相关的表之间,有较强的关联性。为了实现一致性的需求,各个表之间均建立起了相应的一致性约束。2.5完整性要求根据报刊订阅管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障引起的数据不一致。3面向对象分析3.1 面向对象分析 设计报刊订阅系统,主要的目的是使得用户在订阅是能跟回家的方便快捷同时也使得报刊提供商能更加有效的管理企业的销售状况。同时面向对象分析使得人员关注理解系统需要建立的容,从而产生一个准确的完整的一致的和可验证的系统模型。l 管理员表Administrator:用于存放管理员的数据记录,包括数据项:管理员名、密码。l 部门表Department:用来存放部门的相关记录,包括数据项:部门号,部门名。l 用户表Consumer:用于存放注册用户的记录,包括数据项:用户账号、密码、真实、号、联系, ,部门号和部门表有关等。l 报刊信息表magazine:用于存放报刊记录,包括数据项:报刊代号、报刊名称、出版报社、出版周期、季度报价、容介绍、分类编号和报刊类别表有关等。订单表subscribe:用于存放用户下达的订阅报刊的根本信息,包括数据项:订单编号用户编号用户表的主码、报刊代号报刊信息表的主码、订阅份数、订阅月数等。用例图:由上面的分析需能够确定系统用例图:类图:在根据已定义的对象类及其联系,以及对象类的多重性、角色、导航等性质,可以画出对象类图 ,使用对象图的目的是分析系统的瞬间状态,以便进一步了解系统的构造和行为。分析对象模型:也同时可以确定所有实体之间的E-R图:图3.1 报刊订阅管理系统E-R图3.2系统构造图图4.1 系统构造图4.数据库实施4.1数据库创立4.1.1各数据表说明表4.1 数据表描述表编号数据表名称类型容01Login辅助表记录管理员,密码02Customer主表记录订户信息03Diretory主表记录目录信息04Order主表记录订单根本信息05OrderDetail主表记录详细订单项信息4.1.2数据库创立在Microsoft SQL Server 2000的企业管理器中完成数据库和数据表的创立CREATE TABLE dbo.Customer (Cid varchar (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,ame varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,Phone varchar (15) COLLATE Chinese_PRC_CI_AS NULL ,Address varchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARYGOCREATE TABLE dbo.Login (UName varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,UPassword varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARYGOCREATE TABLE dbo.Diretory (Did varchar (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,Dname varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,UnitPrice float NOT NULL ,Ifo varchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOCREATE TABLE dbo.Order (Ono varchar (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,Cid varchar (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,Odate datetime NULL ) ON PRIMARYGOCREATE TABLE dbo.OrderDetail (Ono varchar (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,Did varchar (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,Quantity int NOT NULL ,QiShu int NOT NULL ,UnitPrice float NOT NULL ,Total float NULL ) ON PRIMARYGO4.2数据库备份和恢复方案4.2.1应用辅助工具进展备份和恢复应用数据库辅助工具如sqlbackuptools进展备份,选择所需要备份的数据库和目标地址即可进展数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进展数据恢复。4.2.2别离数据库法在企业管理器中右击需要备份的数据库,选择“所有任务,“别离数据库,执行分析操作,拷贝数据库MDF文件和LDF文件。恢复方案:在企业管理器的控制台树中选择“数据库节点,右击,“所有任务,“附加数据库,找到待恢复数据库的MDF文件,确定。4.3用户界面设计和应用程序编码4.3.1用户界面设计本系统的用户界面用Java Swing编写,主要由1个主界面Newspaper.java和10个辅助对话框组成。主界面集合系统主要根本功能按键,辅助对话框负责采集用户输入信息和做根本的信息处理。 用户界面4.3.2类文件功能描述NO.类名类型功能01NewspaperFrame主窗口类,提供系统主要功能的调用接口02Utilities辅助类封装系统主要数据和方法,为其它类提供信息处理功能03AdminCreateDlgDialog管理员创立对话框,提供管理员创立功能04AdminModifyDlgDialog管理员信息修改对话框,修改管理员密码,删除管理员05UserCreateDlgDialog订户新建对话框,采集订户信息,创立新订户06UserModifyDlgDialog订户修改对话框,提供订户修改、删除操作07DirCreateDlgDialog目录新建对话框,采集目录信息,创立新目录08DirModifyDlgDialog目录修改对话框,提供目录修改、删除操作09BookingDlgDialog添加订单对话框,提供新订单添加功能10OrderSearchDlgDialog订单查找对话框,提供按Ono或Cid查找订单操作11OrderDetailDlgDialog订单细节对话框,显示订单细节,提供订单和订单项删除操作,并能通过调用DetailModifyDlg对话框完成订单项修改。12DetailModifyDialog订单项修改对话框,提供订单项修改操作13LoginDlgDialog管理员登陆对话框,提供登陆界面,检查登陆信息表4 类文件描述表4.3.3主要代码分析/-/所属类:Utilities/功能:取得应用程序与数据库系统的连接public static void getConnection() throws Exception Class.forName(".microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();/加载驱动程序String url = "jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=Newspaper"String user = "sa"String password = ""conn = DriverManager.getConnection(url, user, password);/取得连接stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);/创立语句conn2 = DriverManager.getConnection(url, user, password);stmt2 = conn2.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);/-/所属类:Utilities/功能:完成查询结果的表格显示public static void displayResultSet(JTable table, ResultSet rs)throws SQLException rs.beforeFirst();/ 指针移到结果集第一条记录前面boolean moreRecords = rs.next();if (!moreRecords) / 如果没有记录,那么提示一条消息JOptionPane.showMessageDialog(table, "无相关记录", "Check your input!",JOptionPane.ERROR_MESSAGE);return;Vector columnHeads = new Vector();/ 用于存储表格字段Vector rows = new Vector();/ 用于存储记录行try / 获取字段的名称ResultSetMetaData rsmd = rs.getMetaData();for (int i = 1; i <= rsmd.getColumnCount(); +i)columnHeads.addElement(rsmd.getColumnName(i);do / 获取记录集rows.addElement(getNextRow(rs, rsmd); while (rs.next();/ 建立相应的TableModel,并将TableModel应用到table中显示出来DefaultTableModel model = new DefaultTableModel(rows, columnHeads);table.setModel(model);return; catch (SQLException sqlex) sqlex.printStackTrace();/-/所属类:Utilities/功能:被displayResultSet(JTable table, ResultSet rs)调用, 返回一个记录行private static Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)throws SQLException Vector<String> currentRow = new Vector<String>();for (int i = 1; i <= rsmd.getColumnCount(); +i)currentRow.addElement(rs.getString(i);return currentRow; / 返回一条记录/-/所属类:Utilities/功能:创立空白EXCEL文件,并将统计查询结果导出到该EXCEL文件/说明:使用到org.apache的POI包,表示感public static boolean outPut(ResultSet rs, File file) if (rs = null)return false;try HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("first sheet");sheet.setDefaultColumnWidth(short) 20);ResultSetMetaData metadata = rs.getMetaData();int columnCount = metadata.getColumnCount();/ 获取属性列数HSSFRow row = sheet.createRow(short) 0);for (int i = 1; i <= columnCount; i+) / 填写表格列名row.createCell(short) (i - 1).setCellValue(metadata.getColumnName(i);/ 按行填写记录rs.beforeFirst();short counter = 1;while (rs.next() row = sheet.createRow(counter+);for (int i = 1; i <= columnCount; i+) row.createCell(short) (i - 1).setCellValue(String.valueOf(rs.getObject(i);FileOutputStream fileOut = new FileOutputStream(file);wb.write(fileOut);/ 结果输出到文件fileOut.close();/ 关闭输出流 catch (Exception exc) exc.printStackTrace();return true;/-/所属类:Newspaper/功能:统计查询final JMenuItem menuItem_9 = new JMenuItem();menuItem_9.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String sql = "SELECT Diretory.Did AS 刊物编号,Dname AS 刊物名称,"+ "SUM(Quantity*QiShu) AS 总订阅数,SUM(Total) AS 总金额"+ " FROM Diretory LEFT JOIN OrderDetail ON (OrderDetail.Did=Diretory.Did) "+ " GROUP BY Diretory.Did,Diretory.Dname "+ " ORDER BY SUM(Total) DESC"try Utilities.rs = Utilities.stmt.executeQuery(sql);/ 执行统计查询Utilities.displayResultSet(table, Utilities.rs);/显示查询结果 catch (SQLException exc) exc.printStackTrace(););/-/所属类:UserCreateDlg/功能:创立新用户final utton button = new utton();button.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (textField_1.getText().trim().length() != 0&& textField_2.getText().trim().length() != 0&& textField_3.getText().trim().length() != 0) String sql = "INSERT INTO Customer(Cid,ame,Phone,Address) "+ "VALUES('"+ textField.getText().trim()+ "','"+ textField_1.getText().trim()+ "','"+ textField_2.getText().trim()+ "','"+ textField_3.getText().trim() + "')"try Utilities.stmt.executeUpdate(sql);/ 执行数据行插入JOptionPane.showMessageDialog(dialog, "用户:"+ textField_1.getText() + "添加成功nID:"+ textField.getText(), "Success !",JOptionPane.INFORMATION_MESSAGE);dispose(); catch (SQLException exc) exc.printStackTrace(); else JOptionPane.showMessageDialog(dialog, "信息不全,无法添加","Check your input !", JOptionPane.ERROR_MESSAGE););/-/所属类:UserModifyDlg/功能:用户信息更新修改button_2 = new utton();button_2.setEnabled(false);button_2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (textField_1.getText().trim().length() != 0&& textField_2.getText().trim().length() != 0&& textField_3.getText().trim().length() != 0) try Utilities.rs.updateString("ame", textField_1.getText().trim();Utilities.rs.updateString("Phone", textField_2.getText().trim();Utilities.rs.updateString("Address", textField_3.getText().trim();Utilities.rs.updateRow();/ 更新数据行JOptionPane.showMessageDialog(dialog, "更新成功!","Success !", JOptionPane.INFORMATION_MESSAGE);dispose(); catch (SQLException exc) else JOptionPane.showMessageDialog(dialog, "信息不全,无法修改","Check your input !", JOptionPane.ERROR_MESSAGE););/-/所属类:BookingDlg/功能:读取订单数据,向系统添加订单button_1 = new utton();button_1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try String sql = "SELECT UnitPrice FROM Diretory WHERE Did='"+ boBox.getSelectedItem() + "'"Utilities.rs = Utilities.stmt.executeQuery(sql);/ 查询当前选择目录刊物的单价if (Utilities.rs.next() unitPrice = Utilities.rs.getFloat("UnitPrice");quantity = Integer.parseInt(textField_1.getText();qishu = Integer.parseInt(textField_2.getText();total = unitPrice * quantity * qishu;sum += total;sql = "INSERT INTO OrderDetail (ONo, Did, Quantity, QiShu, UnitPrice, total)"+ "VALUES('"+ label_2.getText()+ "','"+ boBox.getSelectedItem()+ "',"+ quantity+ ","+ qishu+ ","+ unitPrice+ ","+ total+ ")"sqls.add(sql);/ 存放订单细节插入语句boBox.removeItem(boBox.getSelectedItem();/ 将已选择目录从下拉选择框中移除(一个订单不能有两个目录一样的订单项) catch (SQLException exc) exc.printStackTrace(); catch (NumberFormatException exc) JOptionPane.showMessageDialog(dialog, "错误数字输入","Check again !", JOptionPane.ERROR_MESSAGE););button_1.setEnabled(false);button_1.setText("添加订单项");panel_1.add(button_1);button_2 = new utton();button_2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (sqls.size() > 1) / 容器第一个空间放插入Order的sql语句,其它空间放插入OrderDetail的sql语句 / sqls.size()=1表示只有一空订单,不予插入int ans = JOptionPane.showConfirmDialog(dialog, "一共需要支付订金:"+ sum + "元nContinue?", "We need your money",JOptionPane.YES_NO_CANCEL_OPTION);if (ans = JOptionPane.YES_OPTION) try for (int i = 0; i < sqls.size(); i+) / 顺序取出sql语句,完成订单添加插入Utilities.stmt.executeUpdate(sqls.get(i);/ 执行插入更新语句dispose();JOptionPane.showMessageDialog(dialog, "订单添加成功!","Success!",JOptionPane.INFORMATION_MESSAGE); catch (SQLException exc) exc.printStackTrace(); else if (ans = JOptionPane.NO_OPTION) dispose(); else JOptionPane.showMessageDialog(dialog,"订单为空,不能提交,请选择需要订阅的期刊", "Check again !",JOptionPane.ERROR_MESSAGE););button_2.setEnabled(false);button_2.setText("提交订单");panel_1.add(button_2);5.系统测试方案和测试报告5.1测试方案由于系统规模较小,所以没有安排单独的白盒测试,而是相应地将这局部测试归并到系统编码过程中。整个测试过程基于自顶向下测试的组装模块的方法,先对主模块进展根本测试,然后在按深度优先策略逐一将子模块组装到主模块上进展测试,最后再对系统进展全面的整体测试。5.2测试过程白盒测试过程略参考代码,以下是系统黑盒测试过程:5.2.1登陆测试双击可执行文件Newspaper.jar翻开应用系统,可见登陆界面: 系统界面输入错误用户名和密码,用户无法登陆: 登陆错误提示信息输入正确用户名和密码,用户正常登陆。系统自带用户名和密码有admin,admin,(santino,santino),(ddt,ddt)5.2.2目录管理功能测试添加目录:选择“添加目录,填写目录信息,“确定 添加目录 结果修改目录:“目录管理,“修改目录,输入待修改目录ID,锁定目录,修改目录,“更新。 修改目录 结果删除目录:“目录管理,“修改目录,输入待修改目录ID,锁定目录,“删除 删除目录 结果5.2.3订户管理功能测试添加订户 添加订户 结果修改订户:删除订户:参考“目录管理,操作根本类似,略5.2.4订单管理功能测试添加订单:点击“添加订单按钮,填入有效用户ID,检测用户,输入目录ID和订阅数量、期数,点击“添加订单项为订单添加订单项,点击“提交订单可以向系统提交订单。 添加订单订单管理:“订单管理,“订单查询,输入用户ID查询订单 查询结果选中订单项,“订单管理,“翻开订单 订单详细容选择具体订单项可进展相应修改操作: 订单项修改5.2.5统计查询测试统计查询:“数据统计 统计查询导出查询数据选择“数据统计à“结果导出à选择路径à“保存图26 结果导出 结果演示6.完成情况和总结6.1完成情况本系统完成了任务书中要求的所有容,包括:a订户管理:订户添加、修改、删除;b 目录管理:目录添加、修改、删除;c订单管理:完成订户订阅数据的管理包括添加、修改、删除;d 订单查询:按订户或者订单号查询订单详细情况;e统计查询:按报刊目录统计各类报刊的订阅数量及金额;另外,系统还具有表单生成功能,能将统计查询结果导出到Excel文件中实现持久保存。6.2总结通过完本钱次课程设计,我对数据库这门课程有了更加深刻的理解。在对系统数据库的分析、设计中,碰到很多概念上很模糊的问题,通过查阅相关资料,问题得到了解决,设计工作也顺利进展。另外,通过运用JDBC数据库连接技术,我对java数据库编程技术也有了一定的了解和认识,希望通过以后的学习继续加深这方面知识的掌握。同时对根本的软件设计流程有了一定的了解。 7.参考文献1 马皓.JAVA语言程序设计.:清华大学,2006 2 家广.软件工程:高等教育,2005 3 王国辉.JAVA 全能速查宝典:人民邮电,2009 4 萨师煊等编.数据库系统概论:高等教育,200624 / 24

注意事项

本文(课程设计汇本报刊订阅管理系统)为本站会员(无***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!