数据库及软件工程课程设计说明书电脑配件库存管理系统_第1页
数据库及软件工程课程设计说明书电脑配件库存管理系统_第2页
数据库及软件工程课程设计说明书电脑配件库存管理系统_第3页
数据库及软件工程课程设计说明书电脑配件库存管理系统_第4页
数据库及软件工程课程设计说明书电脑配件库存管理系统_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、中北大学数据库及软件工程课 程 设 计 说 明 书   学生姓名: 学 号:学 院:电子与计算机科学技术学院专 业:题 目:电脑配件库存管理系统成绩 指导教师 2012 年 月 日1. 引言(大标题黑体小四号字)1.1 课题背景随着电子技术的不断发展,电子产品的规模不断扩大,计算机数量及其用户量的急剧增加,有关电脑配件的各种商家也随之展开,电脑配件管理系统应运而生了,它可用来管理电脑配件信息与提高系统管理工作的效率。电脑配件管理系统把microsoft visual studio 2010(前台开发)与mssqlserver2008数

2、据库(后台管理)有机地结合,并运用相关技术,完成电脑配件爱你的规范管理、科学统计和快速查询,从而可大大减少该管理上的工作量。 数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据库存储的效率,保证数据的完整性和一致性。同时,合理的数据结构也将有利于程序的顺利实现。1.2 系统开发关键技术介绍本系统采用的是microsoft visual studio 2010开发工具作为开发系统程序,采用mssqlserver2008数据库访问技术完成对数据库信息的规范管理和统计查询。mssqlserver2008使用

3、更加简单灵活的对象模型,适用于各种程序设计语言。mssqlserver2008提供执行以下操作方式:(1) 连接到数据源。(2) 指定访问数据源的命令,可以在命令中指定参数。(3) 执行命令,例如一个select语句。(4) 在适当情况下,可以把缓存行的更改内容写回数据库中,更新数据源。提供常规方法检测错误,错误通常由建立连接或执行命令造成,涉及到 sql的error对象。2 需求分析2.1.1目的本次课程设计是网络工程专业核心实践教学环节之一,是对数据库原理和软件工程两门课程知识的综合运用。通过设计,巩固所学的理论基础,加深对数据库原理和软件工程理论知识的理解,掌握软件系统设计的全过程及技术

4、与方法,培养编制软件文档及开发应用系统的能力,提高独立分析问题、解决问题的能力,锻炼和加强动手能力。2.1.2范围以电脑配件批发公司为背景,开发电脑配件库存管理系统。配件种类至少包括五种,每种配件包括至少两家供货商。(功能及相关数据可以通过调研获取,也可以进行合理假设)。2.1.3定义、缩写词、略语b/s :即浏览器/服务器结构,基于浏览器的使用。用户:用户分入库管理员、出库管理员和系统管理员,角色不同,所使用的功能不同。 网站:internet 上提供web服务的计算机。该计算机的ip绑定了域名,在浏览器输入域名就可以访问该计算机的web资源2.1.4参考资料1 齐志昌,谭庆平,宁洪.软件工

5、程,北京:高等教育出版社.20022 张海藩.软件工程导论.北京:清华大学出版社.20033 程成,陈霞.软件工程(原书第6版).北京:机械工业出版社.20034 王珊,萨师煊.数据库系统概论(第四版).北京:高等教育出版.20065 陈志泊,李冬梅,王春玲.数据库原理及应用教程.北京:人民邮电出版社.20036 郑阿奇.sql server实用教程.北京:电子工业出版社.20037 何玉洁.数据库原理与应用.北京:机械工业出版社.20072.2.1项目概述本项目所开发的电脑配件库存管理系统完成学校对入库员的选课信息的统计与管理,减少数据漏掉的情况,同时也节约人力、物力和财力。告别以往的人工统

6、计。本项目开发的软件采用 b/s结构,方便入库管理员、出库管理员、系统管理员使用,入库管理员可以再线查看可选配件信息、再线入库、信息修改、入库单查看,出库管理员可以再线出库、出库单查看,管理员可以对整个系统进行管理(包括系统管理、用户管理、库存管理).。2.2.2产品描述由于本系统的数据还算不上大型的。所以数据库服务器与web服务器共用同一台计算机。系统中的用户信息、系统信息和库存信息都放在数据库中。系统用例图下图所示由于本系统的数据还算不上大型的。所以数据库服务器与web服务器共用同一台计算机。系统中的用户信息、系统信息和库存信息都放在数据库中。(1) 入库 :入库管理员的操作。step 1

