客户订购登记系统软件设计.doc

上传人:精*** 文档编号:834677 上传时间:2023-09-07 格式:DOC 页数:15 大小:673.05KB
下载 相关 举报
客户订购登记系统软件设计.doc_第1页
第1页 / 共15页
客户订购登记系统软件设计.doc_第2页
第2页 / 共15页
客户订购登记系统软件设计.doc_第3页
第3页 / 共15页
客户订购登记系统软件设计.doc_第4页
第4页 / 共15页
客户订购登记系统软件设计.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、武汉理工大学软件综合设计课程设计题目:客户订购登记系统软件设计初始条件:一个公司希望为其客户订购行为建立一个数据库。一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。每个订单有一张发票,可以通过多种方式来支付,例如支票、信用卡或现金。预备内容:数据结构,软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程要求完成的主要任务:1. 根据上述的初始条件,进行调查分析并设计适当的属性。设计一个客户订购登记数据库,实现客户、订单等相关信息的管理,DBMS可选Ms SQL Server 2005、Access、MYSQL等。2. 基于该数据库,实现应用程序,程序设计语言(工具)可以任

2、选,建议使用VS.NET 2005/2008/Eclipse/Jbuilder/Delphi/VC+。3. 完成课程设计说明书,其格式遵守学校今年的新规定。主要内容包括:应用软件系统分析,设计,实现,评估等。时间安排:本学期第1920周:1. 查阅、分析资料 1天2. 应用软件系统分析 2天3. 应用软件系统设计 2天4. 应用软件系统的开发与实现4天5. 撰写文档,其它 1天目录题目:客户订购登记系统软件设计1客户订购登记系统软件设计2一、 应用软件系统分析:2二、系统设计:3三、软件实现:6四、运行13五、评估:15六、心得体会:15客户订购登记系统软件设计一、 应用软件系统分析:1. 设

3、计目的:1.1 设计初始条件:一个公司希望为其客户订购行为建立一个数据库。一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。每个订单有一张发票,可以通过多种方式来支付,例如支票、信用卡或现金。1.2 软件设计目标:选择一种程序设计语言和一种DBMS完成客户订购登记系统软件的设计,软件应实现初始条件中所给定的各个功能,例如对客户的查询,对订单的查询等,软件操作过程应当人性化。2. 需求分析:2.1.通过对设计目的的分析,可以确定该系统需要完成几个基本功能的实现:客户信息的查询:通过输入客户号对客户的基本信息进行查询,客户的基本信息包括姓名,电话,地址,公司,所拥有的订单;订单的查询:

4、通过输入订单号对订单的基本信息进行查询,订单的基本信息包括持有该订单的客户,该订单对应的发票号,该订单的支付方式以及该订单中所包含的商品号及其数量;发票的查询:通过输入发票号对发票的基本信息进行查询,发票的基本信息包括该发票对应的客户号,订单号,该发票上的总额以及支付方式;客户的新建:能够对数据库中所没有的新客户进行创建并将新客户的信息保存到数据库中;订单的新建(发票的新建):能够建立新的订单,同时建立与订单对应的发票,并将新建订单保存到数据库中;商品的查看:通过输入商品号对商品进行查看,能查询到商品的名字,单价及其库存数量;登录要求:需要通过账户及其密码才能进入主界面对数据进行操作,并能实现

5、新建账户,删除账户及修改密码等功能;系统退出:在完成对软件的使用后提供退出程序及返回登录界面的方法。2.2依照需要实现的功能,可以确定所需要的数据,由此决定了在数据库中应当建立的表:Customer表(保存客户相关信息数据)、List表(保存订单的相关信息数据)、goods表(保存商品的相关信息数据)、fapiao表(保存发票的相关信息数据)、login表(保存账户及密码的相关数据)。二、系统设计:1. 模块设计:根据系统需要实现的功能,可以确定客户模块、订单模块、发票模块和商品模块,另外为了软件的使用和管理方便,设计了管理模块和退出模块,各模块下面建立各自的窗口系统,模块图如下:客户订购登记

6、系统登录界面主界面退出模块管理模块商品模块发票模块订单模块客户模块客户查询新建客户订单查询新建订单发票查询商品查询修改密码新建账户删除账户退出返回登录数据库模块 图1:系统功能模块图2. 数据库设计:2.1通过对设计目的的分析,可以确定用户的数据要求从而建立起各个数据模型的E-R图。订单姓名客户公司电话 图2 客户实体及属性商品及数量客户订单支付方式发票 图3:订单实体及属性支付方式发票发票总额客户 图4:发票实体及属性商品库存名称单价 图5:商品实体及属性账户密码 图6:账户及其密码客户订单发票商品属于属于属于 n 1 1关联 1 n 1 1 n 图7:实体及其联系图2.2 表的创建与设置:

7、根据上面的分析,数据库需要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(支付金额)文本

