《数据库系统课程设计 报告模板 宋广鹏.doc》由会员分享,可在线阅读,更多相关《数据库系统课程设计 报告模板 宋广鹏.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、姓 名: 宋广鹏 学 号: 专 业: 计算机科学与技术 班 级: 组 号: 指导教师: 胡仕成 计算机科学与技术学院哈尔滨工业大学课程设计题目:企业商品人员管理系统1. 需求分析说明书仓库(存储仓库的基本信息) 属性(仓库号,仓库位置,备注)供应商(供应商的基本信息) 属性(供应商号,供应商名,地区,电话)存储(商品储存在仓库的基本信息) 属性(仓库号,商品号,数量,备注)员工(工作员工的基本信息) 属性(员工号,姓名,性别,电话,备注)商品(从订购商订购,卖给客户的商品) 属性(商品号,商品名,规格,基本单位(如瓶、双等),单价)客户(订购商品的客户信息) 属性(客户号,客户名,地区,电话,
2、帐务(如记账功能)工资(开给员工的工资) 属性(部门号,职务号,工资,备注,人数)帐务类型(包括记账等功能) 属性(帐务号,帐务名,帐务类型,备注)性别(男or女) 属性(性别号,性别)管理(员工间的关系) 属性(管理者,被管理者)职务(员工的工作职位) 属性(职务号,职务名,职务描述)职属(员工的所属于的部门关系、职务关系) 属性(员工号,部门号,职务号,备注)表名(表的标题名) 属性(表名)账单(对帐务的记录) 属性(账单类型,金额,备注)进货订单(对商品的采购,包括提供商品的供应商,采购的数量,储存商品的仓库,采购商品的价格等) 属性(订单号,商品号,供应商号,数量,仓库号,单价)部门(
3、企业中的各个部门信息) 属性(部门号,部门名称,部门描述,负责人)销售订单(对商品的出售,包括购买商品的客户信息,购买数量,存放商品的仓库名称,出售价格等) 属性(订单号,商品号,客户号,数量,仓库号,单价)该部分要求写出对系统的需求分析结果,包括对系统的简要介绍,系统应该包括的实体集和联系集,对每个实体集和联系集作简单的介绍,以及每个实体集和联系集所包括的属性。如下示例 2. E-R模型设计根据上面的需求分析画出系统的E-R图。3. 数据库设计将上面的E-R图转换为模式图根据模式图设计每个关系模式(Oracle的数据类型)。如下示例收料入库单(cpc_bill)字段名数据类型字段限制或计算公
4、式数据项名称备注仓库号archar(20)收料单以SL开始; 领料单以LL开始; 限额领料单以XL开始; 退料单以TL开始;后接编号为年度+10位顺序号 收料单号PK位置varchar(20)单据类别=SL收料单/LL领料单/XL限额领料单/TL退料单单据类别备注varchar(20)该栏只在退料单上出现对应领料单号Material_Code收到物料的代码,是外购件填外购件代码,是材料填材料代码物料代码Material_NameVchar2(50)物料名称规格型号说明material_classVchar2(40)材料规格材料规格Measure_UnitVchar2(10)计量单位Materi
5、al_UseVchar2(50)对收料入库单, 该栏填写;对领料单,该栏为领料用途;物料用途Ori_UseVchar2(50)对收料入库单, 该栏填写;对领料单,该栏为物料原来的用途;物料原用途Ticket_NoVchar2(20)对收料入库单, 该栏为空工票号Prod_CodeVchar2(20)对收料单,如为某一产品而买,则填写; 对领料单,如为某一产品而领料,则填写;产品代码Work_NoVchar2(20)对收料单,如为某一工作号而买,则填写; 对领料单,如为某一工作号而领料,则填写;工作号Part_CodeVchar2(20)如为某一零件,则填写;该栏内容只在产品代码或工作号不为空时
6、有效。当物料/外购件是专为某个产品的某工作号的,零部件代码就填该材料所属的那个零部件;当是外购件时,零件代码与物料代码所填写内容相同。如为产品,则该栏填写产品代码;否则,填写该记录内容所对应的零件代码。零件代码Part_QuanNum(15,2)该材料所支持的零件数量零件数量Sdept_CodeVchar2(10)经办/发料/退料部门代码Ssubdept_CodeVchar2(10)经办/发料/退料具体部门代码Sctrl_CodeVchar2(10)经办/发料/退料控制点代码Rdept_CodeVchar2(10)收料/领料部门代码Rsubdept_CodeVchar2(10)收料/领料具体部
7、门代码Rctrl_CodeVchar2(10)收料/领料控制点代码R_DateDate收料/领料/退料日期S_WorkerVchar2(10)经办人/发料人/退料人R_WorkerVchar2(10)收料人/领料人Project_PasserVchar2(10)项目批准人Dept_PasserVchar2(10)部门批准人Comp_PasserVchar2(10)综合批准人Plan_QuanNum(15,2)发货单物料数量/请领或限领数量/请退数量Real_QuanNum(15,2)实入/实领/实退物料数量Real_PriceNum(15,2)物料实际单价Real_SumNum(15,2)物料
8、实际总价Plan_PriceNum(15,2)物料计划单价Plan_SumNum(15,2)物料计划总价Mix_CostNum(15,2)对收料入库单需填写;运杂费Total_MoneyNum(15,2)对收料入库单需填写;金额合计RP_flagVchar2(1)对收料入库单,该栏确定运杂费的处理方式,如为S则以包含运杂费的金额合计进行处理;如为J则运杂费和物料实际总价单独入帐。对领料单,该栏确定是采用物料计划总价入帐,还是采用物料实际总价入帐S/J(实际价/计划价)标志或者是合运/分运处理标志Bill_WorkerVchar2(10)单据制作员Bill_DateDate单据制作日期Bill_
9、CheckerVchar2(10)单据审核员Check_FlagVchar2(1)成本稽核标志Account_FlagVchar2(1)入成本帐标识Cost_CheckerVchar2(10)成本稽核员Check_DateDate成本稽核员核帐日期Finan_FlagVchar2(1)=0 未报帐; =1 已报帐。财务报帐标识Finan_BillnoVchar2(20)财务报帐单据号BL_FLAGVchar(1)借贷标志4. 系统功能实现说明本系统实现的功能和相关实现的方法和代码。如下示例企业帐务处理系统实现了以下功能:稽核,入帐,过账,分摊,结转,制单,报表,查询和系统管理等。如下图为系统实
10、现总的功能界面(也可以用PB所开发的界面取代,各功能最好是以菜单的形式体现,一个功能对应一个菜单项,如果一个功能还可以分为更小的贡呢,则应该以级联菜单的形式体现,如下示例)。以下分别说明各功能的实现。4.1. 创建和数据库的连接创建和数据库的连接是系统的各功能实现的前提,因此需要说明给功能的实现,主要是相关的代码数据库是用mysql在Linux下创建的,在数据库中建立了需要的表,并在程序中加入代码将数据库与程序起来。主要代码:创建数据库命令:create database db_zero;static bool createConnection() QSqlDatabase db=QSqlDa
11、tabase:addDatabase(QMYSQL); db.setHostName(localhost); db.setDatabaseName(db_zero); db.setUserName(root); db.setPassword(pp); if (!db.open() QMessageBox:critical(0,qApp-tr(Cannot open database), qApp-tr(Unable to establish a database connection.), QMessageBox:Cancel); return false; return true;4.2.
12、采购管理4.2.1. 功能界面本功能所对应的实现界面4.2.2. 关系表实现本功能所需要的关系表,以及创建该关系表所对应的SQL语句供应商:create table 供应商(供应商号 varchar(20),供应商名 varchar(20),地区 varchar(20),电话 varchar(20),primary key(供应商号)TYPE=InnoDB;商品:create table 商品(商品号 varchar(20),商品名 varchar(20),规格 varchar(20),基本单位 varchar(20),单价 decimal(5,2),primary key(商品号)TYPE=
13、InnoDB;进货订单:create table 进货订单(订单号 varchar(20),商品号 varchar(20),供应商号 varchar(20),数量 int,仓库号 varchar(20),单价 decimal(5.2),foreign 仓库:4.2.3. 实现代码实现该功能所用的主要方法和代码。一般来说,这里需要写出针对实现某个功能所用的主窗口中的每个控件(尤其是按钮控件,每个控件对应一个子功能)所写的代码,如查询子功能所使用的代码,插入子功能所使用的代码,删除子功能所使用的代码,更新子功能所使用的代码新增供应商:void Dialog:on_pushButton_2_clic
14、ked() ui-lineEdit-clear(); ui-lineEdit_2-clear(); ui-lineEdit_3-clear(); ui-lineEdit_4-clear();void Dialog:on_pushButton_clicked() QSqlQuery q; q.prepare(insert into 供应商 values(?,?,?,?);); q.addBindValue(ui-lineEdit-text(); q.addBindValue(ui-lineEdit_2-text(); q.addBindValue(ui-lineEdit_3-text(); q.
15、addBindValue(ui-lineEdit_4-text(); /q.addBindValue(0); q.exec();供应商资料:if(Qchoice=1) model =new QSqlRelationalTableModel(this); model-setEditStrategy(QSqlTableModel:OnFieldChange); model-setTable(供应商); model-setHeaderData(0,Qt:Horizontal,QObject:tr(供应商号); model-setHeaderData(1,Qt:Horizontal,QObject:t
16、r(供应商名); model-setHeaderData(2,Qt:Horizontal,QObject:tr(地区); model-setHeaderData(3,Qt:Horizontal,QObject:tr(电话); model-setHeaderData(4,Qt:Horizontal,QObject:tr(帐务); model-select(); ui-tableView-setModel(model);采购订单:Dialog_BuyPaper:Dialog_BuyPaper(QWidget *parent) : QDialog(parent), ui(new Ui:Dialog_
17、BuyPaper) ui-setupUi(this); QStringList strings; QSqlQuery query; query.exec(select 商品号 from 商品); while(query.next() QString goodname=query.value(0).toString(); strings.append(goodname); QCompleter *completer = new QCompleter(strings,this); ui-comboBox-clear(); ui-comboBox-addItems(strings); ui-comb
18、oBox-setCompleter(completer); / QStringList strings1; QSqlQuery query1; query1.exec(select 供应商号 from 供应商); while(query1.next() QString gyname=query1.value(0).toString(); strings1.append(gyname); QCompleter *completer1 = new QCompleter(strings1,this); ui-comboBox_2-clear(); ui-comboBox_2-addItems(str
19、ings1); ui-comboBox_2-setCompleter(completer1); / QStringList strings2; QSqlQuery query2; query2.exec(select 仓库号 from 仓库); while(query2.next() QString dbname=query2.value(0).toString(); strings2.append(dbname); QCompleter *completer2 = new QCompleter(strings2,this); ui-comboBox_3-clear(); ui-comboBo
20、x_3-addItems(strings2); ui-comboBox_3-setCompleter(completer2);Dialog_BuyPaper:Dialog_BuyPaper() delete ui;void Dialog_BuyPaper:on_pushButton_clicked() int ZGood_Store=0; QSqlQuery query; query.prepare(insert into 进货订单 values(?,?,?,?,?,?) ); query.addBindValue(ui-lineEdit_3-text(); query.addBindValu
21、e(ui-comboBox-currentText(); query.addBindValue(ui-comboBox_2-currentText(); query.addBindValue(ui-lineEdit-text(); query.addBindValue(ui-comboBox_3-currentText(); query.addBindValue(ui-lineEdit_2-text(); query.exec(); if(!query.isActive() QMessageBox:about(this,提示,操作失败); ZGood_Store=1; else QMessag
22、eBox:about(this,提示,操作成功);订单总览:if(Qchoice=1) model =new QSqlRelationalTableModel(this); model-setEditStrategy(QSqlTableModel:OnFieldChange); model-setTable(进货订单); model-setHeaderData(0,Qt:Horizontal,QObject:tr(订单号); model-setHeaderData(1,Qt:Horizontal,QObject:tr(商品号); model-setHeaderData(2,Qt:Horizon
23、tal,QObject:tr(供应商号); model-setHeaderData(3,Qt:Horizontal,QObject:tr(数量); model-setHeaderData(4,Qt:Horizontal,QObject:tr(仓库号); model-setHeaderData(5,Qt:Horizontal,QObject:tr(单价); model-select(); ui-tableView-setModel(model);新增商品:void Dialog_goods:on_pushButton_2_clicked() ui-glineEdit-clear(); ui-gl
24、ineEdit_2-clear(); ui-glineEdit_3-clear(); ui-glineEdit_4-clear(); ui-glineEdit_5-clear();void Dialog_goods:on_pushButton_clicked() QSqlQuery q1; q1.prepare(insert into 商品 values(?,?,?,?,?); q1.addBindValue(ui-glineEdit-text(); q1.addBindValue(ui-glineEdit_2-text(); q1.addBindValue(ui-glineEdit_3-te
25、xt(); q1.addBindValue(ui-glineEdit_4-text(); q1.addBindValue(ui-glineEdit_5-text(); q1.exec(); /QString s; if(!q1.isActive() QMessageBox:about(this,提示,操作失败); else QMessageBox:about(this,提示,操作成功);商品查看:else model =new QSqlRelationalTableModel(this); model-setEditStrategy(QSqlTableModel:OnFieldChange);
26、 model-setTable(商品); model-setHeaderData(0,Qt:Horizontal,QObject:tr(商品号); model-setHeaderData(1,Qt:Horizontal,QObject:tr(商品名); model-setHeaderData(2,Qt:Horizontal,QObject:tr(规格); model-setHeaderData(3,Qt:Horizontal,QObject:tr(基本单位); model-setHeaderData(4,Qt:Horizontal,QObject:tr(单价); model-select();
27、 ui-tableView-setModel(model); 4.3. 销售管理4.3.1 功能界面4.3.2 关系表客户:销售订单:商品:仓库:4.3.3 实现代码新增客户:void Dialog_add_consumer:on_pushButton_clicked() QSqlQuery query; query.prepare(insert into 客户 values(?,?,?,?,?); query.addBindValue(ui-lineEdit-text(); query.addBindValue(ui-lineEdit_2-text(); query.addBindValue
28、(ui-lineEdit_3-text(); query.addBindValue(ui-lineEdit_4-text(); query.addBindValue(ui-lineEdit_5-text(); query.exec(); if(!query.isActive() QMessageBox:about(this,提示,操作失败); else QMessageBox:about(this,提示,操作成功);客户资料:else if(Qchoice=2) model =new QSqlRelationalTableModel(this); model-setEditStrategy(Q
29、SqlTableModel:OnFieldChange); model-setTable(客户); model-setHeaderData(0,Qt:Horizontal,QObject:tr(客户号); model-setHeaderData(1,Qt:Horizontal,QObject:tr(客户名); model-setHeaderData(2,Qt:Horizontal,QObject:tr(地区); model-setHeaderData(3,Qt:Horizontal,QObject:tr(电话); model-setHeaderData(4,Qt:Horizontal,QObj
30、ect:tr(帐务); model-select(); ui-tableView-setModel(model); 销售订单:Dialog_salepapper:Dialog_salepapper(QWidget *parent) : QDialog(parent), ui(new Ui:Dialog_salepapper) ui-setupUi(this); QStringList strings; QSqlQuery query; query.exec(select 商品名 from 商品); while(query.next() QString goodname=query.value(
31、0).toString(); strings.append(goodname); QCompleter *completer = new QCompleter(strings,this); ui-comboBox-clear(); ui-comboBox-addItems(strings); ui-comboBox-setCompleter(completer); / QStringList strings1; QSqlQuery query1; query1.exec(select 客户名 from 客户); while(query1.next() QString gyname=query1
32、.value(0).toString(); strings1.append(gyname); QCompleter *completer1 = new QCompleter(strings1,this); ui-comboBox_2-clear(); ui-comboBox_2-addItems(strings1); ui-comboBox_2-setCompleter(completer1); / QStringList strings2; QSqlQuery query2; query2.exec(select 仓库号 from 仓库); while(query2.next() QStri
33、ng dbname=query2.value(0).toString(); strings2.append(dbname); QCompleter *completer2 = new QCompleter(strings2,this); ui-comboBox_3-clear(); ui-comboBox_3-addItems(strings2); ui-comboBox_3-setCompleter(completer2);Dialog_salepapper:Dialog_salepapper() delete ui;void Dialog_salepapper:on_pushButton_
34、clicked() int ZGood_Store=0; QSqlQuery query2; query2.exec(select 商品号 from 商品 where 商品名 = ? ); query2.addBindValue(ui-comboBox-currentText(); query2.exec(); query2.next(); QString s; /s=haha; s=query2.value(0).toString(); QSqlQuery query5; query5.exec(select 客户号 from 客户 where 客户名 = ? ); query5.addBi
35、ndValue(ui-comboBox_2-currentText(); query5.exec(); query5.next(); QString s1; /s=haha; s1=query5.value(0).toString(); QSqlQuery query4; query4.prepare(insert into 销售订单 values(?,?,?,?,?,?) ); query4.addBindValue(ui-lineEdit_3-text(); query4.addBindValue(s); query4.addBindValue(s1); query4.addBindVal
36、ue(ui-lineEdit-text(); query4.addBindValue(ui-comboBox_3-currentText(); query4.addBindValue(ui-lineEdit_2-text(); query4.exec(); if(!query4.isActive() QMessageBox:about(this,提示,ui-comboBox_2-currentText(); ZGood_Store=1; else QmessageBox:about(this,提示,操作成功);订单总览:else if (Qchoice=2) model =new QSqlRe
37、lationalTableModel(this); model-setEditStrategy(QSqlTableModel:OnFieldChange); model-setTable(销售订单); model-setHeaderData(0,Qt:Horizontal,QObject:tr(订单号); model-setHeaderData(1,Qt:Horizontal,QObject:tr(商品号); model-setHeaderData(2,Qt:Horizontal,QObject:tr(客户号); model-setHeaderData(3,Qt:Horizontal,QObj
38、ect:tr(数量); model-setHeaderData(4,Qt:Horizontal,QObject:tr(仓库号); model-setHeaderData(5,Qt:Horizontal,QObject:tr(单价); model-select(); ui-tableView-setModel(model); 新增商品:void Dialog_goods:on_pushButton_clicked() QSqlQuery q1; q1.prepare(insert into 商品 values(?,?,?,?,?); q1.addBindValue(ui-glineEdit-text(); q1.addBindValue(ui-glineEdit_2-text(); q1.addBindValue(ui-glineEdit_3-text(); q1.addBindValue(ui-glineEdit_4-text(); q1.addBindValue(ui