7、:成功登陆step 2:查看所有入库详单step 3:进行入库操作(2) 出库 :出库管理员的操作step 1:用户登陆step 2:进行出库操作step 3:查看相应信息(3) 管理:系统管理员可以使用管理操作2.2.3产品功能系统功能模块功能模块功能使用者增加修改供应商信息入库员,管理员增加修改配件信息入库员,管理员增加修改配件类别信息入库员,管理员入库操作入库员,管理员查看入库单、库存入库员,管理员出库操作出库员,管理员查看出库单、库存出库员,管理员用户管理管理员系统管理管理员2.2.4用户特点本项目所开发的系统用户有三类,入库员、出库员和系统管理员。当有配件入库时,入库员就可以登陆电脑

8、配件管理系统进行管理。对入库员来说,只要有一个能上网的就行可以在浏览器登陆了。当有配件出库时,出库员就可以登陆电脑配件管理系统进行管理。当管理员登陆时,可以查看所有的入库、出库情况等信息。2.2.5一般约束此系统必须满足以后限制:(1) 系统中所有账户能够供用户随时使用,能够随时使用相应功能。(2) 该系统必须确保所有数据安全,以免损失。所有用户都要登陆才能访问,每个用户只能使用所属角色的权限,必要时限定访问次数。(3) 界面友好,操作简单。(4) 软件系统开放性好,结构灵活,可扩充,方便维护。(5) 安全可靠。2.2.6假设和依据(1) 假设入库员不在仓库,照样可以入库。只要有联网的电脑且有

9、浏览器就行 。(2) 假设用户忘记密码,可与管理员联系。2.3.1功能需求描述数据库关系图如下图所有的类:入库单助手类:包括入库单的信息和入库单可以执行的操作。出库助手单类:包括出库单的信息和出库单可以执行的操作。用户助手类:包括用户的信息和用户可以执行的操作。供货商助手类:包括供货商的信息和供货商可以执行的操作。配件助手类:包括配件的信息和配件可以执行的操作。配件种类助手类:包括配件种类的信息和配件种类可以执行的操作。库存助手类:包括库存的信息和库存可以执行的操作。2.3.2类的详细说明入库单助手类:方法:增加入库单查看入库单出库单助手类方法增加出库单查看出库单用户助手类方法:增加用户删除用

10、户修改用户查询用户供货商助手类方法:增加供货商删除供货商修改供货商查询供货商配件助手类方法:增加配件删除配件修改配件查询配件配件种类助手类方法:增加配件种类删除配件种类修改配件种类查询配件种类库存助手类方法:增加库存修改库存查询库存2.3.3其它需求描述性能要求(1)对服务器的要求,必须保证系统稳定的运行。(2)对客户端,在现在使用的电脑中,联网了就行。要求不高。(3)本地系统,使用功能时,在网速好的情况下,系统响应时间为10秒以内,设计约束 数据库: sql2008 服务器操作系统:windows7 开发语言:c# .net 服务器硬件:配置稍好就行开发方式:个人开发。 进度要求2012年5

11、月 28日 5 月31日 进行需求分析;2012年6月 01日 6月 07 日 概要设计和详细设计;2012年6月 08 日 6月 14 日 编程;2012年6月15 日 6 月21日 测试、撰写课程设计说明书;2012年6月22 日 验收、成绩考核。 3.3.4交付要求该项目完成后,需向用户提交以下信息:软件需求规格说明书,电子版和纸质版。软件设计规格说明书,电子版和纸质版。(3)可运行的软件系统。(4)部分或者全部c#源码。2.3.4 用户界面 界面对于用户来说至关重要,既是用户对软件评介的根据,也是用户最终使用的。所以界面设计得怎么样,对整个系统的成功与否有着密切的联系。当然,也许界面设

12、计得好不会让其性能更好,但是设计得不好却只会让它更差。界面设计原则:一致性操作步骤少随时提示用户系统正在进行哪些操作要有撤销操作减少用户记忆的东西3 概要设计系统数据流图:系统功能机构图电脑配件信息管理系统密码登陆界面管理员登录系统入库员登录系统出库管理员 系统e-r图 用户e-r图数据库表单客户表进货单表库存表出货单表配件表配件类别表供应商表用户表4. 详细设计数据库助手类public class sqlclient private sqlconnection con; /创建连接对象 private string constr = "data source=(local);ini

13、tial catalog=computerpartsmanagement;integrated security=true" #region 构造函数 / <summary>此构造函数什么都不做,数据库的打开与关闭都被各个成员函数封装了 / / </summary> public sqlclient() #endregion #region 打开关闭数据库 / <summary>打开数据库并返回数据库连接对象(此对象可用可不用) / / </summary> public sqlconnection sqlclientopencon()

14、 / 打开数据库连接 if (con = null) con = new sqlconnection(constr); if (con.state = system.data.connectionstate.closed) con.open(); return con; / <summary>关闭数据库连接 / / </summary> public void sqlclientclosecon() if (con != null) && (con.state != system.data.connectionstate.closed) con.clos

