电脑配件库存管理系统设计论文.docx
《电脑配件库存管理系统设计论文.docx》由会员分享,可在线阅读,更多相关《电脑配件库存管理系统设计论文.docx(66页珍藏版)》请在冰豆网上搜索。
电脑配件库存管理系统设计论文
资料范本
本资料为word版本,可以直接编辑和打印,感谢您的下载
电脑配件库存管理系统设计论文
地点:
__________________
时间:
__________________
说明:
本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容
中北大学
数据库及软件工程
课程设计说明书
2012年月日
1.引言(大标题黑体小四号字)
1.1课题背景
随着电子技术的不断发展,电子产品的规模不断扩大,计算机数量及其用户量的急剧增加,有关电脑配件的各种商家也随之展开,电脑配件管理系统应运而生了,它可用来管理电脑配件信息与提高系统管理工作的效率。
电脑配件管理系统把MicrosoftVisualStudio2010(前台开发)与MSSQLserver2008数据库(后台管理)有机地结合,并运用相关技术,完成电脑配件爱你的规范管理、科学统计和快速查询,从而可大大减少该管理上的工作量。
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据库存储的效率,保证数据的完整性和一致性。
同时,合理的数据结构也将有利于程序的顺利实现。
1.2系统开发关键技术介绍
本系统采用的是MicrosoftVisualStudio2010开发工具作为开发系统程序,采用MSSQLserver2008数据库访问技术完成对数据库信息的规范管理和统计查询。
MSSQLserver2008使用更加简单灵活的对象模型,适用于各种程序设计语言。
MSSQLserver2008提供执行以下操作方式:
连接到数据源。
指定访问数据源的命令,可以在命令中指定参数。
执行命令,例如一个SELECT语句。
在适当情况下,可以把缓存行的更改内容写回数据库中,更新数据源。
提供常规方法检测错误,错误通常由建立连接或执行命令造成,涉及到SQL的error对象。
需求分析
2.1.1目的
本次课程设计是网络工程专业核心实践教学环节之一,是对《数据库原理》和《软件工程》两门课程知识的综合运用。
通过设计,巩固所学的理论基础,加深对数据库原理和软件工程理论知识的理解,掌握软件系统设计的全过程及技术与方法,培养编制软件文档及开发应用系统的能力,提高独立分析问题、解决问题的能力,锻炼和加强动手能力。
2.1.2范围
以电脑配件批发公司为背景,开发电脑配件库存管理系统。
配件种类至少包括五种,每种配件包括至少两家供货商。
(功能及相关数据可以通过调研获取,也可以进行合理假设)。
2.1.3定义、缩写词、略语
B/S:
即浏览器/服务器结构,基于浏览器的使用。
用户:
用户分入库管理员、出库管理员和系统管理员,角色不同,所使用的功能不同。
网站:
Internet上提供Web服务的计算机。
该计算机的IP绑定了域名,在浏览器输入域名就可以访问该计算机的web资源
2.1.4参考资料
[1]齐志昌,谭庆平,宁洪.软件工程,北京:
高等教育出版社.2002
[2]张海藩.软件工程导论.北京:
清华大学出版社.2003
[3]程成,陈霞.软件工程(原书第6版).北京:
机械工业出版社.2003
[4]王珊,萨师煊.数据库系统概论(第四版).北京:
高等教育出版.2006
[5]陈志泊,李冬梅,王春玲.数据库原理及应用教程.北京:
人民邮电出版社.2003
[6]郑阿奇.SQLServer实用教程.北京:
电子工业出版社.2003
[7]何玉洁.数据库原理与应用.北京:
机械工业出版社.2007
2.2.1项目概述
本项目所开发的电脑配件库存管理系统完成学校对入库员的选课信息的统计与管理,减少数据漏掉的情况,同时也节约人力、物力和财力。
告别以往的人工统计。
本项目开发的软件采用B/S结构,方便入库管理员、出库管理员、系统管理员使用,入库管理员可以再线查看可选配件信息、再线入库、信息修改、入库单查看,出库管理员可以再线出库、出库单查看,管理员可以对整个系统进行管理(包括系统管理、用户管理、库存管理).。
2.2.2产品描述
由于本系统的数据还算不上大型的。
所以数据库服务器与web服务器共用同一台计算机。
系统中的用户信息、系统信息和库存信息都放在数据库中。
系统用例图下图所示
由于本系统的数据还算不上大型的。
所以数据库服务器与web服务器共用同一台计算机。
系统中的用户信息、系统信息和库存信息都放在数据库中。
(1)入库:
入库管理员的操作。
Step1:
成功登陆
Step2:
查看所有入库详单
Step3:
进行入库操作
(2)出库:
出库管理员的操作
Step1:
用户登陆
Step2:
进行出库操作
Step3:
查看相应信息
(3)管理:
系统管理员可以使用管理操作
2.2.3产品功能
系统功能模块
2.2.4用户特点
本项目所开发的系统用户有三类,入库员、出库员和系统管理员。
当有配件入库时,入库员就可以登陆电脑配件管理系统进行管理。
对入库员来说,只要有一个能上网的就行可以在浏览器登陆了。
当有配件出库时,出库员就可以登陆电脑配件管理系统进行管理。
当管理员登陆时,可以查看所有的入库、出库情况等信息。
2.2.5一般约束
此系统必须满足以后限制:
系统中所有账户能够供用户随时使用,能够随时使用相应功能。
该系统必须确保所有数据安全,以免损失。
所有用户都要登陆才能访问,每个用户只能使用所属角色的权限,必要时限定访问次数。
界面友好,操作简单。
软件系统开放性好,结构灵活,可扩充,方便维护。
安全可靠。
2.2.6假设和依据
假设入库员不在仓库,照样可以入库。
只要有联网的电脑且有浏览器就行。
假设用户忘记密码,可与管理员联系。
2.3.1功能需求描述
数据库关系图如下图
所有的类:
入库单助手类:
包括入库单的信息和入库单可以执行的操作。
出库助手单类:
包括出库单的信息和出库单可以执行的操作。
用户助手类:
包括用户的信息和用户可以执行的操作。
供货商助手类:
包括供货商的信息和供货商可以执行的操作。
配件助手类:
包括配件的信息和配件可以执行的操作。
配件种类助手类:
包括配件种类的信息和配件种类可以执行的操作。
库存助手类:
包括库存的信息和库存可以执行的操作。
2.3.2类的详细说明
入库单助手类:
方法:
增加入库单
查看入库单
出库单助手类
方法
增加出库单
查看出库单
用户助手类
方法:
增加用户
删除用户
修改用户
查询用户
供货商助手类
方法:
增加供货商
删除供货商
修改供货商
查询供货商
配件助手类
方法:
增加配件
删除配件
修改配件
查询配件
配件种类助手类
方法:
增加配件种类
删除配件种类
修改配件种类
查询配件种类
库存助手类
方法:
增加库存
修改库存
查询库存
2.3.3 其它需求描述
性能要求
(1)对服务器的要求,必须保证系统稳定的运行。
(2)对客户端,在现在使用的电脑中,联网了就行。
要求不高。
(3)本地系统,使用功能时,在网速好的情况下,系统响应时间为10秒以内,
设计约束
数据库:
SQL2008
服务器操作系统:
windows7
开发语言:
C#.NET
服务器硬件:
配置稍好就行
开发方式:
个人开发。
进度要求
2012年5月28日~5月31日进行需求分析;
2012年6月01日~6月07日概要设计和详细设计;
2012年6月08日~6月14日编程;
2012年6月15日~6月21日测试、撰写课程设计说明书;
2012年6月22日验收、成绩考核。
3.3.4 交付要求
该项目完成后,需向用户提交以下信息:
=1\*GB2⑴软件需求规格说明书,电子版和纸质版。
=2\*GB2⑵软件设计规格说明书,电子版和纸质版。
(3)可运行的软件系统。
(4)部分或者全部C#源码。
2.3.4用户界面
界面对于用户来说至关重要,既是用户对软件评介的根据,也是用户最终使用的。
所以界面设计得怎么样,对整个系统的成功与否有着密切的联系。
当然,也许界面设计得好不会让其性能更好,但是设计得不好却只会让它更差。
界面设计原则:
一致性
操作步骤少
随时提示用户系统正在进行哪些操作
要有撤销操作
减少用户记忆的东西
概要设计
系统数据流图:
系统功能机构图
电脑配件信息管理系统
密码登陆界面
管理员登录系统
入库员登录系统
出库管理员
系统E-R图
用户E-R图
数据库表单
客户表
进货单表
库存表
出货单表
配件表
配件类别表
供应商表
用户表
4.详细设计
数据库助手类
publicclassSqlClient
{
privateSqlConnectioncon;//创建连接对象
privatestringConStr="DataSource=(local);InitialCatalog=ComputerPartsManagement;IntegratedSecurity=True";
#region构造函数
///此构造函数什么都不做,数据库的打开与关闭都被各个成员函数封装了
///
///
publicSqlClient()
{
}
#endregion
#region打开关闭数据库
///打开数据库并返回数据库连接对象(此对象可用可不用)
///
///
publicSqlConnectionSqlClientOpenCon()
{
//打开数据库连接
if(con==null)
{
con=newSqlConnection(ConStr);
}
if(con.State==System.Data.ConnectionState.Closed)
con.Open();
returncon;
}
///关闭数据库连接
///
///
publicvoidSqlClientCloseCon()
{
if((con!
=null)&&(con.State!
=System.Data.ConnectionState.Closed))
{
con.Close();
con=null;
}
}
#endregion
#region查询信息
///仅SQL语句返回符合查询条件的记录条数
///
///
///只接受类似[selectcount(*)fromtb_Adminwhere条件]的指令
///
publicintSqlClientSelectCount(stringstrsql)
{
intintResult=0;
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(strsql,con);
intResult=Convert.ToInt32(cmd.ExecuteScalar());
}
catch(Exceptionex)
{
throwex;
}
finally
{
SqlClientCloseCon();
}
returnintResult;
}
///仅SQL语句返回SqlDataReader,操作完毕后必须主动调用相应函数关闭数据库
///返回SqlDataReader,操作完毕后必须主动调用相应函数关闭数据库
///*关于SqlDataReader:
不管SqlDataReader是否读取到了可用数据的行,但是一定读取到了包含列名的行;
///HasRows指示是否包含可用数据的行;GetName得到列名;FieldCount得到列数*
///
///SELECTsql查询指令
///
publicSqlDataReaderSqlClientDataReader(stringstrsql)
{
SqlDataReaderoleRed=null;
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(strsql,con);
oleRed=cmd.ExecuteReader();
}
catch(Exceptionex)
{
throwex;
}
returnoleRed;
}
///仅SQL语句返回DataTable
///
///
///SELECTsql查询指令
///DataTable
publicDataTableSqlClientDataTable(stringstrsql)
{
DataTabledatatable=newDataTable();
SqlDataAdapterda=newSqlDataAdapter();
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(strsql,con);
cmd.CommandType=CommandType.Text;
da.SelectCommand=cmd;
da.Fill(datatable);
}
catch(Exceptionex)
{
throwex;
}
finally
{
SqlClientCloseCon();
}
returndatatable;
}
///仅SQL语句返回DataSet
///
///
///SELECTsql查询指令
///DataSet
publicDataSetSqlClientDataSet(stringstrsql)
{
DataSetds=newDataSet();
SqlDataAdapterda=newSqlDataAdapter();
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(strsql,con);
cmd.CommandType=CommandType.Text;
da.SelectCommand=cmd;
da.Fill(ds);
}
catch(Exceptionex)
{
throwex;
}
finally
{
SqlClientCloseCon();
}
returnds;
}
///执行不带参数的(查询SQL语句或存储过程)
///
///
///查询SQL语句或存储过程
///CommandType类型
///
publicDataTableSqlClientQuery(stringcmdText,CommandTypect)
{
DataTabledt=newDataTable();
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(cmdText,con);
cmd.CommandType=ct;
using(SqlDataReadersdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
}
catch(Exceptionex)
{
throwex;
}
finally
{
SqlClientCloseCon();
}
returndt;
}
///执行带参数的(查询SQL语句或存储过程)
///
///构造SqlParameter[]paras实例
///stringstrSql="select*fromloginwheresys_user=@ncharandsys_num=@int";
///SqlParameter[]paras=newSqlParameter[2];
///paras[0]=newSqlParameter("@nchar",SqlDbType.NChar);
///paras[0].Value="mynchar";
///paras[1]=newSqlParameter("@int",SqlDbType.Int);
///paras[1].Value=8;//myint
///
///查询SQL语句或存储过程
///SqlParameter[]paras=newSqlParameter[2];数组
///
///
publicDataTableSqlClientQuery(stringcmdText,SqlParameter[]paras,CommandTypect)
{
DataTabledt=newDataTable();
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(cmdText,con);
cmd.CommandType=ct;
cmd.Parameters.AddRange(paras);
using(SqlDataReadersdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
}
catch(Exceptionex)
{
throwex;
}
finally
{
SqlClientCloseCon();
}
returndt;
}
#endregion
#region增删改信息
///执行不带参数的(增删改SQL语句或存储过程)
///
///
///增删改SQL语句或存储过程
///CommandType类型
///返回受影响的行数
publicintSqlClientOpt(stringcmdText,CommandTypect)
{
intintResult=0;
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(cmdText,con);
cmd.CommandType=ct;
intResult=cmd.ExecuteNonQuery();
}
catch(Exceptionex)
{
throwex;
}
finally
{
SqlClientCloseCon();
}
returnintResult;
}
///执行带参数的(增删改SQL语句或存储过程)
///
///构造SqlParameter[]paras实例
///stringstrSql="insertintologin(sys_user,sys_num)values(@nchar,@int)";
///SqlParameter[]paras=newSqlParameter[2];
///paras[0]=newSqlParameter("@nchar",SqlDbType.NChar);
///paras[0].Value="mynchar";
///paras[1]=newSqlParameter("@int",SqlDbType.Int);
///paras[1].Value=8;//myint
///
///增删改SQL语句或存储过程
///SqlParameter[]paras=newSqlParameter[2];数组
///
///返回受影响的行数
publicintSqlClientOpt(stringcmdText,SqlParameter[]paras,CommandTypect)
{
intintResult=0;
try
{
SqlClientOpenCon();
SqlCommandcmd=newSqlCommand(cmdText,con);
cmd.CommandType=ct;
/*
foreach(SqlParameterpinparas)
{
cmd.Parameters.Add(p);
}
*/
cmd.Parameters.AddRange(paras);
intResult=cmd.ExecuteNonQuery();
}
catch(Exceptionex)
{
throwex;
}
finally
{
SqlClientCloseCon();
}
returnintResult;
}
#endregion
}//endSqlClientClass
用户助手类
///
///UserHelper的摘要说明
///
publicclassUserHelper
{
publicUserHelper()
{
//
//TODO:
在此处添加构造函数逻辑
//
}