Java期末课程设计-超市进销存管理系统_第1页
Java期末课程设计-超市进销存管理系统_第2页
Java期末课程设计-超市进销存管理系统_第3页
Java期末课程设计-超市进销存管理系统_第4页
Java期末课程设计-超市进销存管理系统_第5页
已阅读5页,还剩241页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计

期末课程设计报告

题目超市进销存管理系统

班级:13级信息安全班__________________

学号:_____________________

姓名:_____________________

成绩:_____________________

完成时间:2014年12月

目录

Notableolcontentsentrieslomrt.

一,需求分析

企业进销存管理系统的主要工作,是对企.业的进货、销售和库存以信息化的方式进行管理,最

大限度的减少各个环境中可能出现的错误,有效减少盲目采购,降低采购成本、合理控制库存、减

少资金占用并提高市场灵敏度,使企业能够合理安排进、销、存的每个关键步骤,替身企业市场竞

争力。针对经营管理中存在的问题,兰州华联超市对产品的进销存合理化提出了更高的要求。

通过实际调查,要求企业进销存管理系统具有以下功能。

♦界面设计美观大方,方便、快捷、操作灵活。

♦实现强大的进销存管理,包括基本信息、进货、销售和库存管理。

♦能够在不同的操作系统下运行,不局限于特定的平台。

♦提供数据库备份与恢复功能。

♦提供库存盘点功能。

♦提供技术支持的联系方式,可以使用邮件进行沟通,或者直接连接到技术网站。

二,分析与设计:

⑴功能模块划分:

本进销存管理系统划分为六人模块,分别为系统登陆模块,系统主窗体设计模块,进货单模块,

销售单模块,库存盘点模块和数据库备份与恢复模块,

⑵数据库结构描述:

企业进销存管理系统需要使用数据库存储和管理进销存过程中的所有信息,本企业进销存管理系

统使用40^§数据库系统作为后台数据库,数据库名称为曲工加油於C28。其中包含了14张数据表、两

个视图。以下是系统主要涉及的六个数据库表:

1.供应商信息表:主要用于存储供应商详细信息,其结构如下表所示:

User表:

起user

user_id▼user_name▼password▼u_text▼第击以添加

|E|3金莉婷520默6管理员

]02root123root

*LLo

Handle表:

!安全誓告部分活动内宫已被禁用.单击此处了岭洋名信也启用内容

表@«

屈handlerecord

曲product.cancle

由productjnuser_time▼user_name▼handle_text■电击以添加,

I六22:09:38root

曲product.old.record

I六22:11:11root

斗product.outI六22:11:24admin

^3product_out_recordI六22:13:43admin

^9product.retum_l六22:13:53root

I六22:21:04root

Sproduct.scrap

I六22:21:17admin

™product.stockI六22:28:09admin

期scrap.recordI六22:28:14root

I六22:37:51root

留stuff,n

I六23:06:24admin

马stuff.old.recordI六23:06:50admin

9stuff_qu!tI六23:08:28root

曲stuff.rtock17;23:08:55root

I六23:11:18root

任user

I六23:12:18root

田yield.draw8:28:00ROOT

myiald_cff8:34:33ROOT

曲yield_scrap9:39:40root

9:46:46root

9:47:08root

Product%:

I安戈•分达加内FBWM?.・含此处了*曲即aw*=B

23hendle.record

113product.cjrcW

W

nproduct^-u«er_naBch^ndle_teit隼击以索加・

I/

23product.oH.rec<xd|?

uBproducl.e«l|/product」.|pr&toct_c♦Iprgucjn,or0mct」:■|pro4uct」i.prgicjv,iprgct」.I八ock_&t■pr»duct_t.I.

|^

S3product_o<_recofd|7>33peoduct.«n-D

|/>

