1、沈 阳 工 程 学 院课 程 设 计设计题目: 面向对象程序设计课程设计 小超市管理系统 课程设计任务书课程设计题目: 面向对象程序设计课程设计 小超市管理系统 目 录摘 要I第1章 绪 论1第2章 系统功效介绍22.1系统功效总框图22.2 本系统模块功效介绍22.2.1 登录功效介绍22.2.2 商品销售功效介绍32.2.3 权限管理功效介绍32.2.4 销售管理功效介绍42.2.5 商品管理功效介绍42.3 组内任务分工5第3章 数据库设计63.1 数据库需求分析63.2 数据库概念结构设计63.3 数据库表设计7第4章 系统功效实现84.1 登录功效实现84.2 销售界面功效介绍114
2、.2.1 搜索商品信息114.2.2 购置商品114.2.3 模块关键代码124.3 权限管理功效介绍184.3.1 添加用户功效介绍184.3.2 修改用户功效介绍194.3.3 删除用户功效介绍194.3.4 显示用户信息和刷新按钮介绍204.3.5 用户管理实现代码.204.4销售管理功效介绍274.4.1 编号查询功效274.4.2 账单查询功效274.4.3 销售管理模块关键代码284.4商品管理功效介绍314.4.1 查询信息314.4.2 添加信息及提交添加324.4.3 删除信息及提交删除324.4.4 修改信息及提交修改334.4.5 相关334.4.6 模块关键代码.34总
3、 结39致 谢40参考文件41 第1章 绪 论伴随大家生活水平不停提升,购物已成为一个时尚。天天全部有大量消费者在各大商场中留下消费信息,所以作为商场管理人员就需要有一个自动化、智能化管理系统来完成这些信息处理。由此我们设计开发小超市管理系统。现在市场上超市管理系统,大部分为基于分布式数据库网络管理系统,对于规模较小超市没有必需花巨款来购置这么功效全方面管理系统,另外,对于那样功效齐全管理系统也需要花大精力来维护。基于这种情况,我们用所学java知识,能够开发一个既能节省资金,又能完成小超市日常管理任务。本系统所包含功效关键有:限于不一样身份人登录登录界面;权限管理功效;商品销售功效;商品管理
4、功效;销售管理功效。在系统设计中,用户管理功效能够管理登录本系统人员,如:管理员、用户和超级用户等。在最初系统使用中只有技术管理员一个身份。商品销售功效;能够完成商品信息查询。如:输入一个商品编号在商品信息栏就显示该商品全部信息,名称、价格、生产日期、生产地。然后选择购置功效,就能够将商品添加到购物信息栏,最终选择提交,所购置商品信息同时也添加到数据库中。在商品管理功效中,能够把一个新引进商品信息添加到小超市管理系统中。在销售管理功效中,能够查看超市销售情况,全部商品购置信息全部存放在数据库中。在系统安全性方面,我们要求了不一样权限登录用户,管理员(关键负责用户管理)能够登录到任何一个管理模块
5、,和后台数据库,能够改变任一个登录者用户名和密码。用户只能进入到销售界面。老板超级关键查看商品销售情况和商品管理,她能够进入到商品销售管理查看商品销售情况。经过这么权限限制就能够方便控制系统安全性。 总而言之,小超市管理系统是一个经济、实惠应用软件,适合小规模商店和超市。操作难度小,易学易用。 第2章 系统功效介绍2.1系统功效总框图 小超市管理系统是一个专门针对小型商店和超市智能化、自动化管理系统。其功效总框图图2-1所表示。图2-1 系统功效总框图2.2 本系统模块功效介绍2.2.1 登录功效介绍登录功效是进入系统必需经过验证过程,其关键功效是验证使用者身份,确定使用者权限,从而在使用软件
6、过程中能安全地控制系统数据,即不一样工作人员有不一样权限,每个使用人员不得跨越其权限操作软件,能够避免无须要数据丢失事件发生。登录界面图2-2所表示: 图2-2登录界面2.2.2 商品销售功效介绍销售界面是本系统直接供销售店员应用专管销售功效界面,首先要查询欲购置商品,在左侧查询框内输入商品代号,然后点击搜索按钮,对应商品信息将显示在“商品信息”一栏中,确定是此商品后点击购置,购置商品将出现在下面购物信息一栏中,当全部欲购置商品全部已输入好,点击提交,购置商品信息将统计到数据库中。若输入有误,点击清除按钮,刚输入信息将被清除,可重新输入。界面右下方右商品总价标签,能够时时地显示已购置商品总价,
7、以供参考。商品销售功效主界面图2-3所表示:图2-3销售窗口主界面2.2.3 用户管理功效介绍用户管理功效是管理人员使用界面。管理人员能够使用此功效管理全部登录用户信息。能够修改全部用户帐号和密码,设置用户权限,删除用户帐号;对于已存在用户技术管理员能够查询她们信息,在下面显示用户信息处显示。添加、修改、删除等操作后,单击“刷新”后,新更改信息才能够在下面用户信息显示处显示。用户管理主界面图2-4所表示:图2-4 用户管理主界面2.2.4 销售管理功效介绍销售管理功效关键是老板查看超市商品销售情况。老板能够依据已售出商品号查询该商品信息,如能够查询该商品已售出总数量。还能够依据销售账单号查询,
8、就是在消费者每一次购置商品时,就分配一个账单号,如出现消费者退货情况时,老板能够查询账单号处理。“按编号查询”输入商品编号,在下面商品信息处显示该商品信息;“按账单号查询”输入商品账单号,在下面商品信息处显示该商品信息。销售管理功效主界面图2-5所表示:图2-5商品管理功效主界面2.2.5 商品管理功效介绍商品管理功效是店员在进货、商品信息维护时所需要界面,此界面功效是管理全部商品信息,在这里能够添加、修改、删除任意商品信息,做到对商品信息立即维护。应用时,对应按钮功效,进行应用,维护方便。 商品管理功效主界面图2-6所表示:图2-6商品管理系统主界面2.3 组内任务分工组内人员分工如表2-1
9、所表示:表2-1 组内分工组内分工姓名关键任务成绩组长王浩数据库设计、商品管理和用户管理等功效组员魏兴龙销售管理界面及功效组员王潇伯商品销售界面及功效组员夏恩亮权限销售界面及功效第3章 数据库设计在每个管理系统中全部一定有储存机制,若单单以文件形式储存,查找和存放时速度比较缓慢,会降低系统整体运行速度,一定要利用数据库进行信息管理,所以我们“小超市管理系统”利用了Microsoft Access数据库,存放其后台数据。下面将介绍本系统数据库设计。3.1 数据库需求分析此系统需要有两个实体,账户和商品。数据项如表3-1和3-2所表示。表3-1用户信息数据项数据项名数据项含义说明别名数据类型长度I
10、D用户登录帐号Id字符型50PASSWORD用户登录帐号对应密码Psw字符型50PERSONTY登录用户权限Pst字符型50表3-2商品信息数据项数据项名数据项含义说明别名数据类型长度NUM商品编号编号字符型50NAME商品名称名称字符型50TIME商品进货时间货时字符型50ADD商品生产地址产地字符型50PRICE商品单价价格整型50COUNT商品库存数量数量整型3.2 数据库概念结构设计依据需求分析设计出E-R图图3-1所表示: 图3-1 系统E-R图3.3 数据库表设计Password表,其中存放是用户帐号、密码及权限,用于登陆系统时确定身份。此表设计如3-3表所表示:表3-3 Pass
11、word信息表字段名称数据类型长 度备 注ID文 本50PASSWORD文 本50PERSONTY文 本50Goods表,其中存放是商品具体信息,作用是统计商品信息及在本超市中数量。此表设计如3-4标所表示。表3-4Goods信息表字段名称数据类型长 度备 注NUM文 本50NAME文 本50PRICE整 型TIME文 本50ADD文 本50COUNT文 本50Information表,其中存放是用户在超市中消费情况,其中有帐单号、商品代号、数量及总价,用来统计超市中销售情况,此表设计如3-5表所表示。表3-5 Information信息表字段名称数据类型长 度备 注编号长 整 型销售每件商品
12、有不一样编号LISTNUM文 本50每提交一次帐单帐单号增加1GOODSNUM文 本50ALLPRICE整 型每个帐单最终合出此帐单总价第4章 系统功效实现4.1 登录功效实现登录界面是使用者在使用此软件时需要输入自已账号和密码,从而使用自已权限来管理超市运行。小超市登录界面如4-1所表示。 图4-1 小超市管理系统登录界面模块关键代码:public class Login extends Frame implements ActionListener,WindowListener /登陆界面 public int screanWidth,screanHeight; String idin=n
13、ull; String keyin=null; String passwordD=null; public static String persontyD=null; MenuBar menubar; Menu menu; MenuItem quet,help; Label id,key; TextField idtf,keytf; Box boxV1,boxV2,boxV3,baseBox,boxx; Button enterB; Login() setTitle(超市管理系统登陆界面); Toolkit tool=getToolkit(); Dimension dim=tool.getSc
14、reenSize(); screanWidth=dim.width; screanHeight=dim.height; setBounds(dim.width/3,dim.height/3,320,215); menubar=new MenuBar(); menu=new Menu(功效); help=new MenuItem(帮助); quet=new MenuItem(退出); quet.setShortcut(new MenuShortcut(KeyEvent.VK_E); quet.addActionListener(new ActionListener() /匿名类实例控制publi
15、c void actionPerformed(ActionEvent p)System.exit(0); ); menu.add(help); menu.add(quet); menubar.add(menu); setMenuBar(menubar); id=new Label(请输入帐号:,Label.RIGHT); key=new Label(请输入密码:,Label.RIGHT); idtf=new TextField(10); keytf=new TextField(10); keytf.setEchoChar(*); enterB=new Button(登陆); boxV1=Box
16、.createVerticalBox(); boxV1.add(Box.createVerticalStrut(35); boxV1.add(id); boxV1.add(Box.createVerticalStrut(15); boxV1.add(key); boxV1.add(Box.createVerticalStrut(15); boxV2=Box.createVerticalBox(); boxV2.add(Box.createVerticalStrut(35); boxV2.add(idtf); boxV2.add(Box.createVerticalStrut(15); boxV
17、2.add(keytf); boxV2.add(Box.createVerticalStrut(15); baseBox=Box.createHorizontalBox(); baseBox.add(Box.createHorizontalStrut(25); baseBox.add(boxV1); baseBox.add(Box.createHorizontalStrut(5); baseBox.add(boxV2); baseBox.add(Box.createHorizontalStrut(70); boxV3=Box.createHorizontalBox(); boxV3.add(B
18、ox.createHorizontalStrut(125); boxV3.add(enterB); boxV3.add(Box.createHorizontalStrut(125); boxx=Box.createVerticalBox(); boxx.add(baseBox); boxx.add(Box.createVerticalStrut(15); boxx.add(boxV3); boxx.add(Box.createVerticalStrut(70); add(boxx); enterB.addActionListener(this); addWindowListener(this)
19、; setResizable(false); setVisible(true);public void actionPerformed(ActionEvent e)Connection con;Statement sql;ResultSet rs;if (e.getSource()=enterB)idin=idtf.getText();keyin=keytf.getText(); try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException f) System.out.println(+f); tr
20、ycon=DriverManager.getConnection(jdbc:odbc:q,);sql=con.createStatement();rs=sql.executeQuery(SELECT * FROM password where ID=+idin+);while(rs.next()passwordD=rs.getString(2);persontyD=rs.getString(3);con.close();catch (SQLException g)System.out.println(g); if (keyin.equals(passwordD) View2 frame=new
21、 View2(); this.setVisible(false); else JOptionPane.showMessageDialog(this, 帐户或密码错误n 请重新输入,提醒,JOptionPane.WARNING_MESSAGE); public void windowActivated(WindowEvent o)validate();public void windowDeactivated(WindowEvent o)setBounds(screanWidth/3,screanHeight/3,320,215);validate();public void windowClo
22、sing(WindowEvent o)dispose();public void windowClosed(WindowEvent o)System.exit(0);public void windowIconified(WindowEvent o)public void windowDeiconified(WindowEvent o)setBounds(screanWidth/3,screanHeight/3,320,215); validate();public void windowOpened(WindowEvent o)4.2 销售界面功效介绍该功效是此系统最关键模块,是消费者直接使
23、用功效。消费者能够依据已看到商,在搜索栏中打入商品编号,进行查询商品信息,然后能够依椐自已需要购置。最终单击提交,购置商品就统计到系统数据库中。销售主界面图4-2所表示:图 4-2 销售主界面4.2.1 搜索商品信息 消费者可依据自已所需要商品编号,在销售功效中搜索,查看商品信息无误后,确定是否购置。如搜索001号商品,查看它信息,图4-3所表示。图4-3 搜索001号商品信息4.2.2 购置商品在确定自已需要商品后,然后就是购置商品,消费者能够按“购置”键进行购置物品,购置一份就单击一次“购置”键,购置物品信息显示在购物信息框中,最终单击“提交”,消费者所购置物品就作为一个账单号存放在数据库
24、中。如购置004、005、006、008、010和011号商品时,购置信息图4-4下: 图4-4 购置信息当购置人不想购置这些商品时,能够点击窗口左下角清除按钮,来清除刚才购置商品,数据库中也不会有此统计。另外,本系统是每购置一件商品向数据库提交一次统计,当未点击提交按钮之前,若要结束此窗口进程,我们在代码中嵌入了一段删除目前帐单数据库统计代码,以达成没有误提交操作。4.2.3 模块关键代码 销售界面实现public class View2 extends JFrame implements ActionListener /销售界面String num=null,name=null,time=
25、null,add=null,t1=null,t2=null,t3=null;int price=0;int n1,n2,ap,n3; private JPanel sM=new JPanel(); /supermarket面板private JButton pS=new JButton(销售界面),new JButton(销售管理), new JButton(商品管理),new JButton(权限管理);/personty 按钮 private JTextArea goodsShow=new JTextArea(), searchShow=new JTextArea(); /文本区 priv
26、ate JScrollPane jsp=new JScrollPane(goodsShow); /滚动区域 设定内容为 商品显示文本区private JTextField numSearch=new JTextField(),showGoods=new JTextField(); /商品查询/显示商品 private JButton searchGoods=new JButton(搜索),buyGoods=new JButton(购置), clean=new JButton(清空), ok=new JButton(提交),print=new JButton(打印并提交); /查询按钮priva
27、te JLabel goodsInformation=new JLabel(商品编码,JLabel.CENTER),new JLabel(商品名称,JLabel.CENTER), new JLabel(商品价格,JLabel.CENTER),new JLabel(生产日期,JLabel.CENTER),new JLabel(生产地,JLabel.CENTER) ;private JLabel goodsI=new JLabel(商品编码,JLabel.CENTER),new JLabel(商品名称,JLabel.CENTER), new JLabel(商品价格,JLabel.CENTER),n
28、ew JLabel(生产日期,JLabel.CENTER),new JLabel(生产地,JLabel.CENTER) ; private JLabel allPrice=new JLabel(商品总价:n ,JLabel.LEFT),label1=new JLabel(商品信息 ,JLabel.RIGHT),label2=new JLabel(购物信息 ,JLabel.RIGHT); public View2()sM.setLayout(null);for(int i=0;i4;i+)pSi.setBounds(550+i*110,50,100,22);sM.add(pSi);pSi.add
29、ActionListener(this); jsp.setBounds(100,180,800,500); goodsShow.setLineWrap(true) numSearch.setBounds(100,50,150,22); searchGoods.setBounds(260,50,60,22); searchGoods.addActionListener(this); buyGoods.setBounds(330,50,60,22); buyGoods.addActionListener(this); showGoods.setBounds(100,120,800,22); for
30、 (int b=0;b5 ;b+ ) goodsInformationb.setBounds(100+160*b,87,160,30); sM.add(goodsInformationb); for (int b=0;b5 ;b+ ) goodsIb.setBounds(100+160*b,150,160,30); sM.add(goodsIb); clean.setBounds(100,690,100,22); clean.addActionListener(this); ok.setBounds(690,690,100,22); ok.addActionListener(this); pr
31、int.setBounds(800,690,100,22); print.addActionListener(this); allPrice.setBounds(900,480,100,50); label1.setBounds(20,120,80,22); label2.setBounds(20,180,80,22); sM.add(label1); sM.add(label2); sM.add(allPrice); sM.add(print); sM.add(ok); sM.add(showGoods); sM.add(clean); sM.add(numSearch); sM.add(s
32、earchGoods); sM.add(buyGoods); sM.add(jsp); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) Connection con;Statement sql;ResultSet rs;try if (n3!=0) int a1=0; con=DriverManager.getConnection(jdbc:odbc:q,); sql=con.createStatement(); rs=sql.executeQuery(SELECT MAX(编号) f
33、rom information); while(rs.next() a1=rs.getInt(1); for (int i=0;in3 ;i+ ) sql.executeUpdate(delete from information where 编号=+(a1-i); con.close(); ap=0; num=null;name=null;price=0;time=null;add=null;n3=0; goodsShow.setText(null); catch (SQLException g)System.out.println(g); System.exit(0); ); this.a
34、dd(sM); this.setTitle(销售窗口); this.setResizable(false); this.setBounds(0,0,1024,768); this.setVisible(true); validate(); 购置商品功效代码if(p.getSource()=buyGoods) /购置按键 tryif (num!=null)con=DriverManager.getConnection(jdbc:odbc:q,);sql=con.createStatement();sql.executeUpdate(insert into information(listnum,
35、goodsnum) values(+n2+,+num+);rs=sql.executeQuery(SELECT * FROM information where listnum=+n2);n3+;/统计购置商品个数con.close();goodsShow.append( +num+ +name+ +price+ +time+ +add+n); elseJOptionPane.showMessageDialog(this,请选择商品,提醒,JOptionPane.WARNING_MESSAGE);ap=ap+price;/总价allPrice.setText(商品总价:n+ap);catch
36、(SQLException g)System.out.println(g); if(p.getSource()=ok) try if (n3!=0) con=DriverManager.getConnection(jdbc:odbc:q,); sql=con.createStatement(); sql.executeUpdate(insert into information(listnum,allprice) values(+n2+,+ap+); rs=sql.executeQuery(SELECT * FROM information where listnum=+n2); con.cl
37、ose(); ap=0; num=null;name=null;price=0;time=null;add=null;n3=0; goodsShow.setText(null); n2+;/帐单号elseJOptionPane.showMessageDialog(this,请购置商品,提醒,JOptionPane.WARNING_MESSAGE); catch (SQLException g)System.out.println(g); if(p.getSource()=print) try if (n3!=0) con=DriverManager.getConnection(jdbc:odb
38、c:q,); sql=con.createStatement(); sql.executeUpdate(insert into information(listnum,allprice) values(+n2+,+ap+); rs=sql.executeQuery(SELECT * FROM information where listnum=+n2); con.close(); ap=0; num=null;name=null;price=0;time=null;add=null;n3=0; goodsShow.setText(null); n2+;/帐单号elseJOptionPane.showMessageDialog(this,