数据库课程设计文档格式1.docx

上传人:b****2 文档编号:24521984 上传时间:2023-05-28 格式:DOCX 页数:34 大小:454.41KB
下载 相关 举报
数据库课程设计文档格式1.docx_第1页
第1页 / 共34页
数据库课程设计文档格式1.docx_第2页
第2页 / 共34页
数据库课程设计文档格式1.docx_第3页
第3页 / 共34页
数据库课程设计文档格式1.docx_第4页
第4页 / 共34页
数据库课程设计文档格式1.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

数据库课程设计文档格式1.docx

《数据库课程设计文档格式1.docx》由会员分享,可在线阅读,更多相关《数据库课程设计文档格式1.docx(34页珍藏版)》请在冰豆网上搜索。

数据库课程设计文档格式1.docx

数据库课程设计文档格式1

 

 

数据库系统课程设计

题目商品订购系统

学生姓名于小涛

学号20101346002

学院计算机与软件学院

专业网络工程

指导教师马瑞

 

二O一O年十二月三十日

商品订购系统

目录

1.系统目标

1.1功能要求

1.2安全要求

1.3环境要求

2.概念设计

2.1系统E-R图

3.逻辑设计

3.1数据表

3.2数据关系定义

3.3数据关系表

 

4.系统实现

4.1用户登录模块

4.2视图设计以

4.3.主要设计代码

5实验心得

1系统目标

1.1功能要求

基本表①基础信息管理:

1、产品信息的管理:

查询、增、删、改

2、客户信息的管理:

查询、增、删、改

3、订单信息的管理:

查询、增、删、改

②订购情况:

1.商家可以对产品信息表、客户信息表、订单和订单细节进行增加、删除、更新、打印报表

2.订单的处理:

输入顾客号,能查询顾客所下的订单

输入订单号,能查询出顾客在订单的订货情况

1.2安全要求

用户登录时要有用户和密码,对于不正确的用户和密码登录超过规定的次数时应予以拒绝。

1.3环境要求

1、数据库管理软件:

MicrosoftSQLServer

2、数据库设计采用软件:

MicrosoftVisualBasic6.0

3、运行平台:

windowsxp

2概念设计

2.1系统E-R图

 

3.逻辑设计

3.1数据表

(1)供应商表

列名

类型

主键

有效性规则

默认值

供应商ID

长整型

主键

>0

公司名称

文本

联系人姓名

文本

电话

文本

地址

文本

邮政编码

文本

(2)仓库表

列名

类型

主键

有效性规则

默认值

供应商ID

长整型

主键

>0

产品ID

长整型

主键

>0

库存量

长整型

>=0

0

订购量

长整型

>=0

0

(3)产品表

列名

类型

主键

有效性规则

默认值

产品ID

长整型

主键

>0

产品名称

文本

单价

货币

>=0

0

单位数量

文本

(4)客户表

列名

类型

主键

有效性规则

默认值

客户ID

长整型

主键

>0

公司名称

文本

联系人姓名

文本

电话

文本

地址

文本

邮政编码

文本

(5)订单表

列名

类型

主键

有效性规则

默认值

订单ID

长整型

主键

>0

订货日期

日期/时间

货主地址

文本

发货日期

日期/时间

到货状态

文本

(6)订单明细表

列名

类型

主键

有效性规则

默认值

产品ID

长整型

主键

>0

供应商ID

长整型

主键

>0

客户ID

长整型

主键

>0

订单ID

长整型

主键

>0

数量

长整型

1

折扣

单精度型

Between0and1

0

(7)运货表

列名

类型

主键

有效性规则

默认值

订单ID

长整型

主键

>0

运货商ID

长整型

主键

>0

运费

货币

>=0

0

(8)运货商表

列名

类型

主键

有效性规则

默认值

运货商ID

长整型

主键

>0

运货商名称

文本

电话

文本

(9)用户表

列名

类型

主键

有效性规则

默认值

id

自动编号

主键

>0

用户名

文本

密码

文本

