




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
One 此课程设计共分为几个部份:需求分析,数据流程图,数据字典,全局ER图,局部ER图,关系模式,建库和建表的SQL语句,表的约束SQL语句,建视图的SQL语句,存储过程和触发器的SQL语句,前台抓图,所有过程,决无抄袭。从中我们学到了很多,对数据库这门课程有了更多了解。注意:商品编号的编法前2位为部门编号,次两位位批次,后4位为商品名编号 数据流程图:部门提出购买计划交给仓库,仓库通过与现有库存作对比,如有必要进货,就将此购买计划交给采购员,采购员负责与供应商进行谈价,达成协议,于是填写合同,采购员带回的叫做预订单,供应商留下的叫做订单。供应商带着订单送货到企业,仓库拿出预订单核对,经检查订单与预订单匹配则确认有效托收,托收后进行检验入库,入库同时填写好入库单作好登记。企业各个部门根据所需的物资设备总额和部门生产活动需求开出出库申请表。仓库根据现有的物资判断是否该出库,如果可以就根据出库申请核对发放设备,并填写好出库单作好登记。设备使用完毕后需要及时还库登记填写好还库单,如有超期或损坏现象就要如实交罚金并登记。数据字典:1.对图中采购,在数据字典中可对其作如下描述:处理过程:确定订单说明:采购员以购买计划为准,确定价格,数量,总金额,供应商,在采购过程中生成订单及订单.输入:计划单编号输出:订单 预订单程序提要: A在购买计划表中查找是否在价格范围之内 B在价格范围之内,则单价乘以数量是否在总金额范围之内 C若A,B都满足,则添加一条记录 D处理完后,形成订单和预订单2.对图中检验,在数据字典中可对其作如下描述: 处理过程:核对物品信息后生成入库单说明:送货员将物品送到后,管理员以预订单为准核对物品信息,确定无误后,登记入库单.输入:预订单编号输出:入库单程序提要: A在预订单中查找物品(例如:M)信息进行核对 B如若无误,则在入库单中添加一条物品(M)记录 C核对完后,形成入库单3.对图中入库,在数据字典中可对其作如下描述:处理过程:入库后修改(增加)现有库存表说明:入库后增加现有库存表输入:入库单编号输出:现有库存表程序提要: A在入库单中查找到每一种物品的数量,在现有库存表中相应增加 B处理完后,形成现有库存表4.对图中出库,在数据字典中可对其作如下描述:处理过程:出库后登记入库单并修改(减少)现有库存表说明:提货员提交出库申请,由管理员批准后,登记出库单并修改(减少)现有库存表输入:出库申请编号输出:出库单 现有库存表程序提要:A在出库申请单中查找物品(例如:M)信息进行核对,出库数量是否超过库存或出库后数量小于最小库存 B如若无误,则在出库单中添加一条物品(M)记录 C核对完后,形成出库单 D在出库单中查找到每一种物品的数量,在现有库存表中相应加减少 E处理完后,形成现有库存表5.对图中对比,在数据字典中可对其作如下描述:处理过程:核对归还物品信息后生成还库单说明:将物品归还时,管理员以出库单为准核对物品信息,确定无误后,登记还库单,如若有误,登记惩罚表.输入:出库单编号输出:还库单 惩罚表程序提要: A管理员在出库单中查找物品(例如:M)信息进行核对 B如若无误,则在还库单中添加一条物品(M)记 C核对完后,形成入库单 D如若有误,则登记惩罚表 E处理完后,形成惩罚表6.对图中归还入库,在数据字典中可对其作如下描述:处理过程:还库后修改(增加)现有库存表说明:还库后增加现有库存表输入:还库单编号输出:现有库存表程序提要: A在还库单中查找到每一种物品的数量,在现有库存表中相应增加 B处理完后,形成现有库存表关系模式:购买计划表(计划编号,商品编号,商品名,数量,单价范围,所需部门,金额范围,部门经理签字,计划时间,);订单(订单号,商品编号,商品名,数量,价格,供应商,所求单位,采购员,送货时间,计划编号);预订单(预订单号,商品编号,商品名,数量,价格,供应商,所求单位,采购员,收货时间订单号);入库单(入库单编号,商品号,商品名,数量,价格,入库时间,采购员,仓库管理人员,预订单号);仓库现有库存表(商品编号,商品名,最大库存,最小库存,现有库存);申请出库(申请表单号,商品编号,商品名,数量,价格,出库时间,还库时间,部门名称,部门经理签字);出库单(出库表编号,出库数量 商品号 商品名,出库性质,所需部门,仓库管理员,提货人员,出库时间,还库时间,出库申请表号);还库表(还库表单号,商品编号,商品名,数量,归还部门,出库时间,还库时间,仓库管理员,出库表编号);惩罚表(惩罚表编号,所罚部门,商品编号,商品名,拖还时间,是否损坏,罚款额,罚款时间);建库和建表SQL语句:create database 仓库管理系统on(name=仓库_dat,filename=e:Microsoft SQL ServerMSSQLData仓库.mdf,size=10,maxsize=150)Log on (name=仓库_log,filename=e:Microsoft SQL ServerMSSQLData仓库.ldf,size=10,maxsize=80)create table 购买计划表 (计划编号 char(10) primary key,商品编号 char(12) not null,商品名 char(16),数量 float(8),单价范围 float(8) ,所需部门 char(30),金额范围 float(8),部门经理签字 char(10),计划时间 datetime,);create table 订单(订单号 char(10) primary key,商品编号 char(12) not null,商品名 char(16),数量 float(8),价格 money,供应商 char(30),所求单位 char(30),采购员 char(16),送货时间 datetime,计划编号 char(10) references 购买计划表(计划编号) );create table 预订单(预订单号 char(10) primary key,商品编号 char(12) not null,商品名 char(16),数量 float(8),价格 money,供应商 char(30),所求单位 char(30),采购员 char(16),收货时间 datetime,订单号 char(10) references 订单(订单号) );create table 入库单(入库单编号 char(10) primary key,商品号 char(12) not null,商品名 char(16), 数量 float(8),价格 money,入库时间 datetime,采购员 char(16),仓库管理人员 char(16),预订单号 char(10) references 预订单 (预订单号);create table 出库申请(出库申请表单号 char(10) primary key ,商品编号 char(12),商品名 char(16),数量 float(8),价格 money,出库时间 datetime,还库时间 datetime,部门名称 char(30),部门经理签字 char(16);create table 出库单(出库表编号 char(10)primary key,出库数量 float(8),商品号 char(10),商品名 char(16),出库性质 char(10),所需部门 char(30),仓库管理员 char(16),提货人员 char(16),出库时间 datetime,还库时间 datetime,出库申请表单号 char(10)references 出库申请 (出库申请表单号) );create table 惩罚表(惩罚表编号 char(10)primary key,所罚部门 char(30),商品编号 char(10),商品名 char(16),拖还时间 int,是否损坏 char (4), 罚款额 float(8),罚款时间 datetime);create table 仓库现有库存表(商品编号 char(10) primary key ,商品名 char(16),最大库存 float(10),最小库存 float(10),现有库存 float(10);表的约束SQL语言:/*将单价范围订在10到50之间*/alter table 购买计划表add constraint 单价范围 check(单价范围 between 10 and 50);/*金额范围必须小于50000*/alter table 购买计划表add constraint 金额范围 check(金额范围最小库存)*/create proc 判断是否该出库 商品编号 char(10), 要求出库数量 float(8) as if exists (select *from 仓库现有库存表 where 商品编号=商品编号)begin if exists(select*from 仓库现有库存表 where (现有库存-要求出库数量)最小库存) rollback transactionraiserror(你现在不能从仓库中取出商,16,10)end/*测试程序,在,中填入数据*/execute 判断是否该出库触发器的SQL语句:/*不准修改罚款金额的存储过程*/create trigger 修改罚款金额 on 惩罚表for update asif update(罚款额)beginrollback transactionraiserror(在未交罚金前不能修改罚款金额,16,10)insert into modify_logvalues (current_user,getdate()select* from modify_logend/*为了预防超期不准修改还库时间的存储过程*/create trigger 修改还库时间 on 出库单for update asif update(还库时间)beginrollback transactionraiserror(在未交还库前不能修改还库时间,16,10)insert into modify_logvalues (current_user,getdate()select* from modify_logend/*为了预防超期不准修改出库时间的存储过程*/create trigger 修改出库时间 on 出库单for update asif update(出库时间)beginrollback transactionraiserror(能修改出库时间,16,10)insert into modify_logvalues (current_user,getdate()select* from modify_logendinsert into 购买计划表(计划编号, 商品编号, 商品名 , 数量 ,单价范围 ,所需部门 , 金额范围 ,经理签字 ,计划时间 )values(0000000001,0000000003,滑雪板,200,35,策划部,8000,李兴玉,2003/6/1) insert into 订单(订单号 ,商品编号,商品名 ,数量 ,价格 , 供应商 , 所求单委 ,采购员 ,送货时间 ,计划编号 ) values(0000000011,0000000003, 滑雪板,200,30,谢仁公司,物资公司,谢海宁,2003/6/2,0000000001)insert into 预订单(预订单号 ,商品编号,商品名 ,数量 ,价格 , 供应商 , 所求单委 ,采购员 ,送货时间 ,订单号 ) values(0000000004,0000000003, 滑雪板,200,30,谢仁公司,物资公司,谢海宁,2003/6/2,0000000011)(因为我们数据的插入是手动生成的,现只给出三个表的数据插入)前台抓图:1.登录窗口(拥有两个登录方式,不同的方式访问权限不同)Two:#include #include #include #include struct Infochar num20; char name20;int price; int amount;char menu() /*菜单选择函数*/ char n; /*n记录选择的菜单*/ system(cls); puts(tt 欢迎来到仓库货物管理系统 ); puts(tt*MENU*n); puts(tt* 1.录入货物信息 *n); puts(tt* 2.显示货物信息 *n); puts(tt* 3.查找货物信息 *n); puts(tt* 4.修改货物信息 *n); puts(tt* 5.删除货物信息 *n); puts(tt* 6.退出系统 *n); puts(tt*n); puts(*); printf(* 请选择你要输入数(1-6): *n); puts(*); while(1) n=getchar(); getchar(); if(n6) puts(*); printf(* 出错了!请再次输入(1-6): *n); puts(*); else break; return n; void append() /*货物信息输入函数*/ struct Info info; FILE * fp; char ch;if(fp=fopen(F:testfilemolde123.txt,wb) = NULL) printf(*n); printf(* 不能打开文件! *n); printf(*n); getch(); exit(1); do printf(tnum:); gets(info.num); printf(tname:); gets(); printf(tprice:); scanf(%d,&info.price); printf(tamount:); scanf(%d,&info.amount); getchar(); fwrite(&info,sizeof(info),1,fp); printf(*n); printf(* 还需要输入吗?(Y/N): *n); printf(*n); ch=getchar(); getchar(); while(ch=Y|ch=y); fclose(fp); void printf1() printf(*n); printf(tt%-10st%-10st%-10st%-10sn,num,name,price,amountn);printf(*n); void printf2(struct Info info) printf(-n); printf(tt%-10st%-10st%-10dt%-10dn,info.num,,info.price,info.amount ); printf(-n); void display() /*货物信息显示函数*/ struct Info info; FILE * fp; int m=0; if(fp=fopen(F:testfilemolde123.txt,rb)=NULL) printf(*); printf(* 不能打开文件! *); printf(*); getch(); exit(1); while(fread(&info,sizeof(info),1,fp)=1) m+;if(m=1)printf1(); printf2(info);if(m!=0)&(m%10=0) printf(*n); printf(* 输入任何键继续 *); printf(*n); getch(); puts(nn); printf1(); fclose(fp); printf(*n); printf(* 总共有%d条记录在其中! *n,m); printf(*n); getch(); void search() /*货物信息查询函数*/ struct Info info; FILE * fp; int flag; /* flag为 1 按编号查询 ,flag为 2 按姓名查询*/ int total=0; /*记录符合条件的记录的个数*/ char ch10; char f; if(fp=fopen(F:testfilemolde123.txt,rb) = NULL) printf(*n); printf(* t 不能打开文件! *n); printf(*n); getch(); exit(1); do rewind(fp); printf(*n);printf(* 查询通过(1:编号 2:姓名): *n); printf(*n);while(1) scanf(%d,&flag); getchar(); if(flag2) printf(*n); printf(* 出错了!请再次输入1:编号2:姓名 *n); printf(*n); else break; if(flag=1) /*按编号进行查询*/ printf(*n); printf(* 请输入你要查询的编号: *n); printf(*n); gets(ch); total=0; /*符合条件的记录数*/ while(fread(&info,sizeof(info),1,fp)=1) if(strcmp(ch,info.num)=0) total+; if(total=1) printf1(); printf2(info); else /*按姓名进行查询*/ printf(*n); printf(* 请输入你要查询的姓名: *n); printf(*n); gets(ch); total=0; while(fread(&info,sizeof(info),1,fp)=1) if(strcmp(ch,)=0) total+; if(total=1) printf1(); printf2(info); printf(*n); printf(* 总共有%d记录在其中! *n,total); printf(*n); printf(*n); printf(* 还需要查询吗?(Y/N): *n); printf(*n); f=getchar(); getchar(); while(f=Y|f=y); fclose(fp); void modify() /*货物信息修改函数*/ struct Info info;FILE * fp1,* fp2;int flag;char ch10;char f;do if(fp1=fopen(F:testfilemolde123.txt,rb) = NULL) printf(*n); printf( * 不能打开文件! *n);printf(*n); getch(); exit(1); if(fp2=fopen(F:testfilemolde456.txt,wb) = NULL) printf(*n); printf( * 不能打开文件! *n);printf(*n); getch(); exit(1); printf(*n);printf(* 请输入你要修改的货物编号: *n); printf(*n);gets(ch);flag=0; while(fread(&info,sizeof(info),1,fp1)=1) if(strcmp(ch,info.num)=0) printf1(); printf2(info); printf(*n); printf(* 请输入新的信息: *n); printf(*n); printf(tnum:); gets(info.num); printf(tname:); gets(); printf(tprice:); scanf(%d,&info.price); printf(tamount:); scanf(%d,&info.amount); getchar();flag=1; fwrite(&info,sizeof(info),1,fp2); fclose(fp1); fclose(fp2); if(flag=1) printf(*n); printf(* 修改成功! *n);printf(*n);remove(F:testfilemolde123.txt);rename(F:testfilemolde456.txt,F:testfilemolde123.txt); else printf(*n); printf(* 不能找到这个记录! *n); printf(*n); printf(*n); printf(* 还修改其他吗?(Y/N): *n); printf(*n); f=getchar(); getchar();while(f=y|f=Y); void Delete() /*货物信息删除函数*/ struct Info info;FILE * fp1,* fp2;int flag;char ch10;char f;do if(fp1=fopen(F:testfilemolde123.txt,rb) = NULL) printf(*n); printf(* t 不能打开文件! *n); printf(*n); getch(); exit(1); if(fp2=fopen(F:testfilemolde456.txt,wb) = NULL) printf(*n); printf(* t 不能打开文件! *n); printf(*n); getch(); exit(1); printf(*n); printf(* 请输入你需要删除货物的编号: *n); printf(*n); gets(ch); flag=0; while(fread(&info,sizeof(info),1,fp1)=1) if(strcmp(ch,info.num)=0) printf1(); printf2(info); flag=1; break; else fwrite(&info,sizeof(info),1,fp2); fclose(fp1); fclose(fp2); if(flag=1) printf(*n); printf(* 删除成功! *n); printf(*n);remove(F:testfilemolde123.txt);rename(F:testfilemolde456.txt,F:testfilemolde123.txt); else printf(*n); printf(* 不能找到这个记录! *n); printf(*n); printf(*n); printf(* 还删除其他吗?(Y/N): *n); printf(*n); f=getchar(); getchar();while(f=y|f=Y); void main() /*主函数*/ while(1) int a; char f; char ch10; char num20=12345; printf(please input the secret :n); scanf(%s,ch); if(strcmp(num,ch)=0) a=1; if(a=1) printf(nplease enter in the telproject !n); f=getchar(); getchar(); break; else printf(n the secret is error); printf(please input the right secret); while(1) switch(menu() case1:append();break; case2:display();break; case3:search();break; case4:modify();break; case5:Delete();break; case6:exit(0);break; three目 录1课程设计目的和要求21.1课程设计的目的:21.2课程设计的要求:22课程设计任务内容:23详细设计说明33.1功能模块图:33.2数据结构设计:43.3功能模块设计:54软件使用说明:65课程设计心得与体会:66参考文献:77附录:部分程序清单:7课程设计目的和要求 1.1 课程设计的目的:通过一个学年的学习,对c程序设计这门课程之中所讲的知识有了一定的了解。但是作为一名合格的大学生,不仅要认真阅读课本知识,还要通过上机实践来增强和巩固自己的知识。特别是作为工科类学生,更要注重实践这一环节。因为只有这样我们才能成为合格的计算机人材。1.2 课程设计的要求:在实践过程之中,重要的是独立思考,这样,不仅有利于提高自己对知识的理解,还更有助于提高自己的实践动手能力。与此同时,还应该注意主动与别人交流,这样便有利于就业之后与团队进行合作。2 课程设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东官洲街道环监所招聘模拟试卷及答案详解(网校专用)
- 2025黑龙江齐齐哈尔市红十字中心血站人员招聘1人模拟试卷及答案详解1套
- 2025安徽蚌埠市怀远县教育局所属事业单位紧缺专业人才引进(校园招聘)15人模拟试卷及答案详解(名师系列)
- 2025内蒙古呼和浩特市新城区中医蒙医医院(新城区保合少镇卫生院)招聘1人考前自测高频考点模拟试题完整答案详解
- 2025春季中国东航北京分公司校园招聘考前自测高频考点模拟试题含答案详解
- 2025年山东出版集团有限公司山东出版传媒股份有限公司招聘(192名)考前自测高频考点模拟试题及答案详解1套
- 2025年返聘人员重新签订的劳动合同
- 2025股权分配合同协议书范本
- 2025广东广州市中山大学孙逸仙纪念医院超声科医教研岗位招聘考前自测高频考点模拟试题及1套完整答案详解
- 2025江苏南京大学医院事业编制和校聘岗位招聘考前自测高频考点模拟试题及完整答案详解1套
- 大学生职业规划大赛《智能焊接技术专业》生涯发展展示
- 2025新外研版初中英语七年级上全册课文翻译
- 检验科室内质控培训课件
- 七一党课:传承红色基因勇担时代使命2025年建党104周年“七一”专题党课
- 桥梁拆除施工质量保证技术措施
- 中国电动摩托车行业发展趋势及发展前景研究报告2025-2028版
- 县红十字会日常管理制度
- 2025-2030年中国冷链物流行业深度分析及发展前景与发展战略研究报告
- 中国传统节日中秋节习俗民俗简介介绍主题班会
- 教育学原理项贤明题库
- 《王戎不取道旁李》教案
评论
0/150
提交评论