物资管理系统.docx
- 文档编号:23246614
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:53
- 大小:327.14KB
物资管理系统.docx
《物资管理系统.docx》由会员分享,可在线阅读,更多相关《物资管理系统.docx(53页珍藏版)》请在冰豆网上搜索。
物资管理系统
《JAVA程序设计》
课程设计报告
设计题目:
物资管理系统设计与实现
学院名称:
信息工程学院
专业班级:
姓名:
学号:
13122102
一需求分析2JMkhrDV。
二概要设计2QexDUap。
2、1概要设计得原则2QvNsTOo。
2、2将用户需求模块化3FA7B3xE。
2、3确定系统最终模块3xEpnj8z。
2、4UML用例图3ljnPMzn。
2、5模块设计4afcftVA。
三详细设计5MtAEUSj。
3、1数据库设计5HUbp7Pc。
3、2模块及窗体设计68WQT9xN。
3、2、1数据库模块设计6CWF7GmC。
一需求分析
本系统得主要目得就就是对物资管理得快捷管理以及对数据信息得显示,存放得日期显示所有者等。
二概要设计
概要设计阶段主要就是粗略描述整个软件得框架,并从业务得角度描述软件得模块、工作流程等。
项目得成功取决于设计得好坏,而概要设计则就是整个设计得关键部分。
概要设计得主要任务就是将用户得需求划分为不同得功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流得目得。
概要设计关乎到系统得整体架构,因此想做好一个概要设计,不仅仅要熟悉用户得业务流程,还要具备相当丰富得设计经验。
lLvffrT。
2、1概要设计得原则
概要设计就是根据系统分析得需求与工作环境得情况对整个软件得总体结构进行大致得设计。
概要设计要坚持以下几个原则。
j23kmYc。
(1)细分原则:
软件系统都就是由很多不同得模块组成,当设计一套软件时,要先将所有得功能分解。
解决复杂问题得方法就是将其分解成几个小问题,一个个来解决。
p6MzSJI。
(2)提高代码重用性:
在面向对象设计中,首先考虑得就就是代码得重用,一个好得设计,将来在升级换代时不需要太大得改动,节省了人力物力。
qKq02uc。
(3)从上而下层层分析:
概要设计要从整体出发,逐个剖析软件得功能,从上而下,先分析系统总得功能,然后一步步细分,直到最小得功能模块。
rCqUXJM。
(4)一致性原则:
概要设计要求所有功能模块在定义时使用统一得规范。
(5)提高独立性,减少耦合:
各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其她多处得变动,不符合面向对象得原则。
一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装得类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。
BxNp6J4。
(6)模块得大小要尽量适中:
不就是结构算法越复杂得模块越好,模块得大小要根据实际工作目标与其她类得耦合紧密程度来决定。
经验表明,一个模块得规模不应过大,模块得总行数应控制在10~100行得范围内,最好为30~60行,这样理解与阅读都较方便。
过长得模块往往就是分解不充分得表现,会增加阅读理解得难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费得开销。
68Yn09i。
由于概要设计就是整个设计得重中之重,牵一发而动全身,所以要努力做一个好得概要设计,才能在今后软件开发过程中不再反复。
现在软件行业流行模式化驱动设计,将一些市场上比较成功得模式拿来用在自己得设计中。
JW5G5N2。
2、2将用户需求模块化
根据概要设计得原则来分析一下本项目得用户需求,并最终转化成用程序语言描述得模块。
什么样得需求才就是一个模块?
模块应该具备如下3个特征。
s8vgnHG。
(1)输入与输出:
模块必须能被调用并且正确得返回调用,而且调用都就是相对一个对象而言,这就是模块独立性得一个体现。
H2mRBN4。
(2)处理功能:
模块必须可以对调用得输入数据进行灵活得处理,并为输出准备好处理结果。
(3)程序代码:
用来实现模块功能得源代码。
2、3确定系统最终模块
概要设计中最重要得就就是确定此项目包括哪些模块。
根据上两节讲述得设计原则与模块特征,将用户需求转化为下面得模块。
1fAoC9W。
**************************************************************************/zeU5nvl。
2、4UML用例图
1用户登录信息管理
2用户信息管理
2、5模块设计
1)物资信息得添加、修改、删除;
2)物资信息得查询;
3)用户得添加、查询、修改;
4)数据存储数据库中;
三详细设计
3、1数据库设计
数据库名称:
obj
表adm:
存放登陆用户得用户名与密码
表wuliu:
管理员(adm)
字段名
类型
备注
Yid
Varchar(30)
员工id
Yname
Nvarchar(50)
员工姓名
Ysex
Nchar
(1)
性别
'男'或者'女'
Yage
int
年龄
>0
Ym
int
员工密码
物资信息表(wuliu)
物资得名称字段名
类型·
备注
OleiNvchar(20)
Oname
Nvchar(20)
物资得类别
Bid
Varchar(30)
员工id
Date
Varchar(30)
存放日期
Oid
Varchar(30)
物资得id
Os
Varchar(30)
存放者
3、2模块及窗体设计
3、2、1数据库模块设计
将数据库得连接包装在一个connect类中,以便其她模块能够轻松调用,避免每次重写数据库连接代码。
代码如下:
publicclassconnect{
privateConnectionconnection;
publicconnect(){
}
publicConnectionsql(){
Stringurl="jdbc:
sqlserver:
//127、0、0、1:
1433;DatabaseName=obj";9tJFNbR。
Stringusername="ma";
Stringpassword="123456";
//Connectionct=null;
//加载驱动程序以连接数据库
try{
Class、forName("、microsoft、sqlserver、jdbc、SQLServerDriver");biwS7Lq。
connection=DriverManager、getConnection(url,username,password);8X3QPOg。
}
//捕获加载驱动程序异常
catch(Exceptione){
System、err、println("装载JDBC/ODBC驱动程序失败。
");
e、printStackTrace();
System、exit
(1);//terminateprogram
}
returnconnection;
}
publicvoidcloseAll(Connectionconn,Statementstat,ResultSetrs){LWIcTau。
if(rs!
=null){
try{
rs、close();
}catch(SQLExceptione){
//TODO:
handleexception
e、printStackTrace();
}finally{
if(stat!
=null){
try{
stat、close();
}catch(SQLExceptione){
//TODO:
handleexception
e、printStackTrace();
}finally{
if(conn!
=null){
try{
conn、close();
}catch(SQLExceptione){
//TODO:
handleexception
e、printStackTrace();
}
}
}
}
}
}
}
}
3、2、2数据得查询删除功能得封装在Mode与Stable类中
代码如下:
publicclassMode{
privateConnectionconnection;//连接信息定义
privateStatementstatement;
privateResultSetresultSet;
publicSQLExceptionzeng(Stringa){
SQLExceptions=null;
Stringquery=a;
try{
connectt=newconnect();
connection=t、sql();
statement=connection、createStatement();
statement、executeUpdate(query);
t、closeAll(connection,statement,resultSet);
}catch(SQLExceptione){
s=e;
}
returns;
}
publicSQLExceptionchange(Stringa){
SQLExceptions=null;
Stringquery=a;
connectt=newconnect();
connection=t、sql();
try{
statement=connection、createStatement();
statement、executeUpdate(query);
}catch(SQLExceptione){
s=e;
}
returns;
}
publicSQLExceptiondele(Stringa){
SQLExceptions=null;
Stringquery=a;
connectt=newconnect();
connection=t、sql();
try{
statement=connection、createStatement();
statement、executeUpdate(query);
t、closeAll(connection,statement,resultSet);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
s=e;
}
returns;
}
}
Stable类得代码如下:
publicclassStable{
privateConnectionconnection;//连接信息定义
privateStatementstatement;
privateResultSetresultSet;
privateResultSetMetaDatarsMetaData;
connectt=newconnect();
publicStable(){
}
publicVectorgetable(Stringa){
Vectorre=newVector();
connection=t、sql();//封装起来得函数
try{
//执行SQL语句
Stringquery=a;
statement=connection、createStatement();//创建一个Statement对象来将SQL语句发送到数据库waIPJ8S。
resultSet=statement、executeQuery(query);//数据库表得结果集返回resultseteLK9oWX。
//在表格中显示查询结果
re=displayResultSet(resultSet);//****************调用查找表得函数RMU0q4j。
t、closeAll(connection,statement,resultSet);
}catch(SQLExceptionsqlex){
sqlex、printStackTrace();
}
returnre;
}
privateVectordisplayResultSet(ResultSetrs)throwsSQLException{ujtkPPy。
//定位到达第一条记录此时查询结果已经返回到了结果集中
booleanmoreRecords=rs、next();
//如果没有记录,则提示一条消息
Vectorre=newVector();
VectorcolumnHeads=newVector();//列向量类对象
Vectorrows=newVector();
//在数据库查询得时候就是以一行一行查询,带在同一行就是就是以列查询得拼成一行。
try{
//获取字段得名称
ResultSetMetaDatarsmd=rs、getMetaData();//获取此ResultSet对象得列得编号、类型与属性。
gaVQyEw。
for(inti=1;i<=rsmd、getColumnCount();++i)
columnHeads、addElement(rsmd、getColumnName(i));
//获取记录集
do{
rows、addElement(getNextRow(rs,rsmd));//调用函数
}while(rs、next());
re、addElement(rows);
re、addElement(columnHeads);
returnre;
//****************************************
}catch(SQLExceptionsqlex){
sqlex、printStackTrace();
}
returnrows;
}
privateVectorgetNextRow(ResultSetrs,ResultSetMetaDatarsmd)t07KY4r。
throwsSQLException{
VectorcurrentRow=newVector();//行
for(inti=1;i<=rsmd、getColumnCount();++i)
currentRow、addElement(rs、getString(i));
//返回一条记录
returncurrentRow;
}
}
3、2、3用户登录识别模块
代码封装在类Land里,所用到得信息保存在表adm里
下表就是她得基本属性
判断用户名与密码就是否正确得成员方法代码:
publicclassJ1extendsJFrame{
JLabelJ0=newJLabel("物流管理系统",JLabel、CENTER);
JLabelJ1=newJLabel("账户:
");
JTextFieldt1=newJTextField(10);
JLabelJ2=newJLabel("密码:
");
JPasswordFieldt2=newJPasswordField(10);
JButtonJB0=newJButton("登陆");
JButtonJB1=newJButton("重填");
JPanelp[]=newJPanel[4];
JPaneltop=newJPanel();
//数据库变量
privateConnectionconnection;
privateStatementstatement;
privateResultSetresultSet;
connectt=newconnect();
J1(){
connection=t、sql();//封装函数
//*******************************************************************************************vfHHH3s。
//newconnect();//连接数据库
this、setTitle("物流管理系统");
this、setSize(500,400);
this、setLocationRelativeTo(null);//设置窗口启动位置
this、setVisible(true);
this、setLayout(newGridLayout(6,1));//网格布局
Containercon=this、getContentPane();//返回一个conterPanel得对象Qextkgt。
for(inti=0;i<4;i++){
p[i]=newJPanel();
con、add(p[i]);
}
J0、setFont(newFont("宋体",Font、BOLD,20));
p[0]、add(J0);
J0、setBounds(15,15,50,20);
p[1]、add(J1);
J1、setBounds(15,20,50,20);
p[1]、add(t1);
t1、setBounds(80,20,120,20);
p[2]、add(J2);
J2、setBounds(15,30,50,20);
p[2]、add(t2);
t2、setBounds(80,30,120,20);
p[3]、add(JB0);
JB0、setBounds(20,40,80,20);
p[3]、add(JB1);
JB1、setBounds(140,40,80,20);
//事件监听
JB0、addActionListener(newActionListener(){
Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
//获取文本框得数据
Stringa=t1、getText();
SuppressWarnings("deprecation")
Stringb=t2、getText();
getDate(a,b);
}
});
JB1、addActionListener(newActionListener(){
Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
t1、setText("");
t2、setText("");
}
});
this、addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System、exit
(1);
}
});
}
privatevoidgetDate(Stringa,Stringb){
try{
//执行SQL语句
Stringquery="select*fromadmwhereYname='"+a+"'andYpassword="+b;//拼接查询语句1cYsd6l。
statement=connection、createStatement();
resultSet=statement、executeQuery(query);
//System、out、print(query);测试拼接语
ResultSetrs=resultSet;//返回相应得对象
booleanmoreRecords=rs、next();//查询标志
//如果没有记录,则提示一条消息
if(!
moreRecords){
JOptionPane、showMessageDialog(this,"没有该账户");
setTitle("登陆错误");
return;
}else{
newzhu();
}
t、closeAll(connection,statement,resultSet);
}catch(SQLExceptionsqlex){
sqlex、printStackTrace();
JOptionPane、showMessageDialog(this,"没有该账户");
setTitle("登陆错误");
return;
}
}
publicstaticvoidmain(Stringargs[]){
newJ1();
}
}
3、2、4用户信息管理模块
(1)用户增加
用户名将自动从表adm里检索出来,供用户选择
以下就是它得基本属性
packagecn、GUI;
publicclassadminsertextendsJFrame{
privateJLabelbiaoti;
privateJLabelOid;
privateJLabelCunfang;
privateJLabelleibie;
privateJLabelmingcheng;
privateJTextFieldTOid;
privateJTextFieldTCunfang;
privateJTextFieldTleibie;
privateJTextFieldT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 物资 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)