3.2数据关系定义

(1)数据表关系

对数据表的关系进行创建,图如下:

(商品信息表)

3.3数据关系表

参照完整性说明

对于这八个表的完整性都具有级联更新,在仓库表中的供应商ID不会是级联删除,因为当仓库不存在的时候,并不代表其供应商就不存在了。

仓库表中的产品ID也不会因为当其存量为零的时候,而不会再订购其产品。

在订单明细表中的产品ID、客户ID、供应商ID,都不会因为订单的终止而不存在。

在订单表中的订单ID将会随着交易的完成而被及时的删除,所以订单ID是级联删除,同理运货表中的订单ID也是级联删除。

运货表中的运货商ID不会因为交易的完成,而使其运货商不再存在。

4系统实现

4.1用户登录模块

登录窗体在此做一个权限设置,只被在该数据库中注册的用户使用。

利用Access中的设计视图在其工作区类,使用其相应的控件进行窗体制作,窗体见下图:

图7:

登录窗体界面

窗体制作好后,就是对“确定”按钮编程进行相应的控制,使其能够在用户名、密码都正确的情况下,跳转到“导航”窗体界面,点击“退出系统”按钮则可以退出数据库,其代码界面如下:

“确定”按钮编码界面

 

4.2视图设计

(1)昂贵产品

SQL语句如下:

SELECT产品名称,单价,单位数量

FROM产品

WHER单价>=300;

作用:

能够更方便的查询单价大于300,比较昂贵的产品。

结果见下图:

昂贵产品查询图

(2)客户订货

SQL语句如下:

SELECT供应商.公司名称,产品.产品名称,产品.单价,客户.公司名称,订单明细.数量

FROM供应商,产品,客户,订单明细

WHERE(供应商.供应商ID=订单明细.供应商ID)AND(产品.产品ID=订单明细.产品ID)AND(客户.客户ID=订单明细.客户ID);

作用:

方便在供应商、产品、客户、订单明细之间进行多表查询,这样可以使用户了解更多的信息。

结果见下图:

图4:

客户订货查询图

(3)仓库更新

SQL语句如下:

UPDATE仓库SET订购量=50

WHERE库存量=0;

作用:

当仓库某产品的存量为零的时候,此更新查询可以进行再订购其订购量为50,这样就可以保证仓库产品的存量始终是充足的。

(4)订单整理

SQL语句如下:

DELETE*,到货状态

FROM订单

WHERE到货状态="已收";

作用:

通过这个删除查询,及时的将订单中到货状态=“已收”的交易记录进行删除,从而留出更多的存储空间。

(5)产品价格降序排列

SQL语句如下:

SELECT*

FROM产品

ORDERBY单价DESC;

作用:

将产品表中的产品单价,按降序进行排列,方便用户对产品价格进行查询。

结果见下图:

图5:

产品价格降序排列查询图

(6)统计

SQL语句如下:

SELECT"订单总计:

",COUNT(*),"运费合计:

",SUM(运费)

FROM订单,运货

WHERE(订单.订单ID=运货.订单ID)AND(到货状态="未收");

作用:

对订单表中的订单数目,运货表中的总运费进行统计,这样有利于用户及时的查看订单表、运货表的动态。

结果见下图:

统计查询图

(3)产品查询窗体

在该窗体中可以方便查询你所要商品的单价、单位数量,此窗体的制作过程是利用向导来完成的,其中还包含了一个子窗体,窗体见下图:

(4)订单查询窗体

该窗体方便查找各订单中订购的是什么商品,窗体见下图:

4.3主要设计代码

#include

#include

#include

#include

voidproincrease();/*增加商品*/

voidorder();/*输入编号订购*/

voidconfirmorder();/*确认订购*/

voidconfirmfilesave();/*写入文件*/

voidconfirmfileopen();/*显示订购信息*/

voidgoonorder();/*继续订购*/

voidaccount();/*结账模块*/

voidloginout();/*退出系统*/

voidsuccess();/*订购成功*/

