Java进销存管理.docx
《Java进销存管理.docx》由会员分享,可在线阅读,更多相关《Java进销存管理.docx(13页珍藏版)》请在冰点文库上搜索。
Java进销存管理
信电学院
课程设计说明书
(2013/2014学年第2学期)
课程名称:
JAVA程序设计
题目:
进销存管理软件
专业班级:
学生姓名:
学号:
指导教师:
设计周数:
设计成绩:
2014年7月9日
课程设计说明书——进销存管理软件
1、软件简介
进销存管理软件是为了解决仓库进货、出货混乱,数据量较大问题而设计的一款数据处理软件。
它主要面向仓库管理人员,小型公司。
运用这款软件,可以提高工作效率,减少数据丢失,处理失误。
二、程序框架
程序整体分成两部分,分别是前台Java程序和后台数据库
前台Java程序
JTable
JComboBox
……
后台数据库:
wh_AddGoodsList
wh_SubGoodsList
wh_SortList
wh_GoodsList
wh_LinkmanList
wh_UnitList
数据
SQL语句
1.后台数据库部分
wh_AddGoodsList和wh_SubGoodsList包含如下字段
字段名称
字段类型
约束
默认值
addListId/subListId
int
主键
identity
isDisplay
bit
TRUE
soft
int
外键
goods
int
外键
addTime
datetime
(getdate())
Increment/decrement
int
unit
int
外键
linkman
int
外键
tip
ntext
wh_SortList包含如下字段
字段名称
字段类型
约束
默认值
sortListId
int
主键
identity
isDisplay
bit
TRUE
everySort
nchar(10)
wh_GoodsList
字段名称
字段类型
约束
默认值
goodsListId
int
主键
identity
isDisplay
bit
TRUE
everyGoods
nchar(10)
belongSort
int
外键
wh_LinkmanList
字段名称
字段类型
约束
默认值
linkmanListId
int
主键
identity
isDisplay
bit
TRUE
everyLinkman
nchar(10)
wh_UnitList
字段名称
字段类型
约束
默认值
unitListId
int
主键
identity
isDisplay
bit
TRUE
everyUnit
nchar(10)
SQLSever2005中数据呈现:
2.前台Java程序部分
工程src下包含如下几个包
com.hebeu.warehouse.dao
com.hebeu.warehouse.Lisener
com.hebeu.warehouse.main
com.hebeu.warehouse.model
com.hebeu.warehouse.ui
com.hebeu.warehouse.util
下面对以上几个包及其包含的class一一介绍
com.hebeu.warehouse.dao包中包含一个Dao类,这个类主要负责数据库的管理操作,从数据库中获取数据。
其中有如下方法:
publicstaticvoidexecSQL(Stringsql)
publicstaticVector>getLinkedSubGoodsVector()
publicstaticVector>getLinkedAddGoodsVector()
publicstaticVector>setDateForm(Vector>all)
publicstaticVector>getDisplayVectorFromAll(
Vector>v)
publicstaticVector>getLinkmanVector(){
returngetVector(getResultSet("SELECT*FROMwh_LinkmanList"));
}
publicstaticVector>getUnitVector(){
returngetVector(getResultSet("SELECT*FROMwh_UnitList"));
}
publicstaticVector>getSortVector(){
returngetVector(getResultSet("SELECT*FROMwh_SortList"));
}
publicstaticVector>getGoodsVector(){
returngetVector(getResultSet("SELECT*FROMwh_GoodsList"));
}
publicstaticVector>getAllSubGoodsVector(){
returngetVector(getResultSet("SELECT*FROMwh_SubGoodsList"));
}
publicstaticVector>getAllAddGoodsVector(){
returngetVector(getResultSet("SELECT*FROMwh_AddGoodsList"));
}
publicstaticResultSetgetResultSet(Stringsql)
publicstaticVector>getVector(ResultSetrs)
com.hebeu.warehouse.Lisener里包含NumberKeyListener类,主要是用来为了给TextField添加监听事件只能输入数字,代码如下:
publicclassNumberKeyListenerimplementsKeyListener{
@Override
publicvoidkeyTyped(KeyEvente){
//TODOAuto-generatedmethodstub
intkeyChar=e.getKeyChar();
if(keyChar>=KeyEvent.VK_0&&keyChar<=KeyEvent.VK_9){
}
else{
e.consume();
}
}
@Override
publicvoidkeyPressed(KeyEvente){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidkeyReleased(KeyEvente){
//TODOAuto-generatedmethodstub
}
}
com.hebeu.warehouse.main里包含程序的入口类,代码如下:
publicclassWareHouse{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
SwingConsole.run(newMainUI(),1050,700);
System.out.println("myjavaprocess");
//注册一个关机钩,当系统被退出或被异常中断时,启动这个关机钩线程
Runtime.getRuntime().addShutdownHook(newThread(){
publicvoidrun(){
//添入你想在退出JVM之前要处理的必要操作代码
try{
Dao.conn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println("数据库链接关闭");
}
});
}
}
com.hebeu.warehouse.model里包含一个记录类,其中的get、set方法不在罗列,代码如下:
publicclassRecord{
privateintid=0;
privateintisDisplay=1;
privateintsort=0;
privateintgoods=0;
privateStringdatetime=null;
privateintincOrSub=0;
privateintunit=0;
privateintlinkman=0;
privateStringtip=null;
@Override
publicStringtoString(){
return"Record[id="+id+",isDisplay="+isDisplay+",sort="
+sort+",goods="+goods+",datetime="+datetime
+",incOrSub="+incOrSub+",unit="+unit+",linkman="
+linkman+",tip="+tip+"]";
}
publicStringtoSQLForAddRecordToAddList(){
return"insertintowh_AddGoodsList(sort,goods,increment,unit,linkman,tips)values("
+"'"
+sort
+"','"
+goods
+"','"
+incOrSub
+"','"
+unit
+"','"+linkman+"','"+tip+"'"+")";
}
publicStringtoSQLForAddRecordToSubList(){
return"insertintowh_SubGoodsList(sort,goods,decrement,unit,linkman,tips)values("
+"'"
+sort
+"','"
+goods
+"','"
+incOrSub
+"','"
+unit
+"','"+linkman+"','"+tip+"'"+")";
}
publicStringtoStringForUpdRecordToAddList(){
return"updatewh_AddGoodsListsetsort="+"'"+sort+"',goods='"
+goods+"',increment='"+incOrSub+"',addTime="
+"(getdate())"+",unit='"+unit+"',linkman='"+linkman
+"',tips='"+tip+"'"+"where"+"addListId='"+id+"'";
}
publicStringtoStringForUpdRecordToSubList(){
return"updatewh_SubGoodsListsetsort="+"'"+sort+"',goods='"
+goods+"',decrement='"+incOrSub+"',subTime="
+"(getdate())"+",unit='"+unit+"',linkman='"+linkman
+"',tips='"+tip+"'"+"where"+"subListId='"+id+"'";
}
}
com.hebeu.warehouse.ui里包含很多界面类,代码较长,详情见源程序
om.hebeu.warehouse.util里包含一个将Table输出到Excel的类,代码如下:
publicclassExcelExporter{
publicstaticvoidexcelConstructor(JTabletable,Filefile)throwsIOException{
TableModelmodel=table.getModel();
FileWriterout=newFileWriter(file);
for(inti=0;iout.write(model.getColumnName(i)+"\t");
}
out.write("\n");
for(inti=0;ifor(intj=0;jout.write(model.getValueAt(i,j).toString()+"\t");
}
out.write("\n");
}
out.close();
System.out.println("writeoutto:
"+file);
}
}
3、程序运行情况
进货操作:
后台管理
使用说明:
四、心得总结
这次课程设计做作的程序,是我大学两年来自己完成的工作量最大的程序。
项目界面复杂,逻辑关系繁多,关键是自己完成,从设计,到实现,再到调试,有种午夜孤独者的感觉,不过做完了的那种成就感也是不言而喻的。
这个小程序虽说达不到商品级,但是也让我学到很多,比如说如何从数据库更新一个JTable,再由JTable生成Excel,再比如让一个空间放到一个自己想要的位置,这些都是让我头疼好久,最后解决了的问题。
通过这个程序,我觉得自己在以后的程序设计中要注意下面的几个问题:
1.一定要考虑好自己自己需要什么样的数据库表结构,主体数据是必须的,但是功能字段也是必不可少的,比如这次的isDisplay,这些都是细节,但不可或缺。
2.程序设计一定要先整体后局部,一块一块的来,逻辑复杂的要最后在实现,这样有利于程序模块化
课程设计
评语
课程设计
成绩
指导教师
(签字)
年月日