客户订购登记系统软件设计.doc_第1页
客户订购登记系统软件设计.doc_第2页
客户订购登记系统软件设计.doc_第3页
客户订购登记系统软件设计.doc_第4页
客户订购登记系统软件设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学软件综合设计课程设计学 号: 0120510340525实验报告题 目客户订购登记系统软件设计学 院专 业班 级姓 名xxx指导教师xxx2009年1月15日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 计算机学院 题目:客户订购登记系统软件设计初始条件:一个公司希望为其客户订购行为建立一个数据库。一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。每个订单有一张发票,可以通过多种方式来支付,例如支票、信用卡或现金。预备内容:数据结构,软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程要求完成的主要任务:1. 根据上述的初始条件,进行调查分析并设计适当的属性。设计一个客户订购登记数据库,实现客户、订单等相关信息的管理,DBMS可选Ms SQL Server 2005、Access、MYSQL等。2. 基于该数据库,实现应用程序,程序设计语言(工具)可以任选,建议使用VS.NET 2005/2008/Eclipse/Jbuilder/Delphi/VC+。3. 完成课程设计说明书,其格式遵守学校今年的新规定。主要内容包括:应用软件系统分析,设计,实现,评估等。时间安排:本学期第1920周:1. 查阅、分析资料 1天2. 应用软件系统分析 2天3. 应用软件系统设计 2天4. 应用软件系统的开发与实现4天5. 撰写文档,其它 1天指导教师签名:2009年1月3日系主任(或责任教师)签名:2009年1月4日客户订购登记系统软件设计一、 应用软件系统分析:1. 设计目的:1.1 设计初始条件:一个公司希望为其客户订购行为建立一个数据库。一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。每个订单有一张发票,可以通过多种方式来支付,例如支票、信用卡或现金。1.2 软件设计目标:选择一种程序设计语言和一种DBMS完成客户订购登记系统软件的设计,软件应实现初始条件中所给定的各个功能,例如对客户的查询,对订单的查询等,软件操作过程应当人性化。2. 需求分析:2.1.通过对设计目的的分析,可以确定该系统需要完成几个基本功能的实现:客户信息的查询:通过输入客户号对客户的基本信息进行查询,客户的基本信息包括姓名,电话,地址,公司,所拥有的订单;订单的查询:通过输入订单号对订单的基本信息进行查询,订单的基本信息包括持有该订单的客户,该订单对应的发票号,该订单的支付方式以及该订单中所包含的商品号及其数量;发票的查询:通过输入发票号对发票的基本信息进行查询,发票的基本信息包括该发票对应的客户号,订单号,该发票上的总额以及支付方式;客户的新建:能够对数据库中所没有的新客户进行创建并将新客户的信息保存到数据库中;订单的新建(发票的新建):能够建立新的订单,同时建立与订单对应的发票,并将新建订单保存到数据库中;商品的查看:通过输入商品号对商品进行查看,能查询到商品的名字,单价及其库存数量;登录要求:需要通过账户及其密码才能进入主界面对数据进行操作,并能实现新建账户,删除账户及修改密码等功能;系统退出:在完成对软件的使用后提供退出程序及返回登录界面的方法。2.2依照需要实现的功能,可以确定所需要的数据,由此决定了在数据库中应当建立的表:Customer表(保存客户相关信息数据)、List表(保存订单的相关信息数据)、goods表(保存商品的相关信息数据)、fapiao表(保存发票的相关信息数据)、login表(保存账户及密码的相关数据)。二、系统设计:1. 模块设计:根据系统需要实现的功能,可以确定客户模块、订单模块、发票模块和商品模块,另外为了软件的使用和管理方便,设计了管理模块和退出模块,各模块下面建立各自的窗口系统,模块图如下:客户订购登记系统登录界面主界面退出模块管理模块商品模块发票模块订单模块客户模块客户查询新建客户订单查询新建订单发票查询商品查询修改密码新建账户删除账户退出返回登录数据库模块 图1:系统功能模块图2. 数据库设计:2.1通过对设计目的的分析,可以确定用户的数据要求从而建立起各个数据模型的E-R图。订单姓名客户公司电话 图2 客户实体及属性商品及数量客户订单支付方式发票 图3:订单实体及属性支付方式发票发票总额客户 图4:发票实体及属性商品库存名称单价 图5:商品实体及属性账户密码 图6:账户及其密码客户订单发票商品属于属于属于 n 1 1关联 1 n 1 1 n 图7:实体及其联系图2.2 表的创建与设置:根据上面的分析,数据库需要5个表:Customer表:cnum主键字段名称数据类型cnum(客户号)自动编号name(姓名)文本tel(电话)文本addr(地址)文本com(公司)文本list1(订单1)IntList表:listnum主键字段名称数据类型Listnum(订单号)自动编号Cnum(客户号)Intfapiao(发票号)IntMethod支付方式)文本good1(商品号1)文本num1(商品1数量)文本good2(商品号2)文本 fapiao表:fapiao主键字段名称数据类型fapiao(发票号)自动编号listnum(订单号)IntCnum(客户号)IntPay(支付金额)文本method(支付方式)文本goods表:goodnum主键字段名称数据类型goodnum文本goodsname文本price文本store文本login表:字段名称数据类型admin文本password文本3.界面设计登录界面:提示输入账户和密码,并有登录密码;主界面:以菜单条的形式讲各模块集成在菜单条中,在菜单条下的各个菜单项对应各个功能;分窗口:在点击菜单项后,进入实现各功能模块的窗口界面,通过相应操作可以实现各种功能;退出:设置有“退出”和“返回登录”选项的菜单项,若点击“退出”则退出程序,若点击“返回登录”则返回到登录界面,需重新输入账户和密码进行登录。三、软件实现:本设计中使用access2007数据库和java编程语言1. 数据库实现:在使用access创建好数据库后,对数据库进行连接,在设置好数据源与建立好JDBC-ODBC桥接器后,就能使用数据库了。在此程序中,数据源设置为star。JDBC-ODBC桥接器的建立:tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e)try con = DriverManager.getConnection(jdbc:odbc:star, , ); sql = con.createStatement();catch(SQLException e)2. 本编程方面,主要是对窗体的布局设计,对各组件的布局设计与监听,因此,此设计中监视器的作用十分明显。下面一段程序代码是对主界面的设计:class Window1 extends Frame implements ActionListener/菜单条的建立w windo;MenuBar menuBar;Menu menu1,menu2,menu3,menu4,menu5,menu6;MenuItem info,relogin,list,goods,repass,newlogin,delet,newcustomer,fapiao,fapiao1,exi,newlist;Window1(String s)super(s);windo=new w(this);addWindowListener(windo);setBounds(200,100,500,300);setLayout(new GridLayout(1,1);setBackground(Color.blue);setVisible(true);menuBar=new MenuBar(); menu1=new Menu(客户);menu2=new Menu(订单);menu3=new Menu(发票);menu4=new Menu(退出);menu5=new Menu(商品);menu6=new Menu(账户管理);info=new MenuItem(客户查询);list=new MenuItem(订单查询);newlist=new MenuItem(新建订单);goods=new MenuItem(商品查看);repass=new MenuItem(修改密码);newlogin=new MenuItem(创建新账户);delet=new MenuItem(删除账户);fapiao=new MenuItem(打印发票);fapiao1=new MenuItem(发票查询);relogin=new MenuItem(重新登录);newcustomer=new MenuItem(注册新客户);exi=new MenuItem(退出);menu1.add(info);menu1.add(newcustomer);menu2.add(list);menu2.add(newlist);menu3.add(fapiao1);menu3.add(fapiao);menu5.add(goods);menu6.add(repass);menu6.add(newlogin);menu6.add(delet);menu4.add(exi);menu4.add(relogin);menuBar.add(menu1);menuBar.add(menu2);menuBar.add(menu3);menuBar.add(menu5);menuBar.add(menu6);menuBar.add(menu4);setMenuBar(menuBar); exi.addActionListener(this);info.addActionListener(this);list.addActionListener(this);goods.addActionListener(this);repass.addActionListener(this);newlogin.addActionListener(this);newcustomer.addActionListener(this);delet.addActionListener(this);newlist.addActionListener(this);relogin.addActionListener(this);fapiao1.addActionListener(this);/pack();在这个窗口中,设计有6个菜单,每个菜单中有若干菜单项,每个菜单中的每个菜单项项对应着模块设计中的每个功能,每个菜单项都设置监视器,使其在触发时引起相应方法的调用。除了对菜单项的监听外,对窗口的监听也很重要,若不设置,窗口则不能触发正确的事件,以下代码是一个窗口监视器类:/窗口监视器:class w extends WindowAdapterWindow wind;public w(Window wind)this.wind=wind;public void windowClosing(WindowEvent e)System.exit(0); 下面以商品查询为例,说明一些窗口的设计与对数据库的操作:查询窗口的设计:class window5 extends Frame implements ActionListenerw windo;Connection con;Statement sql;ResultSet rs;String goodsname,price,store;Label label1,label2,label3,label4;TextField text1,text2,text3,text4;Button b1,b2;window5()super(商品查询);setLayout(new GridLayout(5,2);label1=new Label(请输入商品号);label2=new Label(商品名);label3=new Label(单价);label4=new Label(库存);label3.setBackground(Color.orange);label3.setForeground(Color.blue);label1.setBackground(Color.orange);label1.setForeground(Color.blue);text1=new TextField();text2=new TextField();text3=new TextField();text4=new TextField();text2.setEditable(false);text3.setEditable(false);text4.setEditable(false);b1=new Button(退出);b2=new Button(查询);add(label1);add(b1);add(text1);add(b2);add(label2);add(text2);add(label3);add(text3);add(label4);add(text4);setBounds(250,250,300,350);setBackground(Color.magenta);windo=new w(this);addWindowListener(windo);setVisible(true);setResizable(true); b1.setLocation(180, 35);b1.setSize(80, 40);b2.setLocation(180, 95);b2.setSize(80, 40);text2.setLocation(160, 165); text2.setSize(110, 40); text3.setLocation(160, 230); text3.setSize(110, 40); text4.setLocation(160, 295); text4.setSize(110, 40);b1.addActionListener(this);b2.addActionListener(this);/数据库操作:public void actionPerformed(ActionEvent e)if(e.getSource()=b1)setVisible(false);else if(e.getSource()=b2)String s1=text1.getText();String r1=+s1+;tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e1)System.out.print(3222);try con = DriverManager.getConnection(jdbc:odbc:star, , );sql = con.createStatement();rs=sql.executeQuery(SELECT * FROM goods where goodnum=+r1);while (rs.next() goodsname=rs.getString(2); price=rs.getString(3); store=rs.getString(4); catch(SQLException e2)/查询结果text2.setText(goodsname);text3.setText(price);text4.setText(store);在次类中,创建了2个按钮和若干文本框、标签,文本框、标签、按钮按需要安排窗口中,若有需要,也可以建立面板,将这些组件先添加到面板中再设计到窗口中去(如客户查询类的设计)。将组件添加到窗口中后,可以使用Component类中的方法对各组件进行进一步的调整。程序运行后,可以看到效果如图:其他窗口的建立与之相类似,就不再一一讲述。在数据库方面,运用以下语句对其进行操作:/数据库操作:public void actionPerformed(ActionEvent e)if(e.getSource()=b1)setVisible(false);else if(e.getSource()=b2)String s1=text1.getText();String r1=+s1+;tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e1)System.out.print(3222);try con = DriverManager.getConnection(jdbc:odbc:star, , );sql = con.createStatement();rs=sql.executeQuery(SELECT * FROM goods where goodnum=+r1);while (rs.next() goodsname=rs.getString(2); price=rs.getString(3); store=rs.getString(4); catch(SQLException e2)/查询结果text2.setText(goodsname);text3.setText(price);text4.setText(store);在获取监视器的值后,若为退出,则系统将退出程序,若为“b2”(即查询),那么接下来就对数据库进行操作。在用数据库语句查询出需要的结果后,利用ResultSet 中的方法将其中的值取出,然后输出到制定的组件中。同样,若需要对数据库进行插入、修改、删除的操作,先从组件中获取需要插入、修改、删除的信息,然后使用数据库语句将其插入到数据库中或者对数据库中的数据进行修改、删除。本设计中,删除数据的地方很少,只有在账户的删除中涉及到了,这是因为其余的数据都不必删除,或者是依据任务要求,不能进行删除。在登录界面的设计中,用到了如下类:class MyPanel extends JPanel private ImageIcon image;protected void paintComponent(Graphics g) super.paintComponent(g);image = new ImageIcon(D:/4.jpg);g.drawImage(image.getImage(), 0, 0, null);此类能在登录界面中添加图片。另外,还设计了两个信息提示窗口,对用户的操作进行提示:/新用户或者订单创建成功提示窗口类:class success extends Frame implements ActionListener/操作失败提示窗口类:class fail extends Frame implements ActionListener其余地方,如数据库操作失败的话,则使用了如下语句进行错误提示:if()JOptionPane.showMessageDialog(null,提示内容 );此程序中主要使用到的是组件,监视器的使用及数据库操作,其他方面涉及不多。在编写过程中,对需要实现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论