物资管理系统.docx
- 文档编号:7060021
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:37
- 大小:106.17KB
物资管理系统.docx
《物资管理系统.docx》由会员分享,可在线阅读,更多相关《物资管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
物资管理系统
«JAVA程序设计》
课程设计报告
设计题目:
物资管理系统设计与实现—
学院名称:
信息工程学院
专业班级:
姓名:
学号:
13122102
一需求分析2..
二概要设计2..
2.1概要设计的原则2.
2.2将用户需求模块化3.
2.3确定系统最终模块3.
2.4UML用例图3.
2.5模块设计4..
三详细设计5..
3.1数据库设计5.
3.2模块及窗体设计6.
3.2.1数据库模块设计6.
一需求分析
本系统的主要目的就是对物资管理的快捷管理以及对数据信息的显示,存放的
日期显示所有者等。
二概要设计
概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。
项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。
概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些
功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。
概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。
2.1概要设计的原则
概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。
概要设计要坚持以下几个原则。
(1)细分原则:
软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。
解决复杂问题的方法是将其分解成几个小问题,一个个来解决。
(2)提高代码重用性:
在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。
(3)从上而下层层分析:
概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。
(4)一致性原则:
概要设计要求所有功能模块在定义时使用统一的规范。
(5)提高独立性,减少耦合:
各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。
一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。
(6)模块的大小要尽量适中:
不是结构算法越复杂的模块越好,模块的大
小要根据实际工作目标和其他类的耦合紧密程度来决定。
经验表明,一个模块的规模不应过大,模块的总行数应控制在10~100行的范围内,最好为30~60行,这样理解和阅读都较方便。
过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。
由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。
现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。
2.2将用户需求模块化
根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语
言描述的模块。
什么样的需求才是一个模块?
模块应该具备如下3个特征。
(1)输入和输出:
模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。
(2)处理功能:
模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。
(3)程序代码:
用来实现模块功能的源代码。
2.3确定系统最终模块
概要设计中最重要的就是确定此项目包括哪些模块。
根据上两节讲述的设计
原则和模块特征,将用户需求转化为下面的模块。
*****************************************************************
*********/
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模块及窗体设计
321数据库模块设计
将数据库的连接包装在一个connect类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。
代码如下:
publicclassconnect{
privateConnectionconnection;
publicconnect(){
}
publicConnectionsql(){
Stringurl="jdbc:
sqlserver:
//127.0.0.1:
1433;DatabaseName=obj";
Stringusername="ma";
Stringpassword="123456";
//Connectionct=null;
//加载驱动程序以连接数据库
try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");connection=DriverManager.getConnection(url,username,password);
}
//捕获加载驱动程序异常
catch(Exceptione){
System.err.println("装载JDBC/ODBC驱动程序失败。
");
e.printStackTrace();
System.exit
(1);//terminateprogram
}
returnconnection;
}
publicvoidcloseAII(Connectionconn,Statementstat,ResultSetrs){if(rs!
=null){
try{rs.close();
}catch(SQLExceptione){
//TODO:
handleexceptione.printStackTrace();
}finally{if(stat!
=null){try{
stat.close();
}catch(SQLExceptione){
//TODO:
handleexceptione.printStackTrace();
}finally{if(conn匸null){try{
conn.close();
}catch(SQLExceptione){
//TODO:
handleexceptione.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.closeAII(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=nuII;
Stringquery=a;
connectt=newconnect();
connection=t.sql();
try{
statement=connection.createStatement();
statement.executeUpdate(query);t.closeAll(connection,statement,resultSet);
}catch(SQLExceptione){
//TODOAuto-generatedcatchblocks=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();〃仓U建一个Statement对象来将SQL语句发送到数据库
resultSet=statement.executeQuery(query);//数据库表的结果集返
回resultset
//在表格中显示查询结果re=displayResultSet(resultSet);〃****************调用查找表的函数
t.closeAll(connection,statement,resultSet);
}catch(SQLExceptionsqlex){sqlex.printStackTrace();
}
returnre;
}
privateVectordisplayResultSet(ResultSetrs)throwsSQLException{
//定位到达第一条记录此时查询结果已经返回到了结果集中
booleanmoreRecords=rs.next();
//如果没有记录,则提示一条消息
Vectorre=newVector();
VectorcolumnHeads=newVector();//列向量类对象
Vectorrows=newVector();
//在数据库查询的时候是以一行一行查询,带在同一行是是以列查询的
拼成一行。
try{
//获取字段的名称
ResultSetMetaDatarsmd=rs.getMetaData();//获取此ResultSet对象的列的编号、类型和属性。
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)throwsSQLException{
VectorcurrentRow=newVector();//行for(inti=1;i<=rsmd.getColumnCount();++i)currentRow.addElement(rs.getString(i));
//返回一条记录
returncurrentRow;
}}
323用户登录识别模块
'團恢谎音淫慕统I=I回
下表是他的基本属性
判断用户名和密码是否正确的成员方法代码:
publicclassJ1extendsJFrame{
JLabelJ0=newJLabe物流管理系统",JLabel.CENTER);
JLabelJ1=newJLabe账户:
");
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();//圭寸装函数
〃****************************************************************
***************************
//newconnect();//连接数据库this.setTitle(-物流管理系统");this.setSize(500,400);
this.setLocationRelativeTo(null);//设置窗口启动位置this.setVisible(true);
this.setLayout(newGridLayout(6,1));//网格布局
Containercon=this.getContentPane();//返回一个conterPanel的对象
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);
Jl.setBounds(15,20,50,20);
p[1].add(t1);
tl.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);
JBO.setBounds(20,40,80,20);
p[3].add(JB1);
JB1.setBounds(140,40,80,20);
//事件监听
JB0.addActionListener(newActionListener(){
@Override
publicvoidactionPeformed(ActionEvente){//TODOAuto-generatedmethodstub//获取文本框的数据
Stringa=t1.getText();@SuppressWarnings("deprecation")Stringb=t2.getText();getDate(a,b);
}
});
JB1.addActionListener(newActionListener(){
@Override
publicvoidactionPeformed(ActionEvente){//TODOAuto-generatedmethodstubt1.setText("");
t2.setText("");
}
});
this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit
(1);
}
});
}
privatevoidgetDate(Stringa,Stringb){
try{
//执行SQL语句
Stringquery="select*fromadmwhereYname='"+a+"'andYpassword="+b;〃拼接查询语句
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.closeAII(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;
privateJTextFieldTmingcheng;privateJButtonadd;
privateJButtoncho;
privateContainercon;
adminsert(){
//TODOAuto-generatedconstructorstubthis.setSize(500,400);this.setLocationRelativeTo(null);this.setVisible(true);
this.setLayout(newGridLayout(7,1));
biaoti=newJLabel(添加用户信息",JLabel.CENTER);biaoti.setFont(newFont("宋体",Font.BOLD,20));
//YuanGongId=newJLabel(员工id:
");
Cunfang=newJLabeI姓名:
");
leibie=newJLabel(性别:
");
mingcheng=newJLabel(年龄:
");
Oid=newJLabel(密码:
");
//TYuanGongId=newJTextField(10);
TCunfang=newJTextField(10);
Tleibie=newJTextField(10);
Tmingcheng=newJTextField(10);
TOid=newJTextField(10);
add=newJButton(添加”);cho=newJButton(重填");
con=this.getContentPane();JPanelp[]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 物资 管理 系统