S3product.rftum|74procMict.ID*IprMtet.cllent«|inodi>ct_na*e-Iproduct.fpec•pro4uct.(mlt-product.value«iprMiuctjuke«1stocK.<hte•pr<

33product.“r”|^隆erd«eerer34.OOrtyry06/6/6里期二33

|7>1

112321322342334erte56.00ve10/3/4星期四em

33product_rtock|

1233ase•erasdasd445.00se10/6/6ITOSaft

Z3»<r»P_reccrd•!,12334wer1212342¥67.00ree10/3/4星期四Jk

■'

日tMf.in尸12c432131122311231wrevqr21.00120/6/28星期一ere

33sMf.dd.recocdl32UIUIIUUY23.00UI0o/7/ii星期日on

443YUKLKYUTYTRE78.00PO10/9/8星期三UJ】

3ttvff.QuitIT4

1/1HJ12JKLIKJKSPEC89.00JK0/6/27宗即日KU

国Uuff.Ucck身qveqweseq,①①Q3QC9eq,Qg“678.00q»eq09/6/9至明二q”

国nngv^ng・ao8。23.00si9/9/30星期三sdt

3jiekJ.drawveoewefsdsdsdsdfsdsdfssdfs23.OOsds0/7/10里期六Mds

,q23Qfdtr>r>we>e%500.003ds10/2/3至期三

aME

33

product.I-product_c,product_n-product.s-product_u:・product_v•products-stock.dat・product.t■电击以添加・

谢wedsdsd34345121sd)/7/7星期三dfer

32UIUIIUUY23UIU/7/11星期日UYU

443YUKLKYUTYTRE78PO)/9/8星期三UJI

veiwefvoieveifovevewsd123ew)/7/7星期三sds

veoevefsdsdsdsdfsdsdfssdfs23sds‘7/10星期六sds

vcwqcwervqeverqvvewqwerv56verv*7/10星期六sdss

VIDVI3232SDFSSDSDD34DSD)/7/3星期六123DF

vidvsswefsdsveesdsd45sd)/7/7星期三123

vleiwepsdveosvedosdwlsd34sd)/7/9星期五sds

*

0product_oW_reco*d

3product.outproduct-ID-product.:1:・product_naae-product_spe«•product.unit-product.valu-prodi>ct_Ba-stock_date・predict

■sdfssdfssdssdfs23sds10/7/9星明五123

Opcoduct_out_record

IDproduct.return

1/

马p€oduct_;crap1/

守producl.ftock-3

3tcraoreaxd

Stuff表:

13ncdRrecord

stuff.in-□X

13productqncbZ3

IBproductJnstuff.ID•$tuff_nai.stuff.coastuff.peo•cbeck-peo.•stuff.unl•stuff.val・stuff.spe・stuff.col•stuff_pla•stock-date・stul

■sdfdfsdfgdfgsadf23gddsfgsd”0/7/2星期五fsdf

13product.old.mcofd

HJHHJHIUFFDnt45FCWHC.0/7/10星期六CT

ZSprodoct.outvangveofBO>oeVOwoi34sdsowoiSCO)02/5/4星期六121

13prodoct_out_record

Yields:

stuffID・stuff-nan,stuffcoir・6tuffpe。・cbeckAeo:・stuffuni・stuffval・stuffspe,stuffcol・stuffpla・stockdat・stuff.d

yitid.off□

stuff_ID•stuff-na>•stuff.coM:-stuff.pe^:•check_peo-stuff_uni,stuff.val'•stuff.spc-stuff.col•stuff_pla・stock.dat•s

空表等待插入数据。

三,系统详细设计文档:

1.系统流程图:

⑴系统功能结构图:

,-

士--

H>

firirirrl£Tn1

访

退

退

退

一I—

一.

1—1一-

⑵系统业务流程图:

[系分肾录)

-T商品管理I基本资料的增、

删、改、查等

----M他本资料I--T客户管理I

维护操作

2

-H供阍管理I

州忸货]理I______

联」,上」E-存盘点I

怀在?午州~~

销iLn价格调整।

存小售和理।

管也据昨备份与恢复

系—u系统维“I_________密码修改一

~小技术支持।H退出系统

・「其他।

