《Java超市管理系统(共48页).doc》由会员分享,可在线阅读,更多相关《Java超市管理系统(共48页).doc(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上沈 阳 工 程 学 院课 程 设 计设计题目: 面向对象程序设计课程设计 小超市管理系统 课程设计任务书课程设计题目: 面向对象程序设计课程设计 小超市管理系统 专心-专注-专业目 录4.3.5 用户管理的实现代码.204.4.6 模块的核心代码.34 第1章 绪 论随着人们生活水平的不断提高,购物已成为一种时尚。每天都有大量的消费者在各大商场中留下消费信息,所以作为商场的管理人员就需要有一个自动化、智能化的管理系统来完成这些信息的处理。由此我们设计开发小超市管理系统。目前市场上的超市管理系统,大部分为基于分布式数据库的网络管理系统,对于规模较小的超市没有必要花巨资来
2、购买这样功能全面的管理系统,此外,对于那样功能齐全的管理系统也需要花大精力来维护。基于这种情况,我们用所学的java知识,可以开发一种既能节约资金,又能完成小超市日常的管理任务。本系统所包括的功能主要有:限于不同身份的人登录的登录界面;权限管理功能;商品销售功能;商品管理功能;销售管理功能。在系统的设计中,用户管理功能可以管理登录本系统的人员,如:管理员、用户和超级用户等。在最初的系统使用中只有技术管理员一种身份。商品销售功能;可以完成商品信息的查询。如:输入一种商品的编号在商品信息栏就显示该商品的所有信息,名称、价格、生产日期、生产地。然后选择购买功能,就可以将商品添加到购物信息栏,最后选择
3、提交,所购买的商品信息同时也添加到数据库中。在商品管理功能中,可以把一种新引进的商品信息添加到小超市管理系统中。在销售管理功能中,可以查看超市的销售情况,所有商品的购买信息都存储在数据库中。在系统的安全性方面,我们规定了不同权限的登录用户,管理员(主要负责用户管理)可以登录到任何一个管理模块,以及后台的数据库,能够改变任一个登录者的用户名和密码。用户只能进入到销售界面。老板超级主要查看商品的销售情况和商品管理,他可以进入到商品销售管理查看商品的销售情况。通过这样的权限限制就可以方便的控制系统的安全性。 总之,小超市管理系统是一个经济、实惠的应用软件,适合小规模的商店和超市。操作难度小,易学易用
4、。 第2章 系统功能介绍2.1系统功能总框图 小超市管理系统是一个专门针对小型的商店和超市的智能化、自动化的管理系统。其功能总框图如图2-1所示。图2-1 系统功能总框图2.2 本系统模块功能介绍2.2.1 登录功能介绍登录功能是进入系统必须经过的验证过程,其主要功能是验证使用者的身份,确认使用者的权限,从而在使用软件过程中能安全地控制系统数据,即不同的工作人员有不同的权限,每个使用人员不得跨越其权限操作软件,可以避免不必要的数据丢失事件发生。登录的界面如图2-2所示: 图2-2登录的界面2.2.2 商品销售功能介绍销售界面是本系统直接供销售的店员应用的专管销售功能的界面,首先要查询欲购买的商
5、品,在左侧的查询框内输入商品代号,然后点击搜索按钮,相应的商品信息将显示在“商品信息”一栏中,确认是此商品后点击购买,购买的商品将出现在下面的购物信息一栏中,当所有欲购买的商品都已输入好,点击提交,购买的商品信息将记录到数据库中。若输入有误,点击清除按钮,刚输入的信息将被清除,可重新输入。界面的右下方右商品总价的标签,可以时时地显示已购买商品的总价,以供参考。商品销售功能的主界面如图2-3所示:图2-3销售窗口的主界面2.2.3 用户管理功能介绍用户管理功能是管理人员使用的界面。管理人员可以使用此功能管理所有登录用户的信息。可以修改所有用户的帐号和密码,设置用户的权限,删除用户的帐号;对于已存
6、在的用户技术管理员可以查询他们的信息,在下面的显示用户信息处显示。添加、修改、删除等操作后,单击“刷新”后,新的更改信息才可以在下面的用户信息显示处显示。用户管理的主界面如图2-4所示:图2-4 用户管理的主界面2.2.4 销售管理功能介绍销售管理功能主要是老板查看超市商品销售情况。老板可以根据已售出的商品号查询该商品的信息,如可以查询该商品已售出的总数量。还可以根据销售的账单号查询,就是在消费者每一次购买商品时,就分配一个账单号,如出现消费者退货情况时,老板可以查询账单号解决。“按编号查询”输入商品的编号,在下面的商品信息处显示该商品的信息;“按账单号查询”输入商品的账单号,在下面的商品信息
7、处显示该商品的信息。销售管理功能的主界面如图2-5所示:图2-5商品管理功能主界面2.2.5 商品管理功能介绍商品管理的功能是店员在进货、商品信息维护时所需要的界面,此界面功能是管理所有商品的信息,在这里可以添加、修改、删除任意商品信息,做到对商品信息的及时维护。应用时,对应按钮的功能,进行应用,维护方便。 商品管理功能的主界面如图2-6所示:图2-6商品管理系统的主界面2.3 组内任务分工组内人员分工如表2-1所示:表2-1 组内分工组内分工姓名主要任务成绩组长王浩数据库的设计、商品管理和用户管理等功能组员魏兴龙销售管理界面及功能组员王潇伯商品销售界面及功能组员夏恩亮权限销售界面及功能第3章
8、 数据库设计在每个管理系统中都一定有储存机制,若单单以文件形式储存,查找和存储时速度比较缓慢,会降低系统的整体运行速度,一定要运用数据库的进行信息管理,所以我们的“小超市管理系统”运用了Microsoft Access数据库,存储其后台数据。下面将介绍本系统的数据库设计。3.1 数据库需求分析此系统需要有两个实体,账户和商品。数据项如表3-1和3-2所示。表3-1用户信息数据项数据项名数据项含义说明别名数据类型长度ID用户登录的帐号Id字符型50PASSWORD用户登录帐号对应的密码Psw字符型50PERSONTY登录用户的权限Pst字符型50表3-2商品信息数据项数据项名数据项含义说明别名数
9、据类型长度NUM商品的编号编号字符型50NAME商品的名称名称字符型50TIME商品的进货时间货时字符型50ADD商品的生产地址产地字符型50PRICE商品的单价价格整型50COUNT商品的库存数量数量整型3.2 数据库概念结构设计根据需求分析设计出E-R图如图3-1所示: 图3-1 系统E-R图3.3 数据库表的设计Password表,其中存储的是用户的帐号、密码及权限,用于登陆系统时确认身份。此表设计如3-3表所示:表3-3 Password信息表字段名称数据类型长 度备 注ID文 本50PASSWORD文 本50PERSONTY文 本50Goods表,其中存储的是商品的详细信息,作用是记
10、录商品的信息及在本超市中的数量。此表设计如3-4标所示。表3-4Goods信息表字段名称数据类型长 度备 注NUM文 本50NAME文 本50PRICE整 型TIME文 本50ADD文 本50COUNT文 本50Information表,其中存储的是顾客在超市中的消费情况,其中有帐单号、商品代号、数量及总价,用来记录超市中销售情况,此表设计如3-5表所示。表3-5 Information信息表字段名称数据类型长 度备 注编号长 整 型销售的每件商品有不同的编号LISTNUM文 本50每提交一次帐单帐单号增加1GOODSNUM文 本50ALLPRICE整 型每个帐单的最后合出此帐单的总价第4章
11、系统功能实现4.1 登录功能实现登录界面是使用者在使用此软件时需要输入自已的账号和密码,从而使用自已的权限来管理超市的运行。小超市登录界面如4-1所示。 图4-1 小超市管理系统登录界面模块核心代码:public class Login extends Frame implements ActionListener,WindowListener /登陆界面 public int screanWidth,screanHeight; String idin=null; String keyin=null; String passwordD=null; public static String pe
12、rsontyD=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.getScreenSize(); screanWidth=dim.width; screanHeight=dim.height; setBounds(
13、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() /匿名类实例控制public void actionPerformed(ActionEvent p)System.exit(0); ); menu.add(help)
14、; 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.createVerticalBox(); boxV1.add(Box.createVerticalStrut(35); boxV1.add
15、(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); boxV2.add(keytf); boxV2.add(Box.createVerticalStrut(15); baseBox=Box.creat
16、eHorizontalBox(); 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(Box.createHorizontalStrut(125); boxV3.add(enterB); boxV3.add(Box.create
17、HorizontalStrut(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); setResizable(false); setVisible(true);public void actionPerformed(Ac
18、tionEvent 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); trycon=DriverManager.getConnection(jdbc:odbc:q,);sql=con.createStatement
19、();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 View2(); this.setVisible(false); else JOptionPane.showMessageDialog(t
20、his, 帐户或密码错误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 windowClosing(WindowEvent o)dispose();public void windowClosed(WindowEvent o)Sy
21、stem.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 销售界面功能介绍该功能是此系统的最关键的模块,是消费者直接使用的功能。消费者可以根据已看到的商,在搜索栏中打入商品的编号,进行查询商品的信息,然后可以依椐自已的需要购买。最后单击提交,购买的商品就
22、记录到系统的数据库中。销售的主界面如图4-2所示:图 4-2 销售的主界面4.2.1 搜索商品的信息 消费者可根据自已所需要的商品编号,在销售功能中搜索,查看商品的信息无误后,确定是否购买。如搜索001号商品,查看它的信息,如图4-3所示。图4-3 搜索001号商品的信息4.2.2 购买商品在确定自已需要的商品后,然后就是购买商品,消费者可以按“购买”键进行购买物品,购买一份就单击一次“购买”键,购买物品的信息显示在购物信息框中,最后单击“提交”,消费者所购买的物品就作为一个账单号存储在数据库中。如购买004、005、006、008、010和011号商品时,购买信息如图4-4下: 图4-4 购
23、买信息当购买人不想购买这些商品时,可以点击窗口左下角的清除按钮,来清除刚才购买的商品,数据库中也不会有此记录。此外,本系统是每购买一件商品向数据库提交一次记录,当未点击提交按钮之前,若要结束此窗口进程,我们在代码中嵌入了一段删除当前帐单的数据库记录代码,以达到没有误提交的操作。4.2.3 模块的核心代码 销售界面的实现public class View2 extends JFrame implements ActionListener /销售界面String num=null,name=null,time=null,add=null,t1=null,t2=null,t3=null;int pr
24、ice=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(); /文本区 private JScrollPane jsp=new JScrollPane(goodsSho
25、w); /滚动区域 设定内容为 商品显示的文本区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(打印并提交); /查询按钮private JLabel goodsInformation=new JLabel(商品编码,
26、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),new JLabel(生产日期,JLabel.CENTER),new JLabel(生产
27、地,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.addActionListener(this); jsp.setBounds(100,180
28、,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 (int b=0;b5 ;b+ ) goodsInformationb.setBou
29、nds(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); print.setBounds(800,690,100,22); print.addAct
30、ionListener(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(searchGoods); sM.add(buyGoods); sM.add(jsp);
31、 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(编号) from information); while(rs.next() a1=rs.get
32、Int(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.add(sM); this.setTitle(销售窗口); this.setResiza
33、ble(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,goodsnum) values(+n2+,+num+);rs=sql.execut
34、eQuery(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 (SQLException g)System.out.println(g); if(
35、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.close(); ap=0; num=null;name=null;price=0;ti
36、me=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:odbc:q,); sql=con.createStatement(); sql.exec
37、uteUpdate(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,请购买商品,提示,JOptionPane.WARNING_MESSAGE); catch (SQLException g)System.out.println(g); if(p.getSource()=clean) try if (n3!=0) int a1=0; con=DriverManager.getConnection(jdbc:odbc:q,); sql=con.createStatement(); rs=sql.executeQuery(SELECT MAX(编号) from information); while(rs.n
限制150内