15、e(); con = null; #endregion #region 查询信息 / <summary>仅sql语句返回符合查询条件的记录条数 / / </summary> / <param name="strsql">只接受类似select count(*) from tb_admin where 条件的指令</param> / <returns></returns> public int sqlclientselectcount(string strsql) int intresult = 0; t

16、ry sqlclientopencon(); sqlcommand cmd = new sqlcommand(strsql, con); intresult = convert.toint32(cmd.executescalar(); catch (exception ex) throw ex; finally sqlclientclosecon(); return intresult; / <summary>仅sql语句返回sqldatareader,操作完毕后必须主动调用相应函数关闭数据库 / 返回sqldatareader,操作完毕后必须主动调用相应函数关闭数据库 / *关于

17、sqldatareader:不管sqldatareader是否读取到了可用数据的行,但是一定读取到了包含列名的行; / hasrows指示是否包含可用数据的行;getname得到列名;fieldcount得到列数* / </summary> / <param name="strsql">select sql查询指令</param> / <returns></returns> public sqldatareader sqlclientdatareader(string strsql) sqldatareader o

18、lered = null; try sqlclientopencon(); sqlcommand cmd = new sqlcommand(strsql, con); olered = cmd.executereader(); catch (exception ex) throw ex; return olered; / <summary>仅sql语句返回datatable / / </summary> / <param name="strsql">select sql查询指令</param> / <returns>

19、;datatable</returns> public datatable sqlclientdatatable(string strsql) datatable datatable = new datatable(); sqldataadapter da = new sqldataadapter(); try sqlclientopencon(); sqlcommand cmd = new sqlcommand(strsql, con); cmd.commandtype = commandtype.text; da.selectcommand = cmd; da.fill(dat

20、atable); catch (exception ex) throw ex; finally sqlclientclosecon(); return datatable; / <summary>仅sql语句返回dataset / / </summary> / <param name="sqlstr">select sql查询指令</param> / <returns>dataset</returns> public dataset sqlclientdataset(string strsql) dat

21、aset ds = new dataset(); sqldataadapter da = new sqldataadapter(); try sqlclientopencon(); sqlcommand cmd = new sqlcommand(strsql, con); cmd.commandtype = commandtype.text; da.selectcommand = cmd; da.fill(ds); catch (exception ex) throw ex; finally sqlclientclosecon(); return ds; / <summary>执行

22、不带参数的(查询sql语句或存储过程) / / </summary> / <param name="cmdtext">查询sql语句或存储过程</param> / <param name="ct">commandtype类型</param> / <returns></returns> public datatable sqlclientquery(string cmdtext, commandtype ct) datatable dt = new datatable();

23、 try sqlclientopencon(); sqlcommand cmd = new sqlcommand(cmdtext, con); cmd.commandtype = ct; using (sqldatareader sdr = cmd.executereader(commandbehavior.closeconnection) dt.load(sdr); catch (exception ex) throw ex; finally sqlclientclosecon(); return dt; / <summary>执行带参数的(查询sql语句或存储过程) / / 构

24、造sqlparameter paras实例 / string strsql="select * from login where sys_user=nchar and sys_num=int" / sqlparameter paras =new sqlparameter2; / paras0 = new sqlparameter("nchar", sqldbtype.nchar); / paras0.value = "mynchar" / paras1 = new sqlparameter("int", sqldb

25、type.int); / paras1.value = 8; /myint / </summary> / <param name="cmdtext">查询sql语句或存储过程</param> / <param name="paras">sqlparameter paras =new sqlparameter2;数组</param> / <param name="ct"></param> / <returns></returns>

26、 public datatable sqlclientquery(string cmdtext, sqlparameter paras, commandtype ct) datatable dt = new datatable(); try sqlclientopencon(); sqlcommand cmd = new sqlcommand(cmdtext, con); cmd.commandtype = ct; cmd.parameters.addrange(paras); using (sqldatareader sdr = cmd.executereader(commandbehavi

27、or.closeconnection) dt.load(sdr); catch (exception ex) throw ex; finally sqlclientclosecon(); return dt; #endregion #region 增删改信息 / <summary>执行不带参数的(增删改sql语句或存储过程) / / </summary> / <param name="cmdtext">增删改sql语句或存储过程</param> / <param name="ct">comman

28、dtype类型</param> / <returns>返回受影响的行数</returns> public int sqlclientopt(string cmdtext,commandtype ct) int intresult = 0; try sqlclientopencon(); sqlcommand cmd = new sqlcommand(cmdtext, con); cmd.commandtype = ct; intresult = cmd.executenonquery(); catch (exception ex) throw ex; fin

29、ally sqlclientclosecon(); return intresult; / <summary>执行带参数的(增删改sql语句或存储过程) / / 构造sqlparameter paras实例 / string strsql="insert into login (sys_user,sys_num) values (nchar,int)" / sqlparameter paras =new sqlparameter2; / paras0 = new sqlparameter("nchar", sqldbtype.nchar);

30、/ paras0.value = "mynchar" / paras1 = new sqlparameter("int", sqldbtype.int); / paras1.value = 8; /myint / </summary> / <param name="cmdtext">增删改sql语句或存储过程</param> / <param name="paras">sqlparameter paras =new sqlparameter2;数组</param

31、> / <param name="ct"></param> / <returns>返回受影响的行数</returns> public int sqlclientopt(string cmdtext, sqlparameter paras, commandtype ct) int intresult = 0; try sqlclientopencon(); sqlcommand cmd = new sqlcommand(cmdtext, con); cmd.commandtype = ct; /* foreach (sql

32、parameter p in paras) cmd.parameters.add(p); */ cmd.parameters.addrange(paras); intresult = cmd.executenonquery(); catch (exception ex) throw ex; finally sqlclientclosecon(); return intresult; #endregion/endsqlclientclass用户助手类/ <summary>/userhelper 的摘要说明/ </summary>public class userhelpe

33、rpublic userhelper()/todo: 在此处添加构造函数逻辑/ sqlclient sqlclient = new sqlclient(); / <summary>查询用户表 / / </summary> / <returns></returns> public datatable selpass() datatable dt = new datatable(); dt = sqlclient.sqlclientquery("select * from dbo.table_user", commandtype.

34、text); return dt; / <summary>通过用户名查询用户表 / / </summary> / <param name="userid"></param> / <returns></returns> public datatable selpass(string username) datatable dt = new datatable(); sqlparameter paras = new sqlparameter new sqlparameter("username&q

35、uot;,username), ; dt = sqlclient.sqlclientquery("select * from dbo.table_user where dbo.table_user.username = username", paras,commandtype.text); return dt; / <summary> 通过id查询用户表 / / </summary> / <param name="id"></param> / <returns></returns>

36、public datatable selid(string id) sqlparameter paras = new sqlparameter new sqlparameter("id", id), ; datatable dt = new datatable(); dt = sqlclient.sqlclientquery("select * from dbo.table_user where userid = id", paras, commandtype.text); return dt; / <summary>增加用户 / / <

37、;/summary> / <param name="name"></param> / <param name="pass"></param> / <param name="perm"></param> / <returns></returns> public bool insertuser(string name, string pass, string perm) bool r = false; int i; sqlparamete

38、r paras = new sqlparameter new sqlparameter("name", name), new sqlparameter("pass", pass), new sqlparameter("perm",perm) ; i = sqlclient.sqlclientopt("insert into table_user (username,password,permissions) values (name,pass,perm)", paras, commandtype.text); if

39、 (i > 0) r = true; return r; / <summary>删除用户 / / </summary> / <param name="id"></param> / <returns></returns> public bool deluser(string id) bool r = false; int i; sqlparameter paras = new sqlparameter new sqlparameter("id", id), ; i = sqlcl

40、ient.sqlclientopt("delete from table_user where userid = id", paras, commandtype.text); if (i > 0) r = true; return r; / <summary>修改用户 / / </summary> / <param name="id"></param> / <param name="name"></param> / <param name="

41、pass"></param> / <param name="perm"></param> / <returns></returns> public bool updateuser(string id, string name, string pass, string perm) bool r = false; int i; sqlparameter paras = new sqlparameter new sqlparameter("id", id), new sqlparame

42、ter("name", name), new sqlparameter("pass", pass), new sqlparameter("perm",perm) ; i = sqlclient.sqlclientopt("update table_user set username=name,password = pass,permissions = perm where userid = id", paras, commandtype.text); if (i > 0) r = true; return r

43、; 供应商助手类public class supplierhelperpublic supplierhelper()/todo: 在此处添加构造函数逻辑/ sqlclient sqlclient = new sqlclient(); / <summary>增加供应商 / / </summary> / <param name="name"></param> / <param name="tel"></param> / <returns></returns> pu

44、blic bool insertsupplier(string name, string tel) bool r = false; int i; sqlparameter paras = new sqlparameter new sqlparameter("name", name), new sqlparameter("tel", tel) ; i = sqlclient.sqlclientopt("insert into table_supplier (suppliername,suppliertel) values (name,tel)&q

45、uot;,paras, commandtype.text); if (i > 0) r = true; return r; / <summary>查询供应商表 / / </summary> / <returns></returns> public datatable selsupplier() datatable dt = new datatable(); dt = sqlclient.sqlclientquery("select * from dbo.table_supplier", commandtype.text); return dt; / <summary>查询供应商表根据id / / </summary> / <param name="id"></param> / <returns></returns> public datatable selsupplier

温馨提示

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

评论

0/150

提交评论