商品进销存管理系统数据库课程设计报告.docx
《商品进销存管理系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《商品进销存管理系统数据库课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
商品进销存管理系统数据库课程设计报告
商品进、销、存系统
背景说明
待开发的软件系统的名称:
商品进、销、存管理系统
软件项目的用途:
用于数据库课程设计及商业用途
软件项目的范围:
系统涉及企业的库存,销售与进货提供了管理
功能,为库存,销售,进货等管理数据提供了分析功能
开发小组:
我们小组
小组成员:
组长:
曾炫
组员:
冶福磊
陈光
钟浩杰
李钦铭
指导老师:
姚全珠
在信息技术的催化之下,世界经济的变革已经进入了加速状态。
世界经济一体化,企业经营全球化,以及高度竞争造成的高度个性化与迅速改变的客户需求,令企业与顾客、企业与供方的关系变得更加密切和复杂。
强化管理,规范业务流程,提高透明度,加快商品资金周转,以及为流通领域信息管理全面网络化打下基础,是商品销售公司乃至众多商业企业梦寐以求的愿望。
随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争激烈,因此企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必然。
⒈系统规划
1.1可行性分析
经济上可行性分析
现在,计算机的价格已经十分低廉,性能却有了长足的进步。
而本系统的开发,为企业的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:
第一,本系统的运行可以代替人工进行许多繁杂的劳动;
第二,本系统的运行可以节省许多资源;
第三,本系统的运行可以大大的提高企业的工作效率;
第四,本系统可以使敏感文档更加安全,等等。
本产品的开发所需的设备在现有条件下,只需要少量的投入资金就可以实现。
因此在经济上是可行的。
技术上可行性分析
a)软件可行性
C#具有丰富的数据库功能,可以直接建立和编辑数据库,使用结构化查询语言直接访问SQLSever上的数据库,并提供简单的面向对象的库操作命令、多用户数据库的加锁机制和网络数据库的编程技术。
SQLSever2000是由微软公司推出的,能提供超大型系统所需的数据库服务,并对数据库提供全面的保护,具有防止问题发生的安全措施,他是一个采用SQL语言的关系型数据库管理系统。
作为客户机/服务器的后端数据库,他是所有数据的汇总和管理中心。
b)硬件可行性
CPU:
奔腾三代以上。
OS(操作系统):
Windows2000/windows98以上。
内存:
64MB以上。
硬盘:
30G以上。
本系统的开发利用MicrosoftSQLServer2000作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。
使用C#作为系统开发的开发环境,此开发工具开发数据库管理系统,采用面向对象的方式,方便、简捷、功能强大。
管理上可行性分析
课设指导老师给与了精心的讲解和大力的支持。
综上所述,系统在技术上、经济上、管理上都是可行的。
1.2划分子系统
各个模块的划分
1.3制定信息系统开发方案及日程安排
1.3.1任务分配
陈光:
商品入库(输入)
李钦铭:
信息查询(查询)
冶福磊:
信息修改(修改)
钟浩杰:
信息统计(统计)
曾炫:
商品销售(输出)
1.3.2计划
需求分析阶段:
用时一天。
需求分析,业务逻辑,模块化分,详细分工
编码阶段:
用时两天。
根据需求分析进行编码
整合:
待续
⒉系统分析
2.1系统流程图
业务流程图
2.2数据字典
重要数据及其简要描述如下所示:
1)数据元素:
表3.1商品编号
表3.2员工编号
名称:
员工编号总编号:
1-002
说明:
唯一标识员工编号:
002
数据值:
(连续/离散)连续有关编码说明:
类型:
(字符/数字)数字
长度:
7
有关数据结构:
员工卡片
表3.3销售编号
表3.4库存盘点票号
2)数据结构:
表3.6商品卡片
3)数据流:
表3.7操作信息
表3.9管理信息
4)数据存储:
表3.10进货一览表
表3.11销售一览表
表3.12库存一览表
5)处理过程:
表3.12销售信息单
表3.13进货信息单
表.3.14库存信息单
⒊系统设计
3.1代码设计
编码设计使数据库系统开发的前提条件,使系统不可缺少的重要内容。
编码是指与原来名称对应的符号和记号。
它是进行信息交换、处理、传输和实现信息共享的关键。
本系统内部信息编码采用顺序码和区间码混合使用:
顺序码是用一串连续的数字来代表系统中的客观实体或实体属性。
其优点是简单,容易处理,但是不能反映编码对象的特征。
所以用区间码来弥补这个缺点。
区间码是按编码的特点把代码分为若干个区段,每一个区段表示编码对象的一个类别。
合理的编码结构是信息处理系统是否具有生命力的一个重要因素,在本系统的代码设计时,遵循以下几个原则:
a)惟一性。
每个代码只能惟一地代表系统中的一个实体或实体属性。
b)标准性。
代码设计时采用国际或国家的标准代码。
c)合理性。
代码设计应该与编码对象的分类体系相适应,使代码对编码对象的分类有标识作用。
d)可扩充性。
编码时留有足够的备用代码。
e)简单性。
方便输入,提高处理效率。
f)适用性。
便于识别和记忆,使用户容易了解和掌握。
编码设计如图:
S
P
0
0
商品名称编码顺序码编码
3.2输出设计
输出设计的主要目的是满足用户和管理者对数据和信息的要求。
本系统将采用表单和查询显示输出方式,使用者可以通过多种方式获取自己所需信息。
输出设计主要考虑了以下几点:
a)方便使用者
b)考虑系统的硬件性能
c)尽量利用原系统的输出格式
d)输出表格要考虑系统的发
例如:
表3.1输出销售表
编号:
总金额:
商品编号:
商品名称
数量:
备注信息:
商品单价:
3.3输入设计
在计算机信息传统中,输入数据的正确性决定着整个系统质量的好坏。
本商品进销存管理系统主要采取以下输入方法:
1.键盘输入法:
录入人员直接通过键盘输入法将所需数据直接手工输入。
由于该系统所涉及的数据量不是很大,所已本系统将采取人工校对的方式进行数据核对。
即输入数据后,屏幕将录入的数据显示出来,由人工进行校对。
3.4数据库设计
概念结构设计过程
本次课设开发商品进、销、存管理系统,经过可行性分析、详细调查以及多次讨论,确定了该系统由商品入库、信息查询、信息修改、信息统计、商品销售五个子系统组成。
本过程结构设计过程采用自底向上的设计方法,即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构.
下面给出商品销售子系统的分析及分E-R图的设计及对其进行的各项调整。
商品入库子系统(陈光)
包含子功能:
此模块完成库存产品的输入包括库房中已有商品库存的增加以及新产品的输入信息和数量。
如果库房中已存在此商品,则不需添加此商品的商品信息,直接对商品数量做成一定的更新即可。
如果此商品为库存中已存在的商品,则应当添加对应的商品信息,包括名称,单价等。
再将新商品的数量输入数据库。
根据需求分析给出的数据流图,参照数据字典中的详细描述,给出
商品入库子系统的E-R图:
信息查询子系统(李钦铭)
包含子功能:
商品查询,销售查询,入库查询
A.商品信息查询。
{商品编号,商品名称,类型,备注,库存量}
B.销售信息查询。
{销售编号,品种数,总金额,客户名称,销售日期,流水号,商品编号,销售单价,销售数量。
}
C.入库信息查询。
{入库编号,品种数量,总计金额,入库时间,商品编号,进货单价,数量}
子系统功能:
用户可通过表中所有的属性根据需要选择自己的属性集合来对三张表的信息进行查询。
处于商品信息查询状态时有五种基本属性:
商品编号,商品名称,类型,备注,库存量。
销售信息查询状态时有九个基本属性:
销售编号,品种数,总金额,客户名称,销售日期,流水号,商品编号,销售单价,销售数量。
处于入库信息查询状态时有七个基本属性:
入库编号,品种数量,总计金额,入库时间,商品编号,进货单价,数量。
E-R图:
N
3
111
111
实体属性定义:
管理员(因系统简单,不储存管理员信息,因此不定义此实体的属性)
商品信息(商品编号、商品名称、商品单价、商品创建时间、商品备注)
销售单(销售编号、销售时间、商品编号、销售数量、销售备注)
库存单(商品编号、库存数量)
信息修改子系统(冶福磊)
子系统的功能:
A.通过商品编号查找出商品的所有信息
B.通过库存编号查找出库存的所有信息
C.通过销售编号查找出销售的所有信息
D.根据查找出来的信息,可以对这些信息进行修改
根据需求分析给出的数据流图,参照数据字典中的详细描述,给出
商品修改子系统的E-R图:
实体属性定义:
管理员(因系统简单,不储存管理员信息,因此不定义此实体的属性)
商品(商品编号、商品名称、商品单价、商品创建时间、商品备注)
销售单(销售编号、销售时间、商品编号、销售数量、销售备注)
库存单(商品编号、库存数量)
信息统计子系统(钟浩杰)
子系统的功能:
A.通过商品编号/信息查找出商品的所有信息
B.通过商品名称查找出商品的所有信息
C.对查询所得的数据分类统计,并将统计的结果以视图(View)的形式展现到用户窗口中
根据需求分析给出的数据流图,参照数据字典中的详细描述,给出
信息统计子系统的E-R图:
实体属性定义:
用户(用户名)
进销存三级数据表:
进货表(进货编号,商品编号,进货时间,进货数量,进货备注)
存货单(商品编号、商品名称、商品单价、商品创建时间、商品备注)
销售单(销售编号、销售时间、商品编号、销售数量、销售备注)
统计结果视图(需统计的信息,统计后的信息)
商品销售子系统(曾炫)
子系统的功能:
A.通过商品编号查找出商品的所有信息
B.通过商品名称查找出商品的所有信息
C.输入销售数量及备注(可为空)完成销售交易
D.可以随时查看今日销售总额
根据需求分析给出的数据流图,参照数据字典中的详细描述,给出
商品销售子系统的E-R图:
1
m
11
n
1
对E-R图调整的准则:
现实世界中的事物能作为属性对待的尽量作为属性对待;
属性和实体的划分:
属性中不具有需要描述的信息,即属性是不可分的数据项,不再包含其他信息。
具体调整如下:
1.本来顾客还应对应员工关系,但这里为了简便,员工也省略了。
2.库存单可以作为商品的一个属性来设置,但这里为了强调商品的库存情况,需要库存进行进一步的描述,因此这里作为一个实体;
逻辑结构设计
用户的需求体现在各种信息的提供、保存,更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出。
收集基本数据,数据结构以及数据处理的流程,组成一份详细的数据字典,为后面的具体设计打下基础。
设计如下数据项和数据结构:
商品信息,包括的数据项有:
商品编号,商品名称,商品单价,商品创建时间,商品备注等等。
入库单信息,包括的数据项有:
入库编号,入库时间,入库数量,商品品编号,入库备注等。
销售单信息,包括的数据项有:
销售时间,销售编号,销售数量,商品编号,销售单价,销售备注等。
库存信息,包括的数据项有:
编号,商品编号,库存数量等。
物理结构设计
有了上面的数据结构,数据项和数据流程就可以进行如下的数据库设计,要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
商品资料tb_product_info
名称
列名
数据类型
长度
允许空
其他
相关表
商品编号
proID
int
主键自增
商品名称
proName
Varchar
30
商品单价
proPrice
Varchar
50
商品创建时间
proCreateTime
datatime
商品备注
proRemark
Varchar
250
允许
入库单tb_ruku_info
名称
列名
数据类型
长度
允许空
其他
相关表
入库编号
rukuID
int
主键自增
入库时间
rukuDateTime
dataetime
入库数量
rukuAcount
int
商品编号
proID
int
参照商品资料tb_product_info
外键
入库备注
rukuRemark
Varchar
250
允许
库存单tb_kucun_info
名称
列名
数据类型
长度
允许空
其他
相关表
商品编号
proID
int
参照商品资料tb_product_info
外键
库存数量
kucunAcount
int
销售单tb_sell_info
名称
列名
数据类型
长度
允许空
其他
相关表
销售编号
sellID
int
主键自增
销售时间
sellDateTime
dataetime
商品编号
proID
int
参照商品资料tb_product_info
外键
销售数量
sellAcount
int
销售单价
proSellPrice
Varchar
50
销售备注
sellRemark
Varchar
250
允许
⒋系统实施
由于用户需求和管理需求的不确定性,系统应用环境经常发生变化,应用软件要有足够的灵活性、适应性来满足对软件的输入、输出的要求。
操作系统:
WINDOWSXP
数据库:
SQLSever2000
前台开发:
MicrosoftVisualStudio2008
5.系统测试
编程完成后,开始系统测试,不断地重复测试系统功能,使用正确数据录入,一遍遍测试系统的功能是否完成,是否能够达到需求,第二项就是出错处理,根据系统需求给每个部分可能出错的情况进行了出错处理。
6.心得体会和总结
6.1个人心得体会
陈光个人心得体会
通过这次课程设计,我不仅巩固了数据库课程中所学的各种关于Sql的知识和技巧,更重要的是我学会和实践了如何使用所学知识设计可行的,符合要求的没有冗余的数据库表。
这个是课程学习中比较缺乏的经验。
此外还提高了自己使用sqlserver的能力,和用面向对象编程语言C#的编程能力。
从数据库的设计和实施中我巩固了,如何创建数据库和表,如何创建视图,如何设置主键和外键,如何设置建的自增。
另外,由于使用NAT网络进行数据库的连接,我还特别学到了如何配置网络数据库,如何查看数据库的端口监听状态。
从c#的编程实践中我学会了如何使用面向对象的sqlclient类进行数据库的连接和调试。
重点明白了c#与数据库间建立连接后沟通和存取数据的过程和方法。
明白了Dataset,和DataAdapter以及Sqlserver之间的关系和作用机制。
DataAdapter是数据库与程序间沟通的桥梁。
使用DataAdapter的Fill方法填写DataSet供应用程序去调用。
用DataAdapter的command子类定义sql命令并执行。
这次课程设计做不同以往的地方就是在课设中使用了系统的,工程化的方法和技术。
借鉴了很过原来的成功项目的实践经验。
今后的实践和工作都应始终遵循工程化原则,以保证任务的准确和高效完成。
李钦铭个人心得体会
在此,我们的项目将告一段落,虽然对我们是皆大欢喜,然而我们并不会因此感到骄傲、自满、因为我们需要做的还很多。
让我认识最深的就是团队合作精神,这种精神在项目以及职业生涯中是不可缺少的,最后我们每一个职业人必须拥有的一种能力。
当然,我们从中也了解到编程的乐趣以及程序编写的多样性和变通性。
然而,在整个项目的开发中也暴露出了我们在知识掌握上存在的误区,同时让我们也深刻明白了“会做与做了”的区别。
所以总的来说,通过这个项目,除了技术和知识层面上的收获,值得我们去学习、深思的却更多,因为我们依然在成长!
冶福磊个人心得体会
通过这次数据库系统设计,我基本了解了整个系统的大致模型,数据库与程序之间的链接,但是在输出方面,还有一些类型不一致导致显示出错或修改出错。
所以只能将那些特殊类型的数据都改为VARCHAR类型的,这样数据失去了它的特性。
这对以后的发展是不利的,所以在以后的发展道路上我们要解决这些问题。
如果技术上允许,以后可以尝试用网站的形式来做一个这样的系统。
可能还有一大堆新知识要学习,但是我们要相信前途是光明的,我们一定要不惧困难,语言不是问题,思想才是最主要的,以后对系统的分析要更彻底,更详细,这样就可以保证在实现阶段少一些问题。
钟浩杰个人心得体会
在数据库专业课的学习中,我们接触了高移植性的SQLServer语言,在这个星期里,我们专业的学生在姚老师的带领下进行了数据库课程设计实践学习。
在这之前,我们已经学习过一个C++的课程,对数据库基础这门课程也学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,而且C#也是首次接触。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作,包括了C#插件的使用,简单的SQL语句,指针引用等。
并且,给了一个《酒店管理系统的范例》,使得第一次做的我们有一句可循。
通过此次课程设计,对于数据库的设计方法我有了基本的了解,对于C#的编程环境也有所了解。
在编写程序的过程中,我也发现了自己的很多不足,比如平日程序编写量少,使得漏洞百出,错误很多。
另外,对于this等指针的使用还不熟悉,仅仅理解,用到时却手忙脚乱。
在以后的学习过程中要注意这些问题,多向他人学习,取长补短。
总之,这次数据库课程设计对我的帮助很大,也使得将来在毕业设计中,对数据的处理,提供了一个优秀的方案。
曾炫个人心得体会
通过本次数据库课程设计,使我真正的了解了软件工程编程思想及数据库应用的开发技术,也是我第一次尝试开发项目。
虽然不是很全面,但也是一次尝试,一次团队合作。
通过本次项目开发,使我更系统的掌握了数据库的整个设计过程:
概念结构设计、逻辑结构设计、物理结构设计,更全面的理解了各个设计的衔接与分工及其联系和转化。
本次课设更是我第一次接触C#,第一次使用C#,通过半天的自学,基本上能够使用上一些功能来完成所涉及的功能,由此我又新增了更多的知识,在编程过程中曾遇到过很多问题,比如最直接的第一项就是数据库连接,C#提供了很多连接方式,更多的学习才能获得更多,各种不同方式的采用才能让系统变得更完善,其在编程过程中遇到的类型转换问题,让我受益匪浅,textbox是string类型的,在其获得数据与向其发送数据时必须强制类型转换,更学会了隐式类型转换和显式类型转换。
总之此次课设使我学到很多收获很多,更重要的是学会了团队合作项目开发。
课设总结:
●比较辛苦,我们组的成员在项目期间都是竭尽全力。
●比较充实,项目期间大家都过的比较忙碌比较充实。
●问题不断,虽然问题不少,不过最后还是被解决掉了。
●虽不完美,由于是第一次做项目,大家没有经验,不过我们自己给予自己肯定!