・►(技术网站|

关于I

⑶系统中的主要类及功能:

iJlcm公共类:

Hem公共类是对数据表最常用的ID和name属性的封装,属于§wina列表,表格,下拉列表

框等组件的赋值。该类重写了的方法,在该方法中只输出name属性。但是在获取组件的

内容时,获取的是配m类的对象,从该对象中可以获取ID的属性,然后通过该属性到数据库中

获取唯一的数据。

2•数据模型公共类:

数据模型公共类对应着数据库中不同的数据表,这些模型将被访问数据库的Dao类和程序中

各个模块甚至各个组件使用,数据模型是对数据表所有字段的封装,它是纯粹的模型类,他也要

重写10§1加的方法,另外还要重写侬Mode。方法和equalO方法。它主要用于存贮数据,并通过相

应的配tXXXO方法和§etXXXO实现不同属性的访问原则。

31tao公共类:

Dao类实现了数据库的驱动,连接,关闭和多个操作数据库的方法,Dao类不需要创建

对象,可以直接调用类中的所有数据库操作方法。Dao类自定义的主要方法有醐KhliUoflleinHenO

方法,主要是获取客户信息,方法的返回值是tKhlnfo的对象,及客户信息的数据模型。

配lGy§lii[o(岷mHem)方法,主要是获取供应商信息,返回值是Gyshilo类的对象,及供应商数据表

的模型对象。酸版Hemitem)方法,主要用于获取商品信息,返回值是WhKo类的对象,及商

品数据表的数据模型。gelLo^in(Stringname.Stringpa§§wonl)方法《主要适用于判断登录用户的用户

名与密码是否正确,返回值是boolean类型。]n§en§e川Moff於ellMalnsellMaln)方法,主要是添加销

售信息到数据库中。restoreOrBa€kup(String§ql)方法,此方法是设置数据库的模式为单用户连接模

式,这样可以避免数据库恢复或备份时失败。checKLo细领WuserMi都雌咽§沏方法,用于判断

登录用户与密码是否正确。

⑵各个模块实现方法描述:

1.系统登录模块

实现该模块的主要代码如下

packagesrc;

Import|ava.awt.Alpha(omposite;

Import|ava.awt.GradientPaint;

importjava.awt.Graphics;

import)ava.awt.Graphl€s2D;

importJava.awt.GridBagConsiralnls;

Importjava.awl.GridBagLayout;

importjava.awt.lmage;

importjava.awl.RenderingHints;

importjava.awl.Toolkil;

Import]ava.awt.event.AciionEvent;

Importjava.awt.event.AclionLislener;

import]ava.awt.event.KeyEvent;

Importjava.awl.evenl.KeyLislener;

