




已阅读5页,还剩96页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java课程设计报告题 目 华联超市进销管理系统 一.需求分析企业进销存管理系统的主要工作,是对企业的进货、销售和库存以信息化的方式进行管理,最大限度的减少各个环境中可能出现的错误,有效减少盲目采购,降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,使企业能够合理安排进、销、存的每个关键步骤,替身企业市场竞争力。针对经营管理中存在的问题,兰州华联超市对产品的进销存合理化提出了更高的要求。 通过实际调查,要求企业进销存管理系统具有以下功能。 界面设计美观大方,方便、快捷、操作灵活。实现强大的进销存管理,包括基本信息、进货、销售和库存管理。能够在不同的操作系统下运行,不局限于特定的平台。提供数据库备份与恢复功能。提供库存盘点功能。提供技术支持的联系方式,可以使用邮件进行沟通,或者直接连接到技术网站。二.分析与设计:(1)功能模块划分:本进销存管理系统划分为六个模块,分别为系统登陆模块,系统主窗体设计模块,进货单模块,销售单模块,库存盘点模块和数据库备份与恢复模块,(2)数据库结构描述:企业进销存管理系统需要使用数据库存储和管理进销存过程中的所有信息,本企业进销存管理系统使用sql server 2000数据库系统作为后台数据库,数据库名称为db_database28。其中包含了14张数据表两个视图。以下是系统主要涉及的六个数据库表:1供应商信息表:主要用于存储供应商详细信息,其结构如下表所示:tb_gysinfo供应商信息表字段名称数据类型字段大小是否主键说明idvarchar32主键供应商编号namevarchar50供应商名称jcvarchar20供应商简称addressvarchar100供应商地址bianmavarchar10邮政编码telvarchar15电 话faxvarchar15传 真lianvarchar8联 系 人ltelvarchar15联系电话yhvarchar50开户银行mailvarchar50电子信箱2.商品信息表:主要用于存储商品详细信息,其结构如下表所示; tb_spinfo商品信息表字段名称数据类型字段大小是否主键说明idvarchar32主键商品编号spnamevarchar50商品名称jcvarchar30商品简称cdvarchar50产 地dwvarchar10计量单位ggvarchar10商品规格bzvarchar20包 装phvarchar32批 号pzwhvarchar50批准文号memovarchar100备 注gysnamevarchar50供应商名称3.入库主表:主要用于存出入库单据信息,其结构如下表所示: tb_ru_ku_main入库主表字段名称数据类型字段大小是否主键说明rkidvachar32主键入库编号pzsfloat8品种数量jemoney8总计金额ysjlvachar50验收结论gysnamevachar100供应商名称rkatedatetime8入库时间czyvachar30操 作 员jsrvachar30经 手 人jsfsvachar10结算方式4.入库明细:主要用于存出入库详细信息,其结构如下表所示: tb_ruku_detail入库明细表字段名称数据类型字段大小是否主键说明idvachar50主键流 水 号rkidvachar30入库编号spidvachar50商品编号djmoney8单 价slfloat8数 量5.销售主表:主要用于存储销售单据信息,其结构如下表所示: tb_sell_main销售主表字段名称数据类型字段大小是否主键说明sellidvachar30主键销售编号pzsfloat8销售品种数jemoney8总计金额ysjlvachar50验收结论khnamevachar100客户名称xsdatedatetime8销售日期czyvachar30操作员jsrvachar30经手人jsfsvachar10结算方式6.销售明细表:主要用于存储销售详细信息,其结构如下表所示: tb_sell_detail销售明细表字段名称数据类型字段大小是否主键说明idvachar50主键流水号sellidvachar50销售编号spidvachar50商品编号djmoney8销售单价slfloat8销售数量三.系统详细设计文档:1.系统流程图: (1)系统功能结构图: (2)系统业务流程图: (3)系统中的主要类及功能: 1.item公共类:item公共类是对数据表最常用的id和name属性的封装,属于swing列表,表格,下拉列表框等组件的赋值。该类重写了tostring()方法,在该方法中只输出name属性。但是在获取组件的内容时,获取的是item类的对象,从该对象中可以获取id的属性,然后通过该属性到数据库中获取唯一的数据。 2.数据模型公共类: 数据模型公共类对应着数据库中不同的数据表,这些模型将被访问数据库的dao类和程序中各个模块甚至各个组件使用,数据模型是对数据表所有字段的封装,它是纯粹的模型类,他也要重写tostring()方法,另外还要重写hashcode()方法和equal()方法。它主要用于存贮数据,并通过相应的getxxx()方法和setxxx()实现不同属性的访问原则。 3.dao公共类: dao类实现了数据库的驱动,连接,关闭和多个操作数据库的方法,dao类不需要创建对象,可以直接调用类中的所有数据库操作方法。dao类自定义的主要方法有getkhlnfo(item item)方法,主要是获取客户信息,方法的返回值是tkhlnfo的对象,及客户信息的数据模型。getgyslnfo(item item)方法,主要是获取供应商信息,返回值是gyslnfo类的对象,及供应商数据表的模型对象。getsplnfo(item item)方法,主要用于获取商品信息,返回值是splnfo类的对象,及商品数据表的数据模型。getlogin(string name,string password)方法主要适用于判断登录用户的用户名与密码是否正确,返回值是boolean类型。insertselllnfo(tbsellmain sellmain)方法,主要是添加销售信息到数据库中。restoreorbackup(string sql)方法,此方法是设置数据库的模式为单用户连接模式,这样可以避免数据库恢复或备份时失败。checklogin(string userstr,string passstr)方法,用于判断登录用户与密码是否正确。(2)各个模块实现方法描述: 1.系统登录模块 实现该模块的主要代码如下 package com.lzw.login;import java.awt.*;import java.awt.event.*;import java.sql.sqlexception;import javax.swing.*;import com.lzw.mainframe;import com.lzw.dao.dao;public class logindialog extends jframe private static final long serialversionuid = 1l;private loginpanel loginpanel = null;private jlabel jlabel = null;private jtextfield userfield = null;private jlabel jlabel1 = null;private jpasswordfield passwordfield = null;private jbutton loginbutton = null;private jbutton exitbutton = null;private static string userstr;private mainframe mainframe;/* param owner */public logindialog() try uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname(); mainframe = new mainframe(); initialize(); catch (exception e) e.printstacktrace();/* * 初始化loginpanel登录面板的方法 * * return com.lzw.login.loginpanel */private loginpanel getloginpanel() if (loginpanel = null) jlabel1 = new jlabel();jlabel1.setbounds(new rectangle(86, 71, 55, 18);jlabel1.settext(密码:);jlabel = new jlabel();jlabel.settext(用户名:);jlabel.setbounds(new rectangle(85, 41, 56, 18);loginpanel = new loginpanel();loginpanel.setlayout(null);loginpanel.setbackground(new color(0xd8ddc7);loginpanel.add(jlabel, null);loginpanel.add(getuserfield(), null);loginpanel.add(jlabel1, null);loginpanel.add(getpasswordfield(), null);loginpanel.add(getloginbutton(), null);loginpanel.add(getexitbutton(), null);return loginpanel;/* * this method initializes userfield * * return javax.swing.jtextfield */private jtextfield getuserfield() if (userfield = null) userfield = new jtextfield();userfield.setbounds(new rectangle(142, 39, 127, 22);return userfield;/* * this method initializes passwordfield * * return javax.swing.jpasswordfield */private jpasswordfield getpasswordfield() if (passwordfield = null) passwordfield = new jpasswordfield();passwordfield.setbounds(new rectangle(143, 69, 125, 22);passwordfield.addkeylistener(new java.awt.event.keyadapter() public void keytyped(java.awt.event.keyevent e) if(e.getkeychar()=n)loginbutton.doclick(););return passwordfield;/* * this method initializes loginbutton * * return javax.swing.jbutton */private jbutton getloginbutton() if (loginbutton = null) loginbutton = new jbutton();loginbutton.setbounds(new rectangle(109, 114, 48, 20);loginbutton.seticon(new imageicon(getclass().getresource(/res/loginbutton.jpg);loginbutton.addactionlistener(new actionlistener() public void actionperformed(actionevent e) try userstr = userfield.gettext();stringpassstr=new string(passwordfield.getpassword();if (!dao.checklogin(userstr, passstr) joptionpane.showmessagedialog(logindialog.this,用户名与密码无法登录, 登录失败,joptionpane.error_message);return; catch (exception e1) e1.printstacktrace();mainframe.setdefaultcloseoperation(jframe.exit_on_close);mainframe.setvisible(true);mainframe.getczystatelabel().settext(userstr);setvisible(false););return loginbutton;/* * this method initializes exitbutton * * return javax.swing.jbutton */private jbutton getexitbutton() if (exitbutton = null) exitbutton = new jbutton();exitbutton.setbounds(new rectangle(181, 114, 48, 20);exitbutton.seticon(new imageicon(getclass().getresource(/res/exitbutton.jpg);exitbutton.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent e) system.exit(0););return exitbutton;/* * 界面初始化方法 * * return void */private void initialize() dimension size = gettoolkit().getscreensize();setlocation(size.width - 296) / 2, (size.height - 188) / 2);setsize(296, 188);this.settitle(系统登录);setcontentpane(getloginpanel();public string getuserstr() return userstr; / jve:decl-index=0:visual-constraint=10,10运行结果如下: 2.主窗体模块主要实现代码如下:package com.lzw;import java.awt.*;import java.util.date;import javax.swing.*;import javax.swing.border.bevelborder;import com.lzw.login.logindialog;public class mainframe extends jframe private static final long serialversionuid = 1l;private jpanel framecontentpane = null;private menubar framemenubar = null;private toolbar toolbar = null;private desktoppanel desktoppane = null;private jpanel statepanel = null;private jlabel statelabel = null;private jlabel namelabel = null;private jlabel nowdatelabel = null;private jseparator jseparator1 = null;private static jlabel czystatelabel = null;private jseparator jseparator2 = null;/* * this method initializes jjtoolbarbar * * return javax.swing.jtoolbar */private toolbar getjjtoolbarbar() if (toolbar = null) toolbar = new toolbar(getframemenubar();toolbar.setcursor(new cursor(cursor.hand_cursor);return toolbar;/* * 初始化窗体菜单栏的方法 * * return javax.swing.jmenubar */protected menubar getframemenubar() if (framemenubar = null) framemenubar = new menubar(getdesktoppane(), getstatelabel();return framemenubar;/* * this method initializes desktoppane * * return javax.swing.jdesktoppane */private desktoppanel getdesktoppane() if (desktoppane = null) desktoppane = new desktoppanel();return desktoppane;/* * this method initializes statepanel * * return javax.swing.jpanel */private jpanel getstatepanel() if (statepanel = null) gridbagconstraints gridbagconstraints6 = new gridbagconstraints();gridbagconstraints6.gridx = 2;gridbagconstraints6.fill = gridbagconstraints.vertical;gridbagconstraints6.insets = new insets(0, 5, 0, 5);gridbagconstraints6.gridy = 0;gridbagconstraints gridbagconstraints4 = new gridbagconstraints();gridbagconstraints4.gridx = 3;gridbagconstraints4.gridy = 0;gridbagconstraints gridbagconstraints3 = new gridbagconstraints();gridbagconstraints3.gridx = 6;gridbagconstraints3.fill = gridbagconstraints.vertical;gridbagconstraints3.insets = new insets(0, 5, 0, 5);gridbagconstraints3.gridy = 0;gridbagconstraints gridbagconstraints11 = new gridbagconstraints();gridbagconstraints11.gridx = 5;gridbagconstraints11.insets = new insets(0, 5, 0, 5);gridbagconstraints11.gridy = 0;nowdatelabel = new jlabel();date now = new date();nowdatelabel.settext(string.format(%tf, now);gridbagconstraints gridbagconstraints2 = new gridbagconstraints();gridbagconstraints2.gridx = 7;gridbagconstraints2.weightx = 0.0;gridbagconstraints2.fill = gridbagconstraints.none;gridbagconstraints2.gridy = 0;namelabel = new jlabel(吉林省铭泰有限公司 );gridbagconstraints gridbagconstraints1 = new gridbagconstraints();gridbagconstraints1.gridx = 4;gridbagconstraints1.fill = gridbagconstraints.vertical;gridbagconstraints1.weighty = 1.0;gridbagconstraints1.insets = new insets(0, 5, 0, 5);gridbagconstraints1.gridy = 0;gridbagconstraints gridbagconstraints = new gridbagconstraints();gridbagconstraints.gridx = 0;gridbagconstraints.fill = gridbagconstraints.horizontal;gridbagconstraints.weightx = 1.0;gridbagconstraints.gridy = 0;statepanel = new jpanel();statepanel.setlayout(new gridbaglayout();statepanel.setborder(borderfactory.createbevelborder(bevelborder.raised);statepanel.add(getstatelabel(), gridbagconstraints);statepanel.add(getjseparator(),gridbagconstraints1);statepanel.add(namelabel, gridbagconstraints2);statepanel.add(getjseparator1(),gridbagconstraints3);statepanel.add(nowdatelabel, gridbagconstraints11);statepanel.add(getczystatelabel(), gridbagconstraints4);statepanel.add(getjseparator2(),gridbagconstraints6)return statepanel;public static jlabel getczystatelabel() if (czystatelabel = null) czystatelabel = new jlabel(操作员:);return czystatelabel;public jlabel getstatelabel() if (statelabel = null) statelabel = new jlabel();statelabel.settext(当前没有选定窗体);return statelabel;/* * this method initializes jseparator * * return javax.swing.jseparator */ private jseparator getjseparator() jseparator jseparator = new jseparator();jseparator.setorientation(jseparator.vertical);return jseparator;/* * this method initializes jseparator1 * * return javax.swing.jseparator */private jseparator getjseparator1() if (jseparator1 = null) jseparator1 = new jseparator();jseparator1.setorientation(swingconstants.vertical);return jseparator1;/* * this method initializes jseparator2 * * return javax.swing.jseparator */private jseparator getjseparator2() if (jseparator2 = null) jseparator2 = new jseparator();jseparator2.setorientation(swingconstants.vertical)return jseparator2;/* * param args */public static void main(string args) splashscreen splashscreen = splashscreen.getsplashscreen();if(splashscreen!=null)try jframe login = new logindialog();login.setdefaultcloseoperation(jframe.exit_on_close);thread.sleep(3000);login.setvisible(true); catch (interruptedexception e) /* * this is the default constructor */public mainframe() super();initialize();/* * this method initializes this * * return void */private void initialize() this.setsize(800, 600);this.setjmenubar(getframemenubar();this.setcontentpane(getframecontentpane();this.settitle(华联超市进销存管理系统);/* * this method initializes framecontentpane * * return javax.swing.jpanel */private jpanel getframecontentpane() if (framecontentpane = null) framecontentpane = new jpanel();framecontentpane.setlayout(new borderlayout();framecontentpane.add(getstatepanel(), borderlayout.south);framecontentpane.add(getjjtoolbarbar(), borderlayout.north);framecontentpane.add(getdesktoppane(), borderlayout.center);return framecontentpane; / jve:decl-index=0:visual-constraint=6,-5运行界面如下: 3.进货单模块 实现代码如下: package com.lzw.iframe;import java.awt.*;import java.awt.event.*;import java.beans.propertychangelistener;import java.sql.*;import java.util.*;import java.util.date;import java.util.list;import javax.swing.*;import javax.swing.border.bevelborder;import javax.swing.table.*;import com.lzw.*;import com.lzw.dao.dao;import com.lzw.dao.model.*;public class jinhuodan_iframe extends jinternalframe private jpanel jcontentpane = null;private jpanel toppanel = null;private jlabel idlabel = null;private jtextfield idfield = null;private jlabel gyslabel = null;private jlabel lxrlabel = null;private jtextfield lxrfield = null;private jlabel jsfslabel = null;private jcombobox jsfscombobox = null;private jlabel thsjlabel = null;private jtextfield jhsjfield = null;private jlabel jsrlabel = null;private jtextfield czyfield = null;private jpanel bottompanel = null;private jlabel pzsllabel = null;private jtextfield pzslfield = null;private jlabel hpzslabel = null;private jtextfield hpzsfield = null;private jlabel hjjelabel = null;private jtextfield hjjefield = null;private jlabel ysjllabel = null;private jtextfield ysjlfield = null;private jlabel czylabel = null;private jbutton tjbutton = null;private jbutton rukubutton = null;private jscrollpane tablepane = null;private jtable table = null;private jcombobox spcombobox = null; / jve:decl-index=0:visual-constraint=633,84private jcombobox gyscombobox = null;private jcombobox jsrcombobox = null;private date jhsjdate = new date();/* * 默认的构造方法 */public jinhuodan_iframe() super();initialize();/* * 初始化界面的方法 * * return void */private void initialize() this.setsize(600, 320);this.seticonifiable(true);this.setresizable(true);this.setmaximizable(true);this.settitle(进货单);this.setclosable(true);this.setcontentpane(getjcontentpane();/* * 初始化jcontentpane内容面板的方法 * * return javax.swing.jpanel */private jpanel getjcontentpane() if (jcontentpane = null) jcontentpane = new jpanel();jcontentpane.setlayout(new borderlayout();jcontentpane.add(gettoppanel(), java.awt.borderlayout.north);jcontentpane.add(getbottompanel(), java.awt.borderlayout.south);jcontentpane.add(gettablepane(), java.awt.borderlayout.center);return jcontentpane;/* * 初始化toppanel面板的方法 * * return javax.swing.jpanel */private jpanel gettoppanel() if (toppanel = null) gridbagconstraints gridbagconstraints21 = new gridbagconstraints();gridbagconstraints21.fill = gridbagconstraints.both;gridbagconstraints21.gridy = 1;gridbagconstraints21.weightx = 1.0;gridbagconstraints21.gridx = 9;gridbagconstraints gridbagconstraints = new gridbagconstraints();gridbagconstraints.fill = gridbagconstraints.both;gridbagconstraints.gridy = 0;gridbagconstraints.weightx = 1.0;gridbagconstraints.gridx = 5;gridbagconstraints gridbagconstraints101 = new gridbagconstraints();gridbagconstraints101.gridx = 8;gridbagconstraints101.gridy = 1;jsrlabel = new jlabel();jsrlabel.settext(u7ecfu624bu4ebauff1a);gridbagconstraints gridbagconstraints91 = new gridbagconstraints();gridbagconstraints91.fill = gridbagconstraints.horizontal;gridbagconstraints91.gridy = 1;gridbagconstraints91.weightx = 1.0;gridbagconstraints91.gridx = 5;gridbagconstraints gridbagconstraints81 = new gridbagconstraints();gridbagconstraints81.gridx = 4;gridbagconstraints81.gridy = 1;thsjlabel = new jlabel();thsjlabel.settext(进货时间:);gridbagconstraints gridbagconstraints71 = new gridbagconstraints();gridbagconstraints71.fill =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流企业客户满意度提升策划
- 儿童心理问题识别与干预策略
- 人力资源管理实务考试题库及解析
- 五金行业生产计划管理流程
- 电力行业安全管理操作手册
- 房地产公司印章使用与管理规范
- 高中物理教学总结与教学反思模板
- 小学数学期末考试复习重点解析
- 2025-2030发酵工业大型不锈钢人孔盖应力仿真与结构优化研究报告
- 2025-2030动力锂电池回收体系构建与循环经济战略研究
- 2024版网络安全网络攻击与防御技术实践演示培训
- 1-食管支架置入护理
- 《声声慢》省赛一等奖
- 国家开放大学《实用管理基础》形考任务1-4参考答案
- 万科郡西别墅课件
- 西南科技大学833材料科学基础2016-2022年考研初试真题
- 香港注册社会工作者工作守则
- GB/T 15115-1994压铸铝合金
- GB/T 12357.1-2004通信用多模光纤第1部分:A1类多模光纤特性
- 胸外科围手术期呼吸功能锻炼的意义培训课件
- (新版)海南自由贸易港建设总体方案考试题库(含答案)
评论
0/150
提交评论