数据库课程设计文档格式1.docx
- 文档编号:24521984
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:34
- 大小:454.41KB
数据库课程设计文档格式1.docx
《数据库课程设计文档格式1.docx》由会员分享,可在线阅读,更多相关《数据库课程设计文档格式1.docx(34页珍藏版)》请在冰豆网上搜索。
数据库课程设计文档格式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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 文档 格式
![提示](https://static.bdocx.com/images/bang_tan.gif)