




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学 号: 课 程 设 计课程名大型数据库题 目销售管理系统学 院计算机科学与信息工程学院专 业计算机科学与技术班 级嵌入式学生姓名指导教师 2011年12月25日重庆工商大学课程设计成绩评定表学院: 计信学院 班级: 学生姓名: 学号:项目分值优秀(100x90)良好(90x80)中等(80x70)及格(70x60)不及格(x60)评分参考标准参考标准参考标准参考标准参考标准学习态度15学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作学习态度比较认真,科学作风良好,能按期圆满完成任务书规定的任务学习态度尚好,遵守组织纪律,基本保证设计时间,按期完成各项工作学习态度
2、尚可,能遵守组织纪律,能按期完成任务学习马虎,纪律涣散,工作作风不严谨,不能保证设计时间和进度技术水平与实际能力25设计合理、理论分析与计算正确,实验数据准确,有很强的实际动手能力、经济分析能力和计算机应用能力,文献查阅能力强、引用合理、调查调研非常合理、可信设计合理、理论分析与计算正确,实验数据比较准确,有较强的实际动手能力、经济分析能力和计算机应用能力,文献引用、调查调研比较合理、可信设计合理,理论分析与计算基本正确,实验数据比较准确,有一定的实际动手能力,主要文献引用、调查调研比较可信设计基本合理,理论分析与计算无大错,实验数据无大错设计不合理,理论分析与计算有原则错误,实验数据不可靠,
3、实际动手能力差,文献引用、调查调研有较大的问题创新10有重大改进或独特见解,有一定实用价值有较大改进或新颖的见解,实用性尚可有一定改进或新的见解有一定见解观念陈旧论文(计算书、图纸)撰写质量50结构严谨,逻辑性强,层次清晰,语言准确,文字流畅,完全符合规范化要求,书写工整或用计算机打印成文;图纸非常工整、清晰结构合理,符合逻辑,文章层次分明,语言准确,文字流畅,符合规范化要求,书写工整或用计算机打印成文;图纸工整、清晰结构合理,层次较为分明,文理通顺,基本达到规范化要求,书写比较工整;图纸比较工整、清晰结构基本合理,逻辑基本清楚,文字尚通顺,勉强达到规范化要求;图纸比较工整内容空泛,结构混乱,
4、文字表达不清,错别字较多,达不到规范化要求;图纸不工整或不清晰指导教师评定成绩:指导教师签名: 年 月 日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 已知技术参数和设计要求:调查书店图书销售业务,设计的图书销售系统主要包括进货、退货、统计、销售功能。1、 进货:根据某种书籍的库存量及销售情况确定进货数量,根据供应商报价选择供应商。输出一份进货单并自动修改库存量,把本次进货的信息添加到进货库 中。2、 退货:顾客把己买的书籍退还给书店。输出一份退货单并自动修改库存量,把本次退货的信息添加到退货库中。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写
5、等具体要求)完成的任务:实现了各类订单的生成以及根据订单修改库存的图书存储量。时间安排:2011年12月9日-2011年12月25日指导教师签名: 年 月 日大型数据库课程设计题目:销售管理系统班级: 姓名: 学号: 指导教师: 完成日期:2011年12月15日目录1.项目概述11.1功能概述11.2 可行性分析12.项目需求分析22.1系统功能需求分析22.2系统总用例分析22.3系统用例分析32.3.1 基本信息维护用例32.3.2采购商品用例32.3.3 库存管理32.3.4 销售商品42.4 系统流程分析42.5 模块分析53.系统详细设计63.1 数据库逻辑结构设计63.2表设计63
6、.3后台数据库设计及重要的pl&sql代码73.3 前台开发103.3.1 系统登陆界面103.3.2 主界面103.3.3 基本信息维护界面113.3.4 采购界面113.3.5 销售界面123.3.6 库存界面123.4 功能实现143.4.1 采购订单生成143.4.2 采购退货订单生成功能153.4.3 销售退货订单生成153.4.4 库存盘点-采购订单153.4.5 库存盘点-退货订单163.4.6 库存盘点-销售退货订单164.开发心得171.项目概述书店为了对图书的采购、销售信息的管理,就需要一个方便快捷的软件来对此进行系统的、高效的操作。该图书管理系统操作节目简洁,实用,能够在
7、较短时间内掌握使用方法。1.1功能概述通过初步分析,得到销售管理系统的主要功能如下:用户登陆验证用户信息维护图书信息维护供应商信息维护采购入库订单生成采购退货订单生成销售出库订单生成销售退货订单生成库存查询1.2 可行性分析从投资角度看,本系统能够提高业务的运转效率和企业的市场竞争力,采用计算机软件管理,可以降低运营成本,减少员工的工作量。该系统运用.net平台和oracle数据库,能够有效的帮助企业管理业务,能够满足企业的需要。再者,现在运用计算机软件管理企业业务已经是一种趋势,运用软件可以减少员工手工记账是的错误,大大的提高了企业的营业效率。2.项目需求分析2.1系统功能需求分析分析得出销
8、售管理系统的使用者分为三类:销售人员、采购人员以及管理人员。于是对三者收集需求,统计得到如下表所示的功能需求。根据用户的需求,可以把模块划分为如表2-2所示,并对其模块进行划分和功能描述。2.2系统总用例分析图 2-1 系统总用例2.3系统用例分析2.3.1 基本信息维护用例描述:提供维护员工信息、维护图书信息、维护供应商信息(删除操作在库存不为0是不能进行图书信息删除)。参与者:管理者。用例图:图2-2.图 2-2 基本信息维护用例2.3.2采购商品用例描述:提供采购图书入库(若新增图书,则该图书的库存量为0 ,需要在采购界面输入采购数量)的功能。参与者:采购员.用例图:图2-3图 2-3
9、采购用例图2.3.3 库存管理描述:提供图书库存盘点。参与者:系统管理员、采购员、销售员用例图:图2-4图 2-4 库存管理用例图2.3.4 销售商品描述:生成销售订单与销售退货订单。参与者:销售员。用例图:图2-5图 2-5 销售用例图2.4 系统流程分析了解用户需求之后,就能够根据用户需求来设定系统的流程,下面就是整个销售系统的流程图,如图 2-7所示。图 2-7 销售系统流程图2.5 模块分析通过上面的分析能够得出该系统的模块结构图如图 2-8所示图 2-8 销售系统模块结构图3.系统详细设计3.1 数据库逻辑结构设计3.2表设计在oracle中设计的数据库名字为booksaled,其中
10、包含用户信息表,供应商信息表,图书信息表,库存表,订单表。用户表(用户编号,用户帐号,用户密码,用户名称,权限);供应商表格(供应商编号,供应商名称,负责人电话,联系电话,地址);图书信息(图书编号,图书名称,价格,折扣,出版日期,供应商编号,图书类型);库存表(库存编号,图书编号,图书名称,库存数量,最低数量);订单表(订单编号,日期,操作员,图书名称,数量,订单类型,判断符号)。3.3后台数据库设计及重要的pl&sql代码首先开辟一个新的表空间:create tableplace booksaledb datafilee:oracleproduct10.2.0adminorcl size
11、100m;然后建立一个新的用户:create user booksale identified by zhbsm0010 default tablespace booksaledb;对用户授权,由于该用户会执行很多操作,因此这里授予最高的dba权限(该操作是在sysdba用户先操作的):grant dba to booksale;图书信息表,用来存储图书的各种信息。pl&sql代码如下:create table bookinfo(bookid varchar2(22) primary key,bookname varchar2(50) not null,bookprice number(10,
12、2) not null,bookrate number(3,2) not null,bookdate date not null,bookproviderid int not null,booktype varchar2(50) not null,foreign key(bookproviderid) references providers(privid)用户信息表,用来存储用户的基本信息。其中用户权限一项0表示管理员,1表示销售员,2表示采购员。create table userinfo(userid int primary key,userlonginid varchar2(20) no
13、t null,username varchar2(20) not null,userpass varchar2(20) not null,userrole int not null)供应商表,及图书出版社,用户存储供应商的基本信息。create table providers(privid int primary key,privname varchar2(20) not null,privlinkman varchar2(20) not null,privtel varchar2(20) not null,privadr varchar2(50) not null)订单表,用来存储订单的信息
14、。其中在订单类型一栏中0表示采购入库,1表示采购退货,2表示销售出库,3表示销售退货出库,还有订单新旧判断列0代表是新订单,1代表是已经经过库存盘点之后的订单。create table orders(orderid int primary key,ordertime timestamp with time zone default systimestamp not null,userid int not null,boonname varchar2(50) not null;orderquality int not null,ordertype int not null,orderjudge
15、int not null,foreign key(userid) references userinfo(userid)库存表,显示图书的库存量,以及产生采购订单的标准。create table storeroom(storeid int primary key,bookid varchar2(22) not null,bookname varchar2(50) not null,storesum int not null,storelastnum int not null,foreign key(bookid) references bookinfo(bookid) )另外,在数据库设计中还
16、设计了几个递增序号,分别是:userid,storeid,orderid,privid。产生序列号的代码如下:首先对用户授权:grant create sequence to booksale然后建立序列号,由于序列号建立的代码格式一样,因此这里只列出建立orderid的代码:create sequence orderid increment by 1 start with 1 nocycle建立了序列号之后,用触发器来产生递增的列下面是在orders表上建立的orderid递增的触发器,每当插入一张订单,订单编号就增加1,代码如下:create or replace trigger orde
17、rs_triggerbefore insert on orders for each rowbegin select orderid.nextval into:new.orderid from dual;end;3.3 前台开发前台开发使用的是.net开发工具,.net能够支持oracle数据库的连接,而且提供了大量的控件,便于界面设计。能够有效的提高开发效率。3.3.1 系统登陆界面系统登陆界面提供给用户登陆系统的可视操作,用户根据相应的用户名,密码,登陆权限登陆系统。不同的权限在会拥有不同的操作界面。图 3-2 系统登陆界面3.3.2 主界面主界面是根据不同的权限的用户设计的一个菜单界面,
18、用户在这个界面可以根据自己的权限与操作要求选择相应的操作。选这操作之后会打开子窗口,进行下面的操作。图 3-3 系统主界面3.3.3 基本信息维护界面基本信息界面是只有拥有管理员权限的用户才能够操作的界面,才这个界面中有员工信息、图书信息、供应商信息三个选项,分别对应员工信息更新,图书信息更新,供应商信息跟新。3.3.4 采购界面采购界面是采购员生成采购订单的界面,采购订单包括采购与退货的订单。采购员对图书进行相关采购之后,可以生成采购订单,以便对于库存的管理。 图 3-4 采购订单生成界面图 3-5 采购退货订单生成界面3.3.5 销售界面销售界面是销售员生成销售订单的界面,销售订单包括正常
19、销售和销售退货。销售员在图书销售时产生销售订单,以便对库存进行管理。图 3-6 销售退货订单生成界面3.3.6 库存界面库存界面是根据各种订单对库存进行相关的管理的界面。在库存界面可以根据订单修改库存图书的相关信息。也可以查看订单的相关信息,从而能够统计订单的各种信息,对图书销售进行汇总。图 3-7 盘点库存采购退货订单图 3-8 库存盘点-采购订单图 3-9 库存盘点-销售订单图 3-10 库存盘点-销售退货订单3.4 功能实现该系统主要实现的功能有,根据对库存图书的存储量产生采购订单,退货订单。根据销售的图书两产生销售订单,然后如果有顾客退还所购买的图书,要产生销售退货订单,然后更加订单再
20、修改库存中的图书存量。图 3-11 系统实验的功能关系3.4.1 采购订单生成输入图书名称可以查看库存中的该种图书存量与和该图书有关的订单。根据库存量与订单可以决定需要采购的图书数量。在输入图书名称和采购数量,点击“生成采购订单”就能够产生新的采购订单。图 3-12 采购订单生成功能3.4.2 采购退货订单生成功能入图书名称可以查看库存中的该种图书存量与和该图书有关的订单。根据库存量与订单可以决定需要退货的图书数量。在输入图书名称和采购数量,点击“生成订单”就能够产生新的退货订单。图 3-13 退货订单生成实现3.4.3 销售退货订单生成入图书名称可以查看库存中的该种图书存量与和该图书有关的订
21、单。根据库存量与订单可以决定需要退货的图书数量。在输入图书名称和退货数量,点击“生成订单”就能够产生新的退货订单。图 3-14 销售退货订单生成3.4.4 库存盘点-采购订单点击订单查询可以查看新的采购订单,根据图书库存,输入图书名称,图书数量,和订单编号可以修改图书的库存量和改变订单是成为已经使用过的订单。查询功能可以查看该图书在库存中的存储量。图 3-15 盘点-采购入库3.4.5 库存盘点-退货订单点击订单查询可以查看新的退货订单,根据图书库存,输入图书名称,图书数量,和订单编号可以修改图书的库存量和改变订单是成为已经使用过的订单。查询功能可以查看该图书在库存中的存储量。图 3-16 盘
22、点-采购退货3.4.6 库存盘点-销售退货订单点击订单查询可以查看新的销售退货订单,根据图书库存,输入图书名称,图书数量,和订单编号可以修改图书的库存量和改变订单是成为已经使用过的订单。查询功能可以查看该图书在库存中的存储量。图 3-17 盘点-销售退货4.开发心得通过图书销售系统的开发,让我了解到一个一项目开发的大致过程,虽然这个系统某些功能根据课程设计的要求并没有开发实现。但是就这个系统目前能实现的功能来说,即使有些地方不够完善,但是对于我来说这也是一个新的里程碑。这个系统的开发,不仅让我了解了有关oracle数据库的知识,还有.net的有关知识,认识的在大学很多知识并不是从课堂上来的,更
23、多的是靠自己平时学习慢慢积累的。每次课程设计都有不同的收获,这次也一样。这次课程设计我就靠自己学会了c# 的相关编程和一种关于oracle的pl&sql的有关知识。这对我能完成这次项目开发有很大的帮助。参考文献:1.秦倩、石叶平,精通c#与.net 4.0 数据库开发,北京,清华大学出版社,2011.12.萧文龙、陈怡如,oracle 10g 数据库入门与实践,北京,清华大学出版社出版社,2006.13.(美)凯特 著,苏金国等译,oracle9i&10g编程艺术:深入数据库体系结构,北京,人民邮电出版社,2006.1附录1:数据库相关代码create sequence orderid inc
24、rement by 1 start with 1 nocycle;/create or replace trigger orders_triggerbefore insert on orders for each rowbegin select orderid.nextval into:new.orderid from dual;end;/create sequence userid increment by 1 start with 1 nocycle;/create or replace trigger orders_triggerbefore insert on orders for e
25、ach rowbegin select userid.nextval into:new.userid from dual;end;/create sequence storeid increment by 1 start with 1 nocycle;/create or replace trigger orders_triggerbefore insert on orders for each rowbegin select storeid.nextval into:new.storeid from dual;end;/create sequence privid increment by
26、1 start with 1 nocycle;/create or replace trigger orders_triggerbefore insert on orders for each rowbegin select privid.nextval into:new.privid from dual;end;/附录2:功能实现主要代码附图1 目录结构图/采购订单生成using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;
27、using system.text;using system.windows.forms;using oracle.dataaccess.client;namespace booksalesystem.purchase public partial class purchase_orderadd : form public purchase_orderadd() initializecomponent(); private datatable load_data() oracleconnection con = new oracleconnection(condb.constr); try c
28、on.open(); datatable dt = new datatable(); if (bookname_inquire.text.trim() != ) string sql = string.format(select storeid,bookid,bookname,storesum,storelastnum from storeroom where bookname like %0%, bookname_inquire.text); oracledataadapter da = new oracledataadapter(sql, con); da.fill(dt); else s
29、tring sql = select * from storeroom; oracledataadapter da = new oracledataadapter(sql, con); da.fill(dt); return (dt); finally con.close(); private datatable orderinfo_load() oracleconnection con = new oracleconnection(condb.constr); try con.open(); datatable dt = new datatable(); if (bookname_inqui
30、re.text.trim() != ) string sql = string.format(select orderid,ordertime,userid,bookname,orderquality,ordertype,orderjudge from orders where bookname like %0% and ordertype=0, bookname_inquire.text); oracledataadapter da = new oracledataadapter(sql, con); da.fill(dt); else string sql = select * from
31、orders; oracledataadapter da = new oracledataadapter(sql, con); da.fill(dt); return (dt); finally con.close(); private void inquiry_button_click(object sender, eventargs e) inquiry_datagridview.datasource = load_data(); orderinfo_datagridview.datasource = orderinfo_load(); private void produce_purch
32、aseorder_click(object sender, eventargs e) oracleconnection con = new oracleconnection(condb.constr); try con.open(); string sql = string.format(insert into orders( userid,bookname,orderquality,ordertype,orderjudge)+ values( 0,1,2,3,4), logininfo.loginuserinfo.userid, order_bookname.text, order_qual
33、ity.text,0,0); oraclecommand com = new oraclecommand(sql,con); int result = com.executenonquery(); if (result != 0) messagebox.show(订单生成生成成功!); else messagebox.show(订单生成生成失败!); finally con.close(); private void purchase_orderadd_load(object sender, eventargs e) /登陆窗口using system;using system.collect
34、ions.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;using oracle.dataaccess.client;using booksalesystem.entity;namespace booksalesystem public partial class login_form : form public login_form() initializecomponent(); private v
35、oid login_button_click(object sender, eventargs e) loginvalidate(); public void loginvalidate() if (userloginid_textbox.text.trim() = | string.isnullorempty(userloginid_textbox.text) messagebox.show(用户名不能为空!, 登录提示); userloginid_textbox.focus(); else if (password_textbox.text.trim() = | string.isnull
36、orempty(password_textbox.text) messagebox.show(密码不能为空!, 登录提示); password_textbox.focus(); else if (usertype_combobox.text.trim() = | string.isnullorempty(usertype_combobox.text.trim() messagebox.show(请选择登录类型!, 登录提示); else userinfo u = null; oracleconnection con = new oracleconnection(condb.constr); t
37、ry con.open(); int userrole = usertype_combobox.selectedindex; string sql = string.format(select * from userinfo where userlonginid=0 and userpass=1and userrole=2, userloginid_textbox .text,password_textbox.text, userrole); oraclecommand com = new oraclecommand(sql, con); oracledatareader dr = com.e
38、xecutereader(); if (dr.read() u = new userinfo(); u.userid = convert.toint32(druserid); u.userlonginid = druserlonginid.tostring(); u.username = drusername.tostring(); u.userpass = druserpass.tostring(); u.userrole = druserrole.tostring(); dr.close(); if (u != null) logininfo.loginuserinfo = u;/保存登录
39、用户信息 /userloginid. 入库form_main fm = new 入库form_main(); fm.showdialog(); else messagebox.show(用户名或密码错误!, 登录提示); catch (exception) messagebox.show(请注意数据库连接字符串!, 登录提示); finally con.close(); private void cbo_logintype_keydown(object sender, keyeventargs e) if (e.keycode = keys.enter)/当点击回车键 if (userlogi
40、nid_textbox.text != & password_textbox.text != ) loginvalidate(); else sendkeys.send(tab); private void reset_button_click_1(object sender, eventargs e) userloginid_textbox.text = ; password_textbox.text = ; userloginid_textbox.focus(); /主界面using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;using oracle.dataaccess.client;using booksalesystem.entity;using booksalesystem.purchase;using booksalesystem.sell;using booksalesystem.store;namespace booksalesystem p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色环保餐饮特许经营合作协议
- 二零二五年度联合办学协议书-体育教育专业合作发展框架协议
- 二零二五年度冷库租赁与冷链物流数据统计分析协议
- 2025年度门窗维修与户外照明系统维护合同
- 2025年度车辆抵押贷款欠款分期偿还及风险控制合同
- 二零二五年度期刊合作出版认刊书审核及风险控制合同
- 二零二五年度合同管理员绩效考核与职业发展合同
- 二零二五年度电力线路施工期间生态保护协议
- 2025至2030年中国红木标牌数据监测研究报告
- 现代办公环境下的电力工程企业品牌推广
- 2025年车位买卖合同模板电子版
- AI创作指令合集系列之-教案写作指令
- 关于投资协议书范本5篇
- 《反电信网络诈骗法》知识考试题库150题(含答案)
- 2025年上海市各区初三一模语文试卷(打包16套无答案)
- 2024 原发性肝癌诊疗指南 更新要点课件
- 《圆柱与圆锥-圆柱的表面积》(说课稿)-2023-2024学年六年级下册数学人教版
- 【8语期末】芜湖市2024-2025学年八年级上学期期末考试语文试题
- 常用临床检验结果解读
- 2025年浙江省金华义乌市人社局招聘雇员历年高频重点提升(共500题)附带答案详解
- 老年痴呆患者护理课件
评论
0/150
提交评论