Java语言课程设计-小型超市管理系统.doc_第1页
Java语言课程设计-小型超市管理系统.doc_第2页
Java语言课程设计-小型超市管理系统.doc_第3页
Java语言课程设计-小型超市管理系统.doc_第4页
Java语言课程设计-小型超市管理系统.doc_第5页
免费预览已结束,剩余18页可下载查看

下载本文档

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

文档简介

计算机学院信管08级JAVA程序设计报告JAVA语言课程设计报告题 目:小型超市管理系统设 计 者: 专业班级: 学 号: 指导教师: 2010 年 12 月 12 日 计算机学院目录一、系统需求分析- 1 -1.1系统名称:- 1 -1.2系统介绍:- 1 -1.3开发背景- 1 -1.4.系统面向的用户群体- 1 -1.5开发环境- 1 -二、系统总体设计- 2 -2.1系统功能结构图- 2 -三、系统详细设计- 2 -3.1数据库实体E-R图设计- 2 -3.2数据库表的设计- 4 -3.3物理设计文档- 6 -3.4详细设计- 10 -四、系统总结- 20 -五、系统设计心得体会- 21 -六、参考文献- 21 -一、系统需求分析1.1系统名称:小型超市管理系统1.2系统介绍:界面设计简洁、友好、美观大方操作简单、快捷方便数据存储安全、可靠信息分类清晰、准确强大的查询功能、保证数据查询的灵活性提供销售排行,为管理员提供真实的数据信息提供灵活、方便的权限设置功能,使整个系统的管理分工明确对用户的输入的数据,系统进行严格的数据检验,尽可能排人为错误1.3开发背景随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必不可少的。我国的超市在20世纪90年代初期形成,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着经济的快速发展,超市的经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售业的发展,这样就迫切地需要引入新的管理技术。1.4.系统面向的用户群体主要是中小型超市使用者,该消费群体具有以下特征:1超市日常管理人工化居多,工作效率较低;2超市日常交易额较小,货物流通较小,不愿花高价购进大型超市管理系统。因此,该消费群体对产品的功能性需求并不高,只需满足前台销售系统、后台货物管理即可。1.5开发环境Eclipse+mysql二、系统总体设计2.1系统功能结构图登陆界面主界面商品信息管理基本信息管理进销管理查询统计权限管理库存管理供货商信息管理进销管理退货处理商品查询供货商查询库存盘点生成报表修改密码权限管理商品查询数据统计用户管理三、系统详细设计3.1数据库实体E-R图设计(1)图书信息实体E-R图商品进货价商品编号商品名称有效期数量下限单位销售价生产日期(2)读者信息实体用户用户名用户编号用户类型用户密码用户状态(3)图书借阅实体供货商供货商姓名供货商地址供货商编号供货商电话(4)多图之间的E-R图商品进货价商品编号商品名称有效期数量下限单位销售价生产日期供货商供货商姓名供货商地址供货商编号供货商电话用户用户名用户编号用户类型用户密码用户状态出入库供货3.2数据库表的设计数据库名:limitedmarket(1) 用户登录表(account)字段名类型长度字段约束中文名AccountnumberInteger登录号Accountnamevarchar30Not null登录名Accountpasswordvarchar20Not null登录密码accountTypesmallint6Not null登录类型accountStatesmallint6Not null登录状态managerIDIntegerNot null用户ID(2) 用户信息表(manager)字段名类型长度字段约束中文名managerIDInteger用户编号managernamevarchar20Not null用户姓名mobilephonevarchar15手机号码phonevarchar15固定电话manageremailvarchar30电子邮件(3) 商品信息表(commodity)字段名类型长度字段约束中文名commodityIDInteger商品编号Commoditynamevarchar40Not null商品名称producedatedatatimenot null生产日期Inpricenumeric2Not null进货价格salepricenumeric2Not null销售价格storagetimeintNot null有效期downlimitintNot null数量下限unitvarchar8Not null单位providernumberint供应商编号indatedate进货日期(4) 供应商表(provider)字段名类型长度约束中文名providernumberint供应商编号providernamevarchar40Not null供应商名称provideraddressvarchar60Not null供应商地址phonevarchar20Not null供应商电话(5) 销售表(sale)字段名类型长度约束中文名saleidint销售票号commodityidintNot null商品编号selltimedateNot null销售日期numberintNot null销售数量moneyfloatNot null收入operatorvarchar45Not null销售员commoditynamevarchar45Not null商品名称(6) 库存信息表(storage)字段名类型长度约束中文名storageidint入库编号commoditynamevarchar45Not null商品名称commodityidvarcharNot null商品编号unitvachar45Not null单位pricefloat45Not null单价outdatedateNot null退货时间providervarchar45Not null供应商operatorvarchar45Not null操作员numberintNot null数量(7) 销售退货(returnsale)字段名类型长度约束中文名Rsaleidint退货票号commodityidintNot null商品编号commoditynamevarchar商品名称numberIntNot null商品数量moenyfolatNot null金额returntimedateNot null退货时间operatorvarchar45Not null操作员(8) 入库退货(returnsale)字段名类型长度约束中文名Ridint退货编号commoditynamevarcgar45Not null商品名称commodityidintNot商品编号pricefloatNot null价格outdatedateNot null退货时间providervarchar45Not null供应商名称numberintNot null退货数量unitvarchar8Not null单位3.3物理设计文档/*-创建数据库-*/本系统使用mysql数据库,首先我们在Navicat for MySQL的Host: localhost下创建数据库limitedmarket,选择数据库编码为utf8 - UTF-8 Unicode。或使用sql语句create database limitedmarket创建数据库。/*-创建基本表-*/* 创建account表*/DROP TABLE IF EXISTS account;CREATE TABLE account ( accountNumber Integer NOT NULL auto_increment, accountName varchar(30) NOT NULL, accountPassword varchar(20) NOT NULL, accountType smallint(6) NOT NULL, managerID Integer default NULL, accountState smallint(6) NOT NULL, PRIMARY KEY (accountNumber), KEY FK_manage (managerID), CONSTRAINT FK_manage FOREIGN KEY (managerID) REFERENCES manager (managerID) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*创建manage表*/DROP TABLE IF EXISTS manager;CREATE TABLE manager ( managerID Integer NOT NULL auto_increment, managerName varchar(20) NOT NULL, managerMobilephone varchar(15) , managerRegionNumber varchar(4) , managerEMail varchar(30) default NULL, managerPhone varchar(10) ,PRIMARY KEY (managerID) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*创建commodity表*/DROP TABLE IF EXISTS commodity;CREATE TABLE commodity ( commodityID integer NOT NULL auto_increment, providernumber int(11) default NULL, commodityname varchar(45) NOT NULL, inDate datetime NOT NULL, producedate datetime NOT NULL, inprice float NOT NULL, saleprice float NOT NULL, storagetime int(11) NOT NULL, downlimit int(11) NOT NULL, unit varchar(8) default NULL, PRIMARY KEY (commodityID), KEY FK_supply (providernumber), CONSTRAINT FK_supply FOREIGN KEY (providernumber) REFERENCES provider (providernumber) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*创建returncommodity*/DROP TABLE IF EXISTS returncommodity;CREATE TABLE returncommodity ( RCid int unsigned NOT NULL auto_increment, commodityname varchar(45) NOT NULL, commodityid varchar(45) NOT NULL, unit varchar(45) NOT NULL, price float NOT NULL, outdate datetime NOT NULL, provider varchar(45) NOT NULL, operator varchar(45) NOT NULL, number int unsigned NOT NULL, PRIMARY KEY (RCid) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*创建sale表*/DROP TABLE IF EXISTS sale;CREATE TABLE sale ( commodityname varchar(45) NOT NULL, commodityid int unsigned NOT NULL, sellTime datetime NOT NULL, number varchar(45) NOT NULL, money double NOT NULL, operator varchar(45) NOT NULL, saleid int NOT NULL auto_increment, PRIMARY KEY (saleid) ENGINE=InnoDB DEFAULT CHARSET=gb2312 PACK_KEYS=1;/*创建returnsale表*/DROP TABLE IF EXISTS returnsale;CREATE TABLE returnsale ( Rsaleid int unsigned NOT NULL auto_increment, commodityid int unsigned NOT NULL, commodityname varchar(45) NOT NULL, number int unsigned NOT NULL, money double NOT NULL, returnTime datetime NOT NULL, operator varchar(45) NOT NULL, PRIMARY KEY (Rsaleid) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*创建provider表*/DROP TABLE IF EXISTS provider;CREATE TABLE provider ( providernumber int(11) NOT NULL auto_increment, phone varchar(20) NOT NULL, provideraddress varchar(60) NOT NULL, providername varchar(40) NOT NULL, PRIMARY KEY (providernumber) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*创建stroge表*/DROP TABLE IF EXISTS storage;CREATE TABLE storage ( storageid int unsigned NOT NULL auto_increment, commodityname varchar(45) NOT NULL, commodityid int unsigned NOT NULL, unit varchar(45) NOT NULL, price float NOT NULL, indate datetime NOT NULL, provider varchar(45) NOT NULL, operators varchar(45) NOT NULL, number int unsigned NOT NULL, PRIMARY KEY (storageid) ENGINE=InnoDB DEFAULT CHARSET=utf8/* 创建storageinfo表*/DROP TABLE IF EXISTS storageinfo;CREATE TABLE storageinfo ( commoditynumber int unsigned NOT NULL, accountid int unsigned NOT NULL, amount int unsigned NOT NULL, storageid int unsigned NOT NULL auto_increment, money double NOT NULL, PRIMARY KEY (storageid) ENGINE=InnoDB DEFAULT CHARSET=utf8;3.4详细设计(1)数据库与Eclipse的连接package dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;/* * * author Administrator */public class Connectdatabase protected static String dbClassName = com.mysql.jdbc.Driver;protected static String dburl=jdbc:mysql:/127.0.0.1:3306/limitedmarket?user=root&password=123;static Connection con = null;static Statement stmt = null;public static Connection getConnection() throws ExceptionClass.forName(dbClassName);con = DriverManager.getConnection(dburl);return con; public static Statement getStatement() throws ExceptionClass.forName(dbClassName);con = DriverManager.getConnection(dburl);stmt = con.createStatement();return stmt;(2)主要代码stmt = con.createStatement();/* statement对象静态执行查询sql语句 */public Dao()public static ResultSet findForResultset(String sql) ResultSet rs = null; Statement smt; try smt = Connectdatabase.getStatement(); rs = smt.executeQuery(sql); System.out.print(sql语句已经执行!); catch (Exception ex) Logger.getLogger(Dao.class.getName().log(Level.SEVERE, null, ex); return rs;/* statement对象静态执行插入、删除、更新sql语句 */public static int update(String sql) int result = 0; try Statement smt = Connectdatabase.getStatement(); result = smt.executeUpdate(sql); catch (Exception ex) Logger.getLogger(Dao.class.getName().log(Level.SEVERE, null, ex); return result;/* 指定参数的查询sql语句,动态 */public static ResultSet query(String querystr) ResultSet set = findForResultset(querystr); return set;/* 执行查询的sql语句 */public static int delete(String sql) return update(sql);/* 插入查询语句 */public static boolean insert(String sql) boolean result = true;try Statement stmt = Connectdatabase.getStatement();result = stmt.execute(sql); catch (Exception e) e.printStackTrace();return result;public static List findForList(String sql) List list = new ArrayList();ResultSet rs = findForResultset(sql);try ResultSetMetaData metaData = rs.getMetaData();int colCount = metaData.getColumnCount();while (rs.next() List row = new ArrayList();for (int i = 1; i = colCount; i+) String str = rs.getString(i);if (str != null & !str.isEmpty()str = str.trim();row.add(str);list.add(row); catch (Exception e) e.printStackTrace();return list;/用户登录方法public static Account getUser(String username,String password) Account account = new Account(); ResultSet rs = findForResultset(select * from account where accountName = +username+); try if (rs.next() account.setAccountName(username); account.setAccountPassword(rs.getString(accountPassword).trim(); if (account.getAccountPassword().equals(password) account.setAccountName(rs.getString(accountName).trim(); account.setAccountState(Integer.parseInt(rs.getString(accountstate);account.setAccountType(Integer.parseInt(rs.getString(accounttype);account.setManagerId(Integer.parseInt(rs.getString(managerid);account.setAccountNumber(Integer.parseInt(rs.getString(accountnumber); else account.setAccountName(null); account.setAccountPassword(null); catch (Exception e) e.printStackTrace(); return account;/ 获取用户对象的方法public static Account getUser(Item item) String where = AccountName= + item.getName() + ;/ if (item.getId() != null)/ where = name= + item.getId() + ;ResultSet rs = findForResultset(select * from account where + where);Account account = new Account();try if (rs.next() account.setAccountName(rs.getString(AccountName).trim();account.setAccountPassword(rs.getString(AccountPassword).trim();account.setAccountState(Integer.parseInt(rs.getString(AccountState).trim();account.setAccountType(Integer.parseInt(rs.getString(AccountType).trim(); catch (SQLException e) e.printStackTrace();return account; /* 通过存储过程添加商品 */ public static boolean addcommodity(Commodity com) boolean flag = true; if(com=null) return true; try conn = Connectdatabase.getConnection(); CallableStatement callstm = conn.prepareCall(call insertcommodity(?,?,?,?,?,?,?,?,?); callstm.setInt(1, com.getProvidernumber(); callstm.setString(2, com.getCommodityName(); callstm.setFloat(3, com.getInPrice(); callstm.setFloat(4, com.getSalePrice(); callstm.setInt(5, com.getStorageTime(); callstm.setInt(6, com.getDownlimit(); callstm.setString(7, com.getUnit(); callstm.setString(8, com.getInDate(); callstm.setString(9, com.getProcudeDate(); callstm.execute(); catch(Exception e) flag = true; flag = false; return flag; / 读取商品信息public static Commodity getSpInfo(Item item) String where = commodityname= + item.getName() + ;if (item.getId() != null)where = commodityID= + item.getId() + ;ResultSet rs = findForResultset(select * from commodity where + where);Commodity spInfo = new Commodity();try if (rs.next() spInfo.setCommodityId(Integer.parseInt(rs.getString(1);spInfo.setCommodityName(rs.getString(3);spInfo.setProvidernumber(Integer.parseInt(rs.getString(2);spInfo.setInDate(rs.getString(4);spInfo.setProcudeDate(rs.getString(5);spInfo.setInPrice(Float.parseFloat(rs.getString(6);spInfo.setSalePrice(Float.parseFloat(rs.getString(7);spInfo.setStorageTime(Integer.parseInt(rs.getString(8);spInfo.setDownlimit(Integer.parseInt(rs.getString(9);spInfo.setUnit(rs.getString(10); catch (SQLException e) e.printStackTrace();return spInfo;/修改商品信息/ 获取所有商品信息public static List getSpInfos() List list = findForList(select * from commodity);return list;public static List getComInfo(int id) List list = findForList(select * from commodity where CommodityID=+ id + );return list;/* 添加供应商信息 */ public static int updatecommodity(Commodity com) int flag = 1; try conn = Connectdatabase.getConnection(); CallableStatement st = conn.prepareCall(call updatecommodity(?,?,?,?,?,?,?,?,?,?); st.setInt(1, com.getProvidernumber();st.setString(2, com.getCommodityName();st.setFloat(3, com.getInPrice();st.setFloat(4, com.getSalePrice();st.setInt(5, com.getStorageTime();st.setInt(6, com.getDownlimit();st.setString(7, com.getUnit();st.setString(8, com.getInDate();st.setString(9, com.getProcudeDate();st.setInt(10, com.getCommodityId(); st.execute(); catch(Exception e) flag = 0; return flag; public static boolean addProvider(Provider pro) boolean flag = true; if(pro = null) return false; return insert(insert into provider (providername, provideraddress, phone) values(+ pro.getProviderName()+ ,+ pro.getProviderAddress()+ ,+ pro.getPhone() + ); / 读取所有供应商信息public static List getGysInfos() List list = findForList(select * from provider); return list; / 读取指定供应商信息public static Provider getGysInfo(Item item) String where = providername= + item.getName() + ;if (item.getId() != null)where = providernumber= + item.getId() + ;Provider p = new Provider();ResultSet set = findForResultset(select * from provider where + where);try if (set.next() p.setProviderNumber(Integer.parseInt(set.getString(1);p.setProviderAddress(set.getString(3);p.setPhone(set.getString(2);p.setProviderName(set.getString(4); catch (SQLException e) e.printStackTrace();return p; / 修改供应商信息的方法public static int updateGys(Provider p) return update(update provider set providername = + p.getProviderName() + , provideraddress=+ p.getProviderAddress() + ,phone= + p.getPhone()+ where providernumber = + p.getProviderNumber() + ); /将商品信息入库 public static boolean RuKuInfo(StorageInfo s) try conn = Connectdatabase.getConnection(); CallableStatement csmt = conn.prepareCall(call ruku(?,?,?,?,?,?,?,?); csmt.setString(1

温馨提示

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

评论

0/150

提交评论