voidselect();/*选择菜单*/

voidmain()/*主程序*/

{

select();

}

intOrdernum=0;

intj=0;

intLast;

floatusersum=0.00;

structproduct/*商品结构*/

{

intproductnum;/*商品编号*/

charproductname[21];/*商品名称*/

charproducttype[21];/*商品型号*/

floatproductprice;/*商品价格*/

charproductplace[21];/*商品产地*/

intproductstock;/*库存数量*/

intproductordered;/*已订购数量*/

}pro[10];

structuserproduct/*用户结构*/

{

intusernum;/*用户订购商品编号*/

intuserquantity;/*用户订购数量*/

charproductname[21];/*商品名称*/

charproducttype[21];/*商品型号*/

floatproductprice;/*商品价格*/

charproductplace[21];/*商品产地*/

}userpro[100];

voidDispMainmenu();/*主菜单*/

voidDispMaintainmenu();/*管理维护菜单*/

voidDispMainmenu()

{

system("cls");

printf("\n\n\n\n\n\n");

printf("**************************欢迎使用商品订购系统v1.0******************************\n\n");

printf("┏━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃1.浏览商品┃\n");

printf("┃2.按名称查找┃\n");

printf("┃3.按型号查找┃\n");

printf("┃4.管理维护┃\n");

printf("┃0.退出系统┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━┛\n\n\n");

printf("********************************************************************************\n\n\n\n\n");

printf("请选择~4:

");

}

voidDispMaintainmenu()

{

printf("\n\n\n\n\n\n\n");

printf("******************************管理维护子菜单************************************\n\n");

printf("┏━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃1.查看商品┃\n");

printf("┃2.增加商品┃\n");

printf("┃0.返回主菜单┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━┛\n\n\n");

printf("********************************************************************************\n\n\n\n\n");

printf("请选择~4:

");

}

voidopen();/*管理员浏览*/

voidopen()

{inti;

FILE*fp;

fp=fopen("shangpin.dat","rb");

printf("\n\n\n\n\n\n\n\n编号名称型号价格产地库存已订购\n");

for(i=0;i<10;i++)

{fread(&pro[i],sizeof(structproduct),1,fp);

printf("%4d%-10s%-12s%9.2f%-5s%5d%4d\n",pro[i].productnum,pro[i].productname,pro[i].producttype,pro[i].productprice,pro[i].productplace,pro[i].productstock,pro[i].productordered);

}

fclose(fp);

printf("\n\n\n\n\n共有%d条记录!

\n\n",i);

printf("按任意键继续……");

getch();

}

voidnamefind();/*按名称查找*/

voidnamefind()

{inti,k,r=0;

charstr[21],c3;

FILE*fp;

fp=fopen("shangpin.dat","rb");

system("cls");

printf("\n请输入你要查找的名称:

");

scanf("%s",&str);

printf("\n您所查找的%s\n",str);

for(i=0;i<10;i++)

{fread(&pro[i],sizeof(structproduct),1,fp);

k=strcmp(pro[i].productname,str);

if(k==0)

{printf("%4d%-10s%-12s%9.2f%-5s%5d%4d\n",pro[i].productnum,pro[i].productname,pro[i].producttype,pro[i].productprice,pro[i].productplace,pro[i].productstock,pro[i].productordered);

r=r+1;}

}

fclose(fp);

printf("\n共有%d条记录!

\n",r);

if(r!

=0)

{printf("进入选购请按任意键,结账请按p,取消请按ESC:

");

c3=getch();

if(c3==27)

{

printf("\n");system("cls");select();

}

elseif(c3=='p'||c3=='P')

account();

printf("\n");

order();

}

else

{printf("\n按任意键继续……\n");

getchar();

select();}

}

voidtypefind();/*按型号查找*/

voidtypefind()

{inti,k,r=0;

charstr[21],c3;

FILE*fp;

fp=fopen("shangpin.dat","rb");

system("cls");

printf("\n请输入你要查找的型号:

");

scanf("%s",&str);

printf("您查找的是%s\n",str);

for(i=0;i<10;i++)

{fread(&pro[i],sizeof(structproduct),1,fp);

k=strcmp(pro[i].producttype,str);

if(k==0)

{printf("%4d%-10s%-12s%9.2f%-5s%5d%4d\n",pro[i].productnum,pro[i].productname,pro[i].producttype,pro[i].productprice,pro[i].productplace,pro[i].productstock,pro[i].productordered);

r=r+1;}

}

fclose(fp);

printf("共有%d条记录!

\n",r);

if(r!

=0)

{printf("进入选购请按任意键,结账请按p,取消请按ESC:

");

c3=getch();

if(c3==27)

{

printf("\n");system("cls");select();

}

elseif(c3=='p'||c3=='P')

account();

printf("\n");

order();

}

else

printf("\n按任意键继续……\n");

getchar();

select();

}

voidprosave();/*proincrease()调用的存储函数*/

voidprosave()

{

FILE*fp;

inti;

if((fp=fopen("shangpin.dat","wb"))==NULL)

{printf("不能打开文件!

\n");

return;

}

for(i=0;i<10;i++)

if(fwrite(&pro[i],sizeof(structproduct),1,fp)!

=1)

printf("写入文件错误");

fclose(fp);

}

voidproopen();/*proincrease()调用的显示函数*/

voidproopen()

{inti;

FILE*fp;

fp=fopen("shangpin.dat","rb");

printf("编号名称型号价格产地库存已订购\n");

for(i=0;i<10;i++)

{fread(&pro[i],sizeof(structproduct),1,fp);

printf("%4d%-10s%-12s%9.2f%-5s%5d%4d\n",pro[i].productnum,pro[i].productname,pro[i].producttype,pro[i].productprice,pro[i].productplace,pro[i].productstock,pro[i].productordered);

}

fclose(fp);

}

voidproincrease()/*增加商品*/

{

inti;

charc3;

system("cls");

for(i=0;i<10;i++)

{

do

{

pro[i].productprice=0.00;

pro[i].productnum=1+i;

printf("商品编号:

");

printf("%d\n",pro[i].productnum);

printf("商品名称:

");

scanf("%s",pro[i].productname);

printf("商品型号:

");

scanf("%s",pro[i].producttype);

printf("商品价格:

");

scanf("%f",&pro[i].productprice);

printf("商品产地:

");

scanf("%s",pro[i].productplace);

printf("库存数量:

");

scanf("%d",&pro[i].productstock);

do

{printf("已订购数量:

");

scanf("%d",&pro[i].productordered);

}

while(pro[i].productordered<0||pro[i].productordered>pro[i].productstock);

printf("保存请按任意键,取消请按N:

");

printf("\n");

c3=getch();

}

while(c3=='n'||c3=='N');

}

prosave();

proopen();

printf("\n按任意键继续……\n");

getch();

select();

}

voidload();/*浏览商品进入选购*/

voidload()

{

inti;

charc3;

FILE*fp;

fp=fopen("shangpin.dat","rb");

printf("\n\n\n\n\n\n\n\n\n编号名称型号价格产地库存已订购\n");

for(i=0;i<10;i++)

{fread(&pro[i],sizeof(structproduct),1,fp);

printf("%4d%-10s%-12s%9.2f%-5s%5d%4d\n",pro[i].productnum,pro[i].productname,pro[i].producttype,pro[i].productprice,pro[i].productplace,pro[i].productstock,pro[i].productordered);

}

fclose(fp);

printf("\n共有%d条记录!

\n",i);

printf("\n\n\n\n\n\n");

printf("进入选购请按任意键,结账请按p,取消请按ESC:

");

c3=getch();

if(c3==27)

{

printf("\n");system("cls");select();

}

elseif(c3=='p'||c3=='P')

account();

printf("\n");

order();

}

voidorderquantity();/*输入订购数量*/

voidorderquantity()

{

charch4;

do

{

printf("请输入您的订购数量(1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1