大型数据库课程设计论文.docx
《大型数据库课程设计论文.docx》由会员分享,可在线阅读,更多相关《大型数据库课程设计论文.docx(42页珍藏版)》请在冰点文库上搜索。
大型数据库课程设计论文
学号:
课程设计
课程名
大型数据库
题目
销售管理系统
学院
计算机科学与信息工程学院
专业
计算机科学与技术
班级
嵌入式
学生姓名
指导教师
2011
年
12
月
25
日
重庆工商大学课程设计成绩评定表
学院:
计信学院班级:
学生姓名:
学号:
项目
分值
优秀
(100>x≥90)
良好
(90>x≥80)
中等
(80>x≥70)
及格
(70>x≥60)
不及格(x<60)
评分
参考标准
参考标准
参考标准
参考标准
参考标准
学习态度
15
学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作
学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务
学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作
学习态度尚可,能遵守组织纪律,能按期完成任务
学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度
技术水平与实际能力
25
设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信
设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信
设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信
设计基本合理,理论分析与计算无大错,实验数据无大错
设计不合理,理论分析与计算有原则错误,实验数据不可靠,实际动手能力差,文献引用、调查调研有较大的问题
创新
10
有重大改进或独特见解,有一定实用价值
有较大改进或新颖的见解,实用性尚可
有一定改进或新的见解
有一定见解
观念陈旧
论文(计算书、图纸)撰写质量
50
结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰
结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰
结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰
结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整
内容空泛,结构混乱,文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰
指导教师评定成绩:
指导教师签名:
年月日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
已知技术参数和设计要求:
调查书店图书销售业务,设计的图书销售系统主要包括进货、退货、统计、销售
功能。
1、进货:
根据某种书籍的库存量及销售情况确定进货数量,根据供应商报价选择供应
商。
输出一份进货单并自动修改库存量,把本次进货的信息添加到进货库中。
2、退货:
顾客把己买的书籍退还给书店。
输出一份退货单并自动修改库存量,把本次
退货的信息添加到退货库中。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
完成的任务:
实现了各类订单的生成以及根据订单修改库存的图书存储量。
时间安排:
2011年12月9日-2011年12月25日
指导教师签名:
年月日
《大型数据库》课程设计
题目:
销售管理系统
班级:
姓名:
学号:
指导教师:
完成日期:
2011年12月15日
1.项目概述
书店为了对图书的采购、销售信息的管理,就需要一个方便快捷的软件来对此进行系统的、高效的操作。
该图书管理系统操作节目简洁,实用,能够在较短时间内掌握使用方法。
1.1功能概述
通过初步分析,得到销售管理系统的主要功能如下:
·用户登陆验证
·用户信息维护
·图书信息维护
·供应商信息维护
·采购入库订单生成
·采购退货订单生成
·销售出库订单生成
·销售退货订单生成
·库存查询
1.2可行性分析
从投资角度看,本系统能够提高业务的运转效率和企业的市场竞争力,采用计算机软件管理,可以降低运营成本,减少员工的工作量。
该系统运用.NET平台和Oracle数据库,能够有效的帮助企业管理业务,能够满足企业的需要。
再者,现在运用计算机软件管理企业业务已经是一种趋势,运用软件可以减少员工手工记账是的错误,大大的提高了企业的营业效率。
2.项目需求分析
2.1系统功能需求分析
分析得出销售管理系统的使用者分为三类:
销售人员、采购人员以及管理人员。
于是对三者收集需求,统计得到如下表所示的功能需求。
根据用户的需求,可以把模块划分为如表2-2所示,并对其模块进行划分和功能描述。
2.2系统总用例分析
图2-1系统总用例
2.3系统用例分析
·描述:
提供维护员工信息、维护图书信息、维护供应商信息(删除操作在库存不为0是不能进行图书信息删除)。
·参与者:
管理者。
·用例图:
图2-2.
图2-2基本信息维护用例
·描述:
提供采购图书入库(若新增图书,则该图书的库存量为0,需要在采购界面输入采购数量)的功能。
·参与者:
采购员.
·用例图:
图2-3
图2-3采购用例图
·描述:
提供图书库存盘点。
·参与者:
系统管理员、采购员、销售员
·用例图:
图2-4
图2-4库存管理用例图
·描述:
生成销售订单与销售退货订单。
·参与者:
销售员。
·用例图:
图2-5
图2-5销售用例图
2.4系统流程分析
了解用户需求之后,就能够根据用户需求来设定系统的流程,下面就是整个销售系统的流程图,如图2-7所示。
图2-7销售系统流程图
2.5模块分析
通过上面的分析能够得出该系统的模块结构图如图2-8所示
图2-8销售系统模块结构图
3.系统详细设计
3.1数据库逻辑结构设计
3.2表设计
在Oracle中设计的数据库名字为BookSaleD,其中包含用户信息表,供应商信息表,图书信息表,库存表,订单表。
用户表(用户编号,用户帐号,用户密码,用户名称,权限);
供应商表格(供应商编号,供应商名称,负责人,联系,地址);
图书信息(图书编号,图书名称,价格,折扣,出版日期,供应商编号,图书类型);
库存表(库存编号,图书编号,图书名称,库存数量,最低数量);
订单表(订单编号,日期,操作员,图书名称,数量,订单类型,判断符号)。
3.3后台数据库设计及重要的PL&SQL代码
首先开辟一个新的表空间:
createtableplacebooksaledbdatafile
然后建立一个新的用户:
createuserbooksaleidentifiedbyzhbsm0010defaulttablespacebooksaledb;
对用户授权,由于该用户会执行很多操作,因此这里授予最高的dba权限(该操作是在sysdba用户先操作的):
Grantdbatobooksale;
图书信息表,用来存储图书的各种信息。
PL&SQL代码如下:
createtableBookInfo
(BookIdvarchar2(22)primarykey,
BookNamevarchar2(50)notnull,
BookPricenumber(10,2)notnull,
BookRatenumber(3,2)notnull,
BookDatedatenotnull,
BookProviderIdintnotnull,
BookTypevarchar2(50)notnull,
foreignkey(BookProviderId)referencesProviders(PrivId))
用户信息表,用来存储用户的基本信息。
其中用户权限一项0表示管理员,1表示销售员,2表示采购员。
createtableUserInfo
(UserIdintprimarykey,
UserLonginIDvarchar2(20)notnull,
UserNamevarchar2(20)notnull,
UserPassvarchar2(20)notnull,
UserRoleintnotnull)
供应商表,及图书出版社,用户存储供应商的基本信息。
createtableProviders
(PrivIdintprimarykey,
PrivNamevarchar2(20)notnull,
PrivLinkManvarchar2(20)notnull,
privTelvarchar2(20)notnull,
PrivAdrvarchar2(50)notnull)
订单表,用来存储订单的信息。
其中在订单类型一栏中0表示采购入库,1表示采购退货,2表示销售出库,3表示销售退货出库,还有订单新旧判断列0代表是新订单,1代表是已经经过库存盘点之后的订单。
createtableOrders
(OrderIdintprimarykey,
OrderTimetimestampwithtimezonedefaultsystimestampnotnull,
UserIdintnotnull,
boonnamevarchar2(50)notnull;
OrderQualityintnotnull,
OrderTypeintnotnull,
OrderJudgeintnotnull,
foreignkey(UserId)referencesUserInfo(UserId))
库存表,显示图书的库存量,以及产生采购订单的标准。
createtableStoreRoom
(StoreIDintprimarykey,
BookIdvarchar2(22)notnull,
BookNamevarchar2(50)notnull,
StoreSumintnotnull,
StoreLastNumintnotnull,
foreignkey(BookId)referencesBookInfo(BookId))
另外,在数据库设计中还设计了几个递增序号,分别是:
UserId,StoreID,OrderId,PrivId。
产生序列号的代码如下:
首先对用户授权:
grantcreatesequencetoBookSale
然后建立序列号,由于序列号建立的代码格式一样,因此这里只列出建立orderid的代码:
createsequenceorderidINCREMENTby1STARTwith1NOCYCLE
建立了序列号之后,用触发器来产生递增的列下面是在orders表上建立的orderid递增的触发器,每当插入一张订单,订单编号就增加1,代码如下:
createorreplacetriggerorders_trigger
beforeinsertonordersforeachrow
begin
selectorderid.nextvalinto:
new.orderidfromdual;
end;
3.3前台开发
前台开发使用的是.net开发工具,.net能够支持Oracle数据库的连接,而且提供了大量的控件,便于界面设计。
能够有效的提高开发效率。
系统登陆界面提供给用户登陆系统的可视操作,用户根据相应的用户名,密码,登陆权限登陆系统。
不同的权限在会拥有不同的操作界面。
图3-2系统登陆界面
主界面是根据不同的权限的用户设计的一个菜单界面,用户在这个界面可以根据自己的权限与操作要求选择相应的操作。
选这操作之后会打开子窗口,进行下面的操作。
图3-3系统主界面
基本信息界面是只有拥有管理员权限的用户才能够操作的界面,才这个界面中有员工信息、图书信息、供应商信息三个选项,分别对应员工信息更新,图书信息更新,供应商信息跟新。
采购界面是采购员生成采购订单的界面,采购订单包括采购与退货的订单。
采购员对图书进行相关采购之后,可以生成采购订单,以便对于库存的管理。
图3-4采购订单生成界面
图3-5采购退货订单生成界面
销售界面是销售员生成销售订单的界面,销售订单包括正常销售和销售退货。
销售员在图书销售时产生销售订单,以便对库存进行管理。
图3-6销售退货订单生成界面
库存界面是根据各种订单对库存进行相关的管理的界面。
在库存界面可以根据订单修改库存图书的相关信息。
也可以查看订单的相关信息,从而能够统计订单的各种信息,对图书销售进行汇总。
图3-7盘点库存—采购退货订单
图3-8库存盘点-采购订单
图3-9库存盘点-销售订单
图3-10库存盘点-销售退货订单
3.4功能实现
该系统主要实现的功能有,根据对库存图书的存储量产生采购订单,退货订单。
根据销售的图书两产生销售订单,然后如果有顾客退还所购买的图书,要产生销售退货订单,然后更加订单再修改库存中的图书存量。
图3-11系统实验的功能关系
输入图书名称可以查看库存中的该种图书存量与和该图书有关的订单。
根据库存量与订单可以决定需要采购的图书数量。
在输入图书名称和采购数量,点击“生成采购订单”就能够产生新的采购订单。
图3-12采购订单生成功能
入图书名称可以查看库存中的该种图书存量与和该图书有关的订单。
根据库存量与订单可以决定需要退货的图书数量。
在输入图书名称和采购数量,点击“生成订单”就能够产生新的退货订单。
图3-13退货订单生成实现
入图书名称可以查看库存中的该种图书存量与和该图书有关的订单。
根据库存量与订单可以决定需要退货的图书数量。
在输入图书名称和退货数量,点击“生成订单”就能够产生新的退货订单。
图3-14销售退货订单生成
点击订单查询可以查看新的采购订单,根据图书库存,输入图书名称,图书数量,和订单编号可以修改图书的库存量和改变订单是成为已经使用过的订单。
查询功能可以查看该图书在库存中的存储量。
图3-15盘点-采购入库
点击订单查询可以查看新的退货订单,根据图书库存,输入图书名称,图书数量,和订单编号可以修改图书的库存量和改变订单是成为已经使用过的订单。
查询功能可以查看该图书在库存中的存储量。
图3-16盘点-采购退货
点击订单查询可以查看新的销售退货订单,根据图书库存,输入图书名称,图书数量,和订单编号可以修改图书的库存量和改变订单是成为已经使用过的订单。
查询功能可以查看该图书在库存中的存储量。
图3-17盘点-销售退货
4.开发心得
通过图书销售系统的开发,让我了解到一个一项目开发的大致过程,虽然这个系统某些功能根据课程设计的要求并没有开发实现。
但是就这个系统目前能实现的功能来说,即使有些地方不够完善,但是对于我来说这也是一个新的里程碑。
这个系统的开发,不仅让我了解了有关Oracle数据库的知识,还有.NET的有关知识,认识的在大学很多知识并不是从课堂上来的,更多的是靠自己平时学习慢慢积累的。
每次课程设计都有不同的收获,这次也一样。
这次课程设计我就靠自己学会了C#的相关编程和一种关于Oracle的PL&SQL的有关知识。
这对我能完成这次项目开发有很大的帮助。
参考文献:
1.秦倩、石叶平,精通C#与.NET4.0数据库开发,北京,清华大学出版社,2011.1
2.萧文龙、陈怡如,Oracle10g数据库入门与实践,北京,清华大学出版社出版社,2006.1
3.(美)凯特著,苏金国等译,Oracle9i&10g编程艺术:
深入数据库体系结构,北京,人民邮电出版社,2006.1
附录1:
数据库相关代码
createsequenceorderidINCREMENTby1STARTwith1NOCYCLE;
/
createorreplacetriggerorders_trigger
beforeinsertonordersforeachrow
begin
selectorderid.nextvalinto:
new.orderidfromdual;
end;
/
createsequenceuseridINCREMENTby1STARTwith1NOCYCLE;
/
createorreplacetriggerorders_trigger
beforeinsertonordersforeachrow
begin
selectuserid.nextvalinto:
new.useridfromdual;
end;
/
createsequenceStoreIDINCREMENTby1STARTwith1NOCYCLE;
/
createorreplacetriggerorders_trigger
beforeinsertonordersforeachrow
begin
selectStoreID.nextvalinto:
new.StoreIDfromdual;
end;
/
createsequencePrivIdINCREMENTby1STARTwith1NOCYCLE;
/
createorreplacetriggerorders_trigger
beforeinsertonordersforeachrow
begin
selectPrivId.nextvalinto:
new.PrivIdfromdual;
end;
/
附录2:
功能实现主要代码
附图1目录结构图
//采购订单生成
usingSystem;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
namespaceBookSaleSystem.Purchase
{
publicpartialclassPurchase_OrderAdd:
Form
{
publicPurchase_OrderAdd()
{
InitializeComponent();
}
privateDataTableLoad_Data()
{
OracleConnectioncon=newOracleConnection(ConDB.constr);
try
{
con.Open();
DataTabledt=newDataTable();
{
stringsql=string.Format("selectStoreID,BookId,BookName,StoreSum,StoreLastNumfromstoreroomwherebooknamelike'%{0}%'",Bookname_Inquire.Text);
OracleDataAdapterda=newOracleDataAdapter(sql,con);
da.Fill(dt);
}
else
{
stringsql=@"select*fromstoreroom";
OracleDataAdapterda=newOracleDataAdapter(sql,con);
da.Fill(dt);
}
return(dt);
}
finally
{
con.Close();
}
}
privateDataTableOrderInfo_Load()
{
OracleConnectioncon=newOracleConnection(ConDB.constr);
try
{
con.Open();
DataTabledt=newDataTable();
{
stringsql=string.Format("selectOrderId,OrderTime,UserId,bookname,OrderQuality,OrderType,OrderJudgefromOrderswherebooknamelike'%{0}%'andordertype=0",Bookname_Inquire.Text);
OracleDataAdapterda=newOracleDataAdapter(sql,con);
da.Fill(dt);
}
else
{
stringsql=@"select*fromorders";
OracleDataAdapterda=newOracleDataAdapter(sql,con);
da.Fill(dt);
}
return(dt);
}
finally
{
con.Close();
}
}
privatevoidInquiry_button_Click(objectsender,EventArgse)
{
Inquiry_dataGridView.DataSource=Load_Data();
OrderInfo_dataGridView.DataSource=OrderInfo_Load();
}
privatevoidProduce_PurchaseOrder_Click(objectsender,EventArgse)
{
OracleConnectioncon=newOracleConnection(ConDB.constr);
try
{
con.Open();
OracleCommandcom=newOracleCommand(sql,con);
intresult=com.ExecuteNonQuery();
if(result!
=0)
{
MessageBox.Show("订单生成生成成功!
");
}
else
{
MessageBox.Show("订单生成生成失败!
");
}
}
finally
{
con.Close();
}
}
privatevoidPurchase_OrderAdd_Load(objectsender,EventArgse)
{
}
}
}
//登陆窗口
usingSystem;
usingSystem.ComponentModel;