8、method(支付方式)文本goods表:goodnum主键字段名称数据类型goodnum文本goodsname文本price文本store文本login表:字段名称数据类型admin文本password文本3.界面设计登录界面:提示输入账户和密码,并有登录密码;主界面:以菜单条的形式讲各模块集成在菜单条中,在菜单条下的各个菜单项对应各个功能;分窗口:在点击菜单项后,进入实现各功能模块的窗口界面,通过相应操作可以实现各种功能;退出:设置有“退出”和“返回登录”选项的菜单项,若点击“退出”则退出程序,若点击“返回登录”则返回到登录界面,需重新输入账户和密码进行登录。三、软件实现:本设计中使用ac

9、cess2007数据库和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(SQLExce

10、ption 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;Wind

11、ow1(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(账户

12、管理);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=

13、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.a

14、dd(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.addAction

15、Listener(this);newlist.addActionListener(this);relogin.addActionListener(this);fapiao1.addActionListener(this);/pack();在这个窗口中,设计有6个菜单,每个菜单中有若干菜单项,每个菜单中的每个菜单项项对应着模块设计中的每个功能,每个菜单项都设置监视器,使其在触发时引起相应方法的调用。除了对菜单项的监听外,对窗口的监听也很重要,若不设置,窗口则不能触发正确的事件,以下代码是一个窗口监视器类:/窗口监视器:class w extends WindowAdapterWindow win

16、d;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;Text

17、Field 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.setFore

18、ground(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(text

19、3);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);

20、 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();St

21、ring 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(

22、2); price=rs.getString(3); store=rs.getString(4); catch(SQLException e2)/查询结果text2.setText(goodsname);text3.setText(price);text4.setText(store);其他窗口的建立与之相类似,就不再一一讲述。在数据库方面,运用以下语句对其进行操作:/数据库操作:public void actionPerformed(ActionEvent e)if(e.getSource()=b1)setVisible(false);else if(e.getSource()=b2)Str

23、ing 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(

24、) 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 中的方法将其中的值取出,然后输出到制定的组件中。同样,若需要对数据库进行插入、修改、删除的操作,先从组

25、件中获取需要插入、修改、删除的信息,然后使用数据库语句将其插入到数据库中或者对数据库中的数据进行修改、删除。本设计中,删除数据的地方很少,只有在账户的删除中涉及到了,这是因为其余的数据都不必删除,或者是依据任务要求,不能进行删除。在登录界面的设计中,用到了如下类:class MyPanel extends JPanel private ImageIcon image;protected void paintComponent(Graphics g) super.paintComponent(g);image = new ImageIcon(D:/4.jpg);g.drawImage(image

26、.getImage(), 0, 0, null);此类能在登录界面中添加图片。另外,还设计了两个信息提示窗口,对用户的操作进行提示:/新用户或者订单创建成功提示窗口类:class success extends Frame implements ActionListener/操作失败提示窗口类:class fail extends Frame implements ActionListener其余地方,如数据库操作失败的话,则使用了如下语句进行错误提示:if()JOptionPane.showMessageDialog(null,提示内容 );此程序中主要使用到的是组件,监视器的使用及数据库操

27、作,其他方面涉及不多。在编写过程中,对需要实现的每个功能逐个编写程序,因此条理比较清晰,主要是对数据库的操作的地方花了较多时间,在后续的调试中,对软件进行了进一步的改进,完成了数据库的完善和代码的优化。其上对数据库创建和程序代码的编写做了简略的介绍,程序代码及所使用的数据库文件附加在同一文件夹下。四、运行订单查询界面:客户信息数据库:商品信息数据:订单信息数据:五、评估: 此次设计的软件完成了本次课程设计的任务要求,实现了客户、订单等相关信息的管理,并实现了各种信息的查询,能够正确的提示各类错误,例如修改密码时两次密码输入不正确,创建新客户时没有输入姓名等。登录界面的设置为数据的安全提供了一定

28、的保障。软件的使用比较简单,各种按钮与菜单一一对应功能,能使使用者方便的使用。软件的不足之处也很多,例如数据操作还不是很完善,窗口界面太过单调,组件位置不够美观等等。六、心得体会: 本次软件设计使用的是java编程语言,这是我第一次使用java编写程序,所以此次设计的主要问题就是对语言的不熟悉。在程序的编写过程中,通过以前学过的知识以及同学的帮助,对java的编程环境有了初步的熟悉。在编写并成功运行第一个模块后,发现要实现整个课程设计的任务要求并不难,在逐步的完成各模块的功能后,对其中的不足之处进行了修改,虽然能完成设计的要求,但仍有很多疏漏。由于对java的很多方法都不了解,导致很多能使程序更完善的方法都没有用到,有些后来想到的方法想使用,却因为小动作将要引起大范围的变动而不得不放弃。通过本次的课程设计,将java语言运用在了实际编程中,对监视器有了一定的了解,并对软件设计的过程有了深入的认识,在其中用到了数据结构,软件工程,面向对象程序设计,数据库技术,编译原理,可视化编程等一些学过的知识,使我认识到要设计好一个软件,全方位的知识掌握是坚实的基础。在此次软件设计中我获得的收获是丰富的,是一次宝贵的经验,相信此次软件设计对以后的工作和学习会有很大帮助。本文是通过网络收集的资料,如有侵权请告知,我会第一时间处理。15

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922