importjavax.swing.J(omponenl;

iHportjavax.swing.JFrame;

importJavax.swingjOptionPane;

importjavax.swing.lllManager;

publicclassAddlser{

privatestaticOnalSiringlogoon-“添加用户”;

privatestaticOnalsiring配肌="添加”;

privatestaticfinalSiring加%"退出”;

privatestaticnnalStringuser="用户:n;

privatestaticnnalStringpassword="密码:;

privatestaticnnalString即/绢他片”再次输入密码:“;

privateiavax.swingjTextFielduserText=nnD;

privateiavax.swingjPasswordFielduserpwd=null;

privateiavax.swingjPasswordfleldenterpassword=mUl;

privateiavax.swingjPanelji=newjavax.swlngjPaneKK

ffitalstaticlongsena/VersionND=23095851;

puhlicveldpaint(omponent(Graphi€s&{

siver.pajntcomponent(g);

训1§0网ueOKretum;}

Graphics2Dg2d=(Graphics2D)g;

//inirule=Alpha(omposite.SRC_OVER;

AlphaCompositeopaque=Alphatomposite.JTr^

//AlphaCompositeblend=AlphaComposite.getlnstancefrule,0.6f);

//AlphaCompositeset=AlphaComposite.Src;

intwidth=gelWidthO;

intheight=getHeightO;

GradientPaintgradientpaint=new

GradientPaint(O,OJava.awtIolor.^^widlh/2)height/2Java.awt.Color.M^^lalse);

g2d.setComposlte(opaque);

g2d.setPaint(gradientPainO;

g2d.lillRect(0,0,width,heiihl);

g2(l.§elReii(lennaHlnl(Ren(leilngHln代碎4)m«^WRen(leilngHinK物建倒;

)

};

privatelavax.swingjButtonadd=newjavax.swing.jBullon(^4;

privatelavax.swmgjBunoncancie=newjavax.swingjBunon(/^^;

privatejFramelogo.Frame=newjFrame(/^^;

publicAddUserO(

//TIDO自动生成构造函数存根

try{

lilMana配rje〃〃减切窗网ulMana配r.g勿侬的血〃〃附加阳唬X被物%0);

}catck(Exceptionexe){System.^print(exe.getMessage());}

IFrame.4哂的〃刎倒窗"必切勿加骐true);

Toolkittools=logojrame.getToolkitO;

Imagelogo=tools.getlmageC'res/logojpg");

logojrame=newJFrame(W^;

logojrame.setlconlmageaogo);

jp.setlayoul(newGridBaglayoutO);

javax.swing.lmagelconpic=new]avax.swing.lmagelcon(>>res/logol.jpg");

|avax.swing.jlabelpicture=newfavax.swingjlabel(plc);

§eluMoniponem(plclurM,O,GH(lB褪C(m§lrainl§・4刚陋砌圾曲L的而皈l,troe);

javax.swingjlabelusers=newlavax.swlngjLabel(jZf^);

setupComponent(users,0444Jalse);

favax.swlng.jlabelpas=newjavax.swlngjLaDelg彻阪阁;

setupComponenKpas^O^^ttlalse);

javax.swlng.jlabelenpas=newlavax.swing.jlabeK^viM;

setupComponent(enpas3344>lalse);

userText=newjavax.swing.jTextfield(12);

userText.requestFocusO;

userText.addKeylistener(newKeyLislenerO{

pukllcvoldkeyTypedffieyEvente){}

puMlcvoidkeyReleasedffeyEvente){}

pukllcvoidkeyPressedflieyEvente){

U((e.getKeyCharO==KeyEvenl.)&4(userText.getTextO.lriniO!="')){

userpwd.requestFocusO;

)

)

});

setupComponent(userTextyL1444alse);

userpwd=newjavax.swiiig.JPasswordFieId(12);

userpwd.addKeyListener(newKeylistenerfK

puMlcvoidkeyTyped(KeyEvente){}

puMlcvoidkeyPressed(KeyEvente){

U((e.getKeyCharO==KeyEvent.VKjm&&(!

userpwd.getPasswordO.toStringo.trimO.isEmptyO)H

enterpassword.requesiFocusO;

)

else(

userpwd.requestFocus();

}

)

puMlcvoidkeyReleasedffeyEvente){

)

});

setupComponent(userpwd4,2,tlJalse);

enterpassword=newjavax.swingJPasswordHeld(12);

enterpassword.addKeyLlsiener(newKeyllstener(K

pukllcvoidkeyTypedffieyEvente){}

puMlcvoidkeyReleased(KeyEvenle){}

pukllcvoldkeyPresseflffieyEvenle){

//Stringpwd=usen>wd.getPasswor(lotloSlrlngo.trimo:

//Siringenwd=enterDassword.getPasswordO.toStringO.trimO:

U((e.getKeyCharO==KeyEventVKjm&&

((userpwd.getPasswordO.toStringO.lrimO)==(enterpasswor(l.getPasswordO.toSlringO.lrimO))H

add.requestFocusO;

)

elseU((e.gelKeyCharO==(KeyEvenl.VKjNTCBfy&&

((userpwd.getPasswordO.loSlring().trimO)!=(enterpasswor(l.getPasswordO.toStrlngO.lrimO))K

userpwd.setTextC");

emcrpa梵word.scnw");

userpwd.requestFocusO;

)

)

});

setupComponent(enterpassword4y344Jaise);

//logoln=newiavax.swing.lBmtonflogoon):

add.addKeyListener(newKeylistenerO{

puMlcvoidkeyTyped(KeyEvente){}

pukllcvoldkeyReleasedffeyEvente){}

puMlcvoidkeyPressed(KeyEvente){

tf((e.getKey€harO==KeyEvent.VK_ENTER诙

Stringusers=userText.getTextO.(rimO;

Stringpwd=userpwd.getPasswordO.toS1ringO.trlinO;

Stringepwd=enlerpassword.getPasswordO.toStrlngO.trimO;

U(users.lsBnptyOK

javaxsw腿jOpllonPane.血吸前则加如o虬Frame,“必须输入用户名!

输入用户名“JOlrtionPaiie./B汲砥欣/

userText.requestFocusO;}

K(pwd.isEmptyOH

mvax.§wlnajomioiiPanc.加.端6«teft^loq(LFraine,“必须输入密码!“J

输入密码"JomonPane.欧砌区砥以砌;

userpwd.requestFocusO;

)

IKepwd.isEmptyOH

Javax.swingjOptionPane.§howMe$m酗物/o圆崛。事am%”第二个输入密码必

须与第一个密码相同!“,“密码不一致"JOplionPane,欧砌上序CM砌;

enterpassword.requestFocusO;

)

booleanb=DBDtll./f£izM"seleclfromuserwhere

user_name=n++users+,,n,);

U(b){

javax.§wing.JomionPane.而劭妫wte加磔(logo_FrameJ用户已经存在,请另

夕卜输入!不能添力口“JOplkrnPane.痴级圈;

userTexi.setTexl(nu);

u§erpw(l.§elTcxK””);

enterpassword.setTextC");

userText.requestFocusO;

)

Intvale=DBUtil.^/FW^'selectusernamefromuserwhere

user_name=,,,+users+,,,,,)+l;

U(vale>OK

Stringsql="insertintouservalues(,M+vale+n,,n+users+',,,,,,+pw(l+',,r;

booleanbo=U§eDB.如曲邳ql);

H(Do)JOirtlonPaiie.施砥logo_Frame,”用户名添力L成功!”);

}

}

}

});

add.addActionlistener(iiewAclionLisienerO{

publicvoidadionPerformed(ActionEventeH

Stringusers=userText.getTextO.trimO;

Stringpwd=userpwd.getPasswordO.toStrIng().trimO;

Stringepwd=enlerpassword.getPasswordO.toSfringO.trimO;

if(users.isEmptjOK

Javax.swingJomionPane,血哧WefflteMnulL”必须输入用户名!“J输入用户

名"MulionPane,抽级瞅

userText.requestFocusO;}

n(pwd.lsEmptyOK

javax.§w[睢wmionPane,血砂阳哂次叨硒&null,“必须输入密码!输入密码

''^^rnURROR_MESSAG^

userpwd.requestFocus();

)

if(epwd.isEmptyOK

Javax.swingjOjrtlonPane.血拗加照物骐null,“第二个输入密便必须与第一个

密码相同!“,“密码不一致"JomioiPanc.掰碱砥M晒;

enterpassword.requestFocusO;

)

booleanD=DBDtil./f£tzM"selectfromuserwhereuser_name=,,,+users+);

«(»{

javax.§wingjOirtionPaiie.施.WeflteMlogo_Frame,”用户已经存在,请另外输

入!':不能添力『'JOimonPanc,2BW_«™砌;

userText.setText(MM);

u§crpw(L§etTexl('''');

enterDassword.serrext("");

userText.requesIFocusO;

}

Intvale=DBUtil.^/^7<"selectuser_namefromuserwhereuser_name='n+users+)+1

il(vale>OK

Stringsql="Insertintouservalues(,,,+vale+',;H+users+,M,,M+pw(l+',T,;

UScDB.如曲/网§q[);

booleanbo=DBDtU.Mi/fX"selectuser_namefromuserwherefd=valeM);

U(hoK

jOplkrnPane.功〃瞪砌如M飒(null,”用户名添加成功!”);

)

JOplionPane,助。随则伽彻就丝(null,''用户名已经存在!”);

)

userText.setTexl(,M,);

userpwd.setText(,M,);

enterpassword.setTextC'");

userText.requestFocusO;

)

});

setup(omponent(addt0,4)Lttnie);

//jayax.swlngjBultonexit=newlavax,swlngJButton(logoofi):

cancle.addA€tlonlislener(newAclionListenerfK

DubllcvoidactionPerformed(AcnonEvente2K

logojrame.dlsposeO;

//System.exit(l);

}

});

setupComponent(cancle,t444)tnie);

java.awt.Dlmensiond=tools.getScreenSIzeO;

Intwidth=(IntMd.gelWidthO-350)/2;

Intheight=(MOM.酗fIcl酬0240)/2;

logoJranie.addCip);

logojrame.setAlwaysOnTop(tnie);

logojrame.selLocation(widthyheight);

logo_Frame.selSize(350,240);

logojrame.packO;

logojrame.validateO;

logo_Frame.selVisible(tnie);

}

privatevoMsetupComponent(jComponenlcomponent^lntgridx,lntgrldy.mtgridwidth,Intipadx,boolean

fillK

UnaiGridBagConstrainlsgridBagConstrains=newGridBagConslraintsO;

^ridBa$Conslrains.gridx=gridx;

gridBagConstralns.gridy=如dy;

gridBagConstrains.insets=newJava.awl.in砥§(5,3,3,3);

Mttridwidth>l)

gridBagConstrains.gridwidth=gridwidth;

Udpadx>0)

gridBagC

温馨提示

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

最新文档

评论

0/150

提交评论