商品库存管理系统课程设计
- 格式:doc
- 大小:759.24 KB
- 文档页数:24
库存管理系统课程设计一、课程目标知识目标:1. 学生理解库存管理系统的基本概念,掌握库存管理的基本流程和功能模块。
2. 学生掌握数据库的基本操作,能运用SQL语句进行库存数据的增、删、改、查。
3. 学生了解库存管理系统的开发环境和工具,掌握一定的编程技巧。
技能目标:1. 学生能够独立设计并实现一个简单的库存管理系统,具备实际操作能力。
2. 学生能够通过分析实际问题,运用所学知识解决库存管理中的问题,具备一定的解决问题的能力。
3. 学生能够进行团队协作,共同完成库存管理系统的设计与实现,提高沟通与协作能力。
情感态度价值观目标:1. 学生通过学习库存管理系统,培养对信息技术的兴趣和爱好,提高学习积极性。
2. 学生在学习过程中,培养认真负责、严谨细致的工作态度,养成良好的编程习惯。
3. 学生通过团队协作,学会尊重他人意见,培养合作精神,提高人际沟通能力。
课程性质分析:本课程为信息技术课程,旨在使学生掌握库存管理系统的基础知识,培养实际操作和解决问题的能力。
学生特点分析:初中年级学生,对计算机技术有一定的基础,好奇心强,喜欢动手实践,但注意力容易分散,需要激发兴趣和引导。
教学要求:1. 注重理论与实践相结合,强化动手实践能力。
2. 教学过程中注重启发式教学,引导学生主动思考、提问和解决问题。
3. 注重团队合作,培养学生的沟通与协作能力。
二、教学内容1. 库存管理系统概述- 库存管理的基本概念- 库存管理的意义和作用- 库存管理系统的发展趋势2. 库存管理系统的功能模块- 商品信息管理- 库存管理- 订单处理- 报表统计与分析3. 数据库基础知识- 数据库的基本概念- 数据库的设计与建立- SQL语句的基本操作(增、删、改、查)4. 编程工具与环境- 编程工具的选择(如:Visual Studio、Eclipse等)- 开发环境搭建(如:安装配置数据库、编程软件等)5. 系统设计与实现- 系统需求分析- 系统模块划分- 编程实现各模块功能6. 系统测试与优化- 系统测试方法与步骤- 常见问题分析与解决- 系统性能优化7. 团队协作与项目管理- 项目分工与协作- 项目进度管理与质量控制- 沟通技巧与团队协作教学内容安排与进度:第1-2周:库存管理系统概述、功能模块介绍第3-4周:数据库基础知识、SQL语句基本操作第5-6周:编程工具与环境、系统设计与实现第7-8周:系统测试与优化、团队协作与项目管理教学内容与教材关联:本教学内容与教材《信息技术》中关于数据库应用、系统设计与实现等相关章节紧密关联,确保学生能够掌握库存管理系统的基础知识和实践技能。
目录引言 (2)一、系统分析 (2)(一)选题的背景 (2)(二)系统需求分析 (3)(三)系统的开发及功能描述 (4)(四)系统逻辑模型 (5)二、系统设计 (6)(一)系统总体结构设计 (6)(二)数据库设计 (6)(三)系统功能模块的详细设计 (7)三、系统实现 (11)四、系统开发总结 (16)参考文献 (16)附录 (17)1引言随着我国市场经济的蓬勃发展和人们对物质水平需求的增加,各行各业都处于一个飞速发展的时期,行业的快速发展必然导致各企业之间的竞争更加激烈,为了使自己的企业在竞争中能够站稳脚跟,不被激烈的竞争环境所压倒,必然要求企业加强对自身的管理,提高企业的经营效率。
本库存管理系统的开发主要包括前端应用程序以及后台数据库的建立和维护两个方面。
经过分析,我选用myeclipse来开发系统,利用其提供的各种面向对象的开发工具,来操纵数据库。
本论文正文分为五部分。
第一部分介绍了开发库存管理系统的必要性以及如何开发,并简要概述了myeclipse和SQL Server 2000。
第二部分介绍系统开发前的准备,包括系统的需求说明及系统总体结构设计和详细设计。
第三部分并着重阐述了系统主要功能模块的具体实现。
第四部分是系统开发的后期工作,讲到了该系统的不完善之处及本次系统开发过程中一些切身的感受与想法,是我做这次课程设计的心得体会一、系统分析(一)选题的背景企业的库存物资管理往往是很复杂、很繁琐的。
由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。
由于超市的行业特殊性,产品种类繁多,业务量巨大,若仍然采用人工记账的方式,必然不能满足企业的需求,企业需要利用计算机来进行库存管理,因此需要构造一个库存管理系统。
一个完整的企业物资供应管理系统应包括采购计划管理,合同收托管理、仓库库存管理、定额管理、统计管理、财务管理等模块。
商品库存系统c语言课程设计一、教学目标本课程旨在通过C语言编程教学,使学生掌握商品库存系统的开发方法,培养学生的编程能力、问题解决能力和团队合作能力。
具体的教学目标如下:知识目标:使学生掌握C语言的基本语法、数据结构和算法,能够运用C语言进行程序设计。
技能目标:培养学生能够使用C语言独立编写和调试程序,具备基本的软件开发能力。
情感态度价值观目标:培养学生对编程的兴趣和热情,培养学生的创新意识和团队合作精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和程序设计。
具体的教学内容如下:1.C语言的基本语法:包括变量、数据类型、运算符、控制语句等。
2.数据结构:包括数组、链表、栈和队列等。
3.算法:包括排序算法、查找算法、递归算法等。
4.程序设计:包括模块化设计、面向对象设计等。
三、教学方法本课程的教学方法主要包括讲授法、案例分析法、实验法等。
具体的教学方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、算法和程序设计等内容,使学生掌握相关知识。
2.案例分析法:通过分析实际的商品库存系统案例,使学生了解和掌握程序设计的方法和技巧。
3.实验法:通过实验课的形式,使学生亲自动手编写和调试程序,培养学生的实际编程能力。
四、教学资源本课程的教学资源包括教材、实验设备、多媒体资料等。
具体的教学资源如下:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习材料。
2.实验设备:提供计算机实验室,使学生能够进行实际编程和调试。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。
五、教学评估为了全面、公正地评估学生在商品库存系统C语言课程中的学习成果,我们将采用多种评估方式相结合的方法。
具体包括:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估其学习态度和理解程度。
2.作业:布置与课程内容相关的编程作业,评估学生对C语言编程的掌握情况。
3.考试:包括期中考试和期末考试,以笔试形式评估学生的知识掌握和编程能力。
第1章系统分析与设计1.1 系统分析1.1.1解决问题运用现代信息化和智能化的管理方式,解决商品库存信息在日常生活中易于丢失、遗忘,不易保存、管理的问题,从而使企业和商家能够更全面,更直观地了解到商品库存信息。
1.1.2软件功能将商品库存信息进行入库、出库、查询、修改、盘点、排序等操作,更直观反映商品库存信息。
1.2 系统设计1.2.1系统设计思路以简便快捷和人性化为最终目标,力求最简单有效地管理商品库存信息。
1.2.2系统功能划分通过对数据的不同处理方式,将系统分成了商品入库、商品出库、查询商品、修改商品、日盘点、出库排序六大类,在查询商品中又包含了关键字(选项)查询,在出库排序中又包含升降排序等功能。
1.2.3功能结构图图0第2章详细设计与编码2.1详细设计2.1.1主要函数算法设计图1.1.2流程图1.主函数:main函数函数原型:void main()功能是输出一个欢迎界面,并调用函数,提供1-7个功能选项。
图22.分函数(1)商品入库:input函数原型:void input()图32)商品出库:output函数原型:void output()功能是商品出库(减少库存商品数量)图4(3)查询商品find函数原型:void find()void find_1()void find_2()void find_3()三种方式查询图51,.按名称查询图6 2. 按代码查询图73.按生产商查询图84.修改商品change()函数原型:void change()图96,出库排序图102.2系统编码#include "stdio.h"#include "string.h"#include<stdlib.h>#define N 80 /*最大容量限定*/struct a /*商品库内结构体*/{char name[10];int numb;char boss[6];int date ;int count;int price;int chu;int ru;}goods[1];struct a product[N]={{"ac",1,"AC",1,15,5,0,0},{"bd",2,"BD",2,10,20,0,0}}; int num=2;void read(){FILE*fp;int i;system("cls");fp=fopen("text.txt","r+");if(fp==NULL){printf("不能打开文件!\n");exit(0);}i=0;while(!feof(fp)){ if(fread(&product[i],sizeof( struct a),1,fp)==1)i++;} num=i;fclose(fp);}void save()/*保存商品的信息*/{FILE*fp;int i;if((fp=fopen("text.txt","w"))==NULL){printf("cannot open file");return;}for(i=0;i<num;i++){if(fwrite(&product[i],sizeof(struct a),1,fp)!=1) printf("file write error\n");}system("cls");/*清屏*///printf("商品已保存!\n");//getch();fclose(fp);}void input(){ char a[10],g;int m,i;printf("输入商品名称:");scanf("%s",a);for(i=0;i<num;i++){ if(strcmp(product[i].name,a)==0){printf("请输入商品数量:");scanf("%d",&m);product[i].count=product[i].count+m;printf("入库后该商品的数量:");printf("%d",product[i].count);printf("该商品入库量:");product[i].ru=m;printf("%d",product[i].ru);getch();break;}}if(i>=num){printf("库存中无此商品!\n");printf("请输入商品名称:");scanf("%s",product[num].name);printf("请输入商品代码:");scanf("%d",&product[num].numb);printf("请输入商品生产商:");scanf("%s",product[num].boss);printf("请输入商品生产日期:");scanf("%d",&product[num].date);printf("请输入商品数量:");scanf("%d",&product[num].count);printf("请输入商品价格:");scanf("%d",&product[num].price);printf("请输入商品入库:");scanf("%d",&product[num].ru);printf("请输入商品出库:");scanf("%d",&product[num].chu);num++;save();}printf("是否还想入库商品??\n");printf("按y为继续添加,按n为不添加");scanf("\n%c",&g);if(g=='y'){input();getch();}}void output(){int k,i;char str[10],l;system("cls"); /*清屏*/printf("\n请输入要出库的商品名称:");scanf("%s",str);getchar();for(i=0;i<num;i++){if(strcmp(str,product[i].name)==0){printf("\n请输入出库商品数量:");scanf("%d",&k);if(k<=product[i].count){printf("\n剩余的库存商品数量:%d",product[i].count-k);product[i].count=product[i].count-k;printf("显示该库存商品的出库量:");product[i].chu=product[i].chu+k;printf("%d\n",product[i].chu);}else printf("库存数量不足\n");break;}}if(i>=num){printf("没有该商品!\r\n");}printf("是否还想出库商品??\n");printf("按y为继续出库,按n为不出库\n");l=getche();if(l=='y'){output();getch();}save();}void find_1(){char str[10];system("cls"); /*清屏*/printf("输入要找的商品的名称\n");scanf("%s",str);printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if((strcmp(str,product[i].name))==0){ printf("%s\t %d\t %s\t %d %d\t %d\t%d\t %d\n",product[i].name,product[i ].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);break;getch();}while(i>=num)printf("没有该商品");printf("按回车键返回!");getch();}void find_2(){int i;int x;system("cls"); /*清屏*/printf("输入要找的商品的代码\n");scanf("%d",&x);printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if(x==product[i].numb){ printf("%s\t %d\t %s\t %d %d\t %d\t%d\t %d\n",product[i].name,product[iproduct[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);break;getch();}while(i>=num)printf("没有该商品");printf("按回车键返回!");getch();}void find_3(){char a[6];int i;system("cls"); /*清屏*/printf("输入要找的商品的生产商\n");scanf("%s",a);printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if((strcmp(a,product[i].boss))==0){ printf("%s\t %d\t %s\t %d %d\t %d\t%d\t %d\n",product[i].name,product[i ].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);break;getch();}while(i>=num)printf("没有该商品");printf("按回车键返回!");getch();}void find (){int j;getch();printf("查询商品,用商品名称查询请按1,用代码查询请按2,用商品生产商查询请按3");scanf("%d",&j);switch(j){ case 1:printf("按商品名称查询\n");find_1();break;case 2:printf("按代码查询\n");find_2();break;case 3:printf("按生产商查询\n");find_3();break;default:break;}}void change(){int i,k;char str[10];system("cls"); /*清屏*/printf("输入准备修改的商品名称:");scanf("%s",str);for(i=0;i<num;i++)if((strcmp(str,product[i].name))==0){printf("名称\t 代码\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n\n",product[i].name,p roduct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);printf("是否修改名称<y/n>:\n");k=getche();if (k=='y'){printf("请输入新的名称:\n"); scanf("%s",product[i].name);}printf("是否修改代码<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的代码:\n"); scanf("%d",&product[i].numb);}printf("是否修改生产商<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的生产商:\n"); scanf("%s",product[i].boss);}printf("是否修改生产日期<y/n>:\n"); k=getche();if(k=='y'){printf("请输入新的生产日期:\n"); scanf("%d",&product[i].date);printf("是否修改数量<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的数量:\n"); scanf("%d",&product[i].count);}printf("是否修改价格<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的价格:\n");scanf("%d",&product[i].price);}printf("是否修改出库量<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的出库量:\n");scanf("%d",&product[i].chu);}printf("是否修改入库量<y/n>:\n");k=getche();if(k=='y'){printf("请输入新的入库量:\n");scanf("%d",&product[i].ru);}}}}void display(){int i;system("cls"); /*清屏*/printf("\n\n名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].name,pro duct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);for(i=0;i<num;i++){ printf("\n\n统计并输出商品(出库)的量\n");printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if(product[i].chu>0){printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].nam e,product[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);}printf("\n\n统计并输出商品(入库)的量\n");printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num;i++)if(product[i].ru>0){printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].nam e,product[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);}}printf("按回车键返回!");getch();}void shun(){int i;int j;printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num-1;i++)for(j=0;j<num-1-i;j++)if(product[j].chu >product[j+1].chu ){goods[0]=product[j];product[j]=product[j+1];product[j+1]=goods[0];}for(i=0;i<num;i++)printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].name,pro duct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);printf("按回车键返回!");getch();}void dao(){int i;int j;printf("名称\t 编号\t 生产商\t 生产日期\t 数量\t 价格\t出库\t入库\n");for(i=0;i<num-1;i++)for(j=0;j<num-1-i;j++)if(product[j].chu <product[j+1].chu ){goods[0]=product[j];product[j]=product[j+1];product[j+1]=goods[0];}for(i=0;i<num;i++)printf("%s\t %d\t %s\t %d\t %d\t %d\t %d\t %d\n",product[i].name,pro duct[i].numb,product[i].boss,product[i].date,product[i].count,product[i].price,product[i].chu,product[i].ru);printf("按回车键返回!");getch();}void order(){char t;system("cls"); /*清屏*/printf("对于出库的数量,你想看升序请按1,按2为降序\n");printf("\t 请选择[1/2]:\n ");t=getch();switch(t){ case'1': shun();break;case'2': dao();break;default:break;}}void quit(){system("cls"); /*清屏*/printf("\n\n\n\t\t\t →※谢谢使用※←");printf("\n\n\n\n\n\n\t ◆◆◆^ v ^ ◆◆◆");printf("\n\n\n\t\t ★〓★〓★商品库存管理系统★〓★〓★");printf("\n\n\n\t\t\t\t\t→◆作者:电气121,陈志华");printf("\n\n\t\t\t\t\t◎◎◎◎◎2013年6月\n");printf("\n\n\n\t按回车键进入主菜单:"); /*界面*/getch();}void main(){char j;save();read();printf("\n\n\n\n\n\n\t ◆◆◆^ v ^ ◆◆◆"); printf("\n\n\n\t\t\t →※欢迎使用※←");printf("\n\n\n\t\t ★〓★〓★商品库存管理系统★〓★〓★");printf("\n\n\n\t\t\t\t\t→◆作者:电气121,陈志华");printf("\n\n\t\t\t\t\t◎◎◎◎◎2013年6月\n");printf("\n\n\n\t按回车键进入主菜单:"); /*界面*/getch();do{system("cls"); /*清屏*/printf("\n");printf("\t\t\t ************\n");printf("\t\t\t * 主菜单*\n"); /*主菜单*/printf("\t\t\t ************\n\n\n");printf("\t 1 商品入库 2 商品出库\n\n\n\n");printf("\t 3 查询商品7 退出系统 4 修改商品\n\n\n\n");printf("\t 5 日盘点 6 出库排序\n\n\n");printf("\n\n");printf("\t 请选择[1/2/3/4/5/6/7]: ");j=getch();switch(j){case '1': input(); break; /*返回主菜单*/case '2': output(); break;case '3': find(); break;case '4': change(); break;case '5': display(); break;case '6': order(); break;case '7': save();quit(); break;default: break;}}while(1);}3.3测试数据1.初始数据:名称代码生产商日期数量价格入库出库"ac" 1 "AC" 1 15 5 0 0"bd" 2 "BD" 2 10 20 0 02.新增加数据:“af” 4 ”AF” 1 100 5 100 0“ad” 3 ”AD” 6 34 9 34 03.出库商品:ad 10ac 5bd 2af 502.4运行结果1.开始界面:图112.主菜单:图123.商品入库:图13 继续入库:图14 继续入库图154.商品出库图16 继续出库图17继续出库图18 继续出库图195.查询商品:图20 查询商品图216.修改商品:图22 7.日盘点:图23 8.出库排序:图24 出库量升序排序图25出库量降序排序图26 9.退出系统:图27第3章用户手册. 1.用户首先进入欢迎界面,按回车键进入到主菜单中,然后输入功能选项所对应的数字进行操作。
商品库存管理c语言课程设计一、课程目标知识目标:1. 理解商品库存管理的基本概念和原理,掌握C语言实现库存管理系统的基础知识。
2. 学会使用C语言构建库存管理系统的数据结构,如链表、结构体等。
3. 掌握C语言文件操作,实现对库存数据的读写和存储。
技能目标:1. 能够运用C语言编写商品库存管理系统的基本功能,如商品信息的增加、删除、修改和查询。
2. 学会运用调试工具,对C语言程序进行调试和优化,提高程序的稳定性和运行效率。
3. 培养独立分析和解决实际问题的能力,将所学知识应用于库存管理系统的设计和实现。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发主动学习和探究的热情。
2. 培养学生团队协作精神,学会与他人共同解决问题,提高沟通和协作能力。
3. 增强学生的实际操作能力和创新意识,认识到编程知识在解决实际问题中的价值。
本课程针对高中年级学生,结合学科特点,将课程目标分解为具体的学习成果。
在教学过程中,注重理论与实践相结合,充分考虑学生的认知水平和编程基础,以实现课程目标为导向,培养学生运用C语言解决实际问题的能力。
通过本课程的学习,学生将能够独立设计和实现一个简单的商品库存管理系统,提高编程技能和实际操作能力。
二、教学内容1. 商品库存管理基本原理:介绍库存管理系统的概念、作用和基本功能,使学生了解库存管理在实际生活中的重要性。
2. C语言基础知识回顾:回顾C语言的基本语法、数据类型、运算符、控制结构等,为后续编程打下基础。
3. 数据结构设计:讲解链表、结构体等数据结构在库存管理系统中的应用,使学生掌握如何使用C语言构建合适的数据结构。
4. 函数设计:介绍C语言函数的定义、调用和参数传递,指导学生如何将程序功能模块化。
5. 文件操作:讲解C语言文件操作的基本方法,使学生学会如何读写库存数据到文件。
6. 库存管理系统功能实现:按照教学大纲,详细讲解如何实现商品信息的增加、删除、修改和查询功能。
库存管理系统课程设计一、课程目标本节“库存管理系统课程设计”面向高中年级信息技术学科,旨在通过实践操作,使学生能够:知识目标:1. 掌握库存管理系统的基础知识,理解其在企业运营中的重要性;2. 学习数据库设计的基本原则,了解库存管理系统中数据表的结构设计;3. 识别库存管理的关键环节,如采购、入库、出库、盘点等,并理解其业务流程。
技能目标:1. 能够运用所学知识设计简单的库存管理数据库;2. 掌握至少一种数据库管理软件,进行库存数据的录入、查询、更新和删除操作;3. 通过编程或使用库存管理软件,实现库存的自动预警和优化建议。
情感态度价值观目标:1. 培养学生认真负责的工作态度,意识到数据准确性在库存管理中的重要性;2. 增强团队合作意识,通过小组合作完成库存管理系统的设计,培养学生的沟通与协作能力;3. 提高学生利用信息技术解决实际问题的兴趣,激发他们对企业运营管理的探究欲。
课程性质:本课程结合理论与实践,注重培养学生的动手操作能力,旨在将理论知识与实际应用相结合。
学生特点:高中年级学生对数据库知识有一定的了解,具备一定的信息技术基础,对实际问题探究有较高的兴趣。
教学要求:教师需提供明确的学习指导,鼓励学生主动参与,注重理论与实践相结合,通过案例分析、小组合作等形式,提高学生的实际操作能力和解决问题的能力。
教学过程中,将目标分解为具体可衡量的学习成果,以便于教学设计和评估。
二、教学内容根据课程目标,本节“库存管理系统课程设计”的教学内容如下:1. 库存管理基础知识:讲解库存管理的概念、作用和分类,结合教材相关章节,使学生理解库存管理系统在现代企业中的重要性。
2. 数据库设计原则:介绍数据库设计的基本原则,如实体关系模型、范式理论等,以教材中数据库设计章节为基础,指导学生进行库存管理数据库的设计。
3. 库存管理业务流程:分析采购、入库、出库、盘点等关键环节,结合教材中业务流程管理的相关内容,让学生了解库存管理的实际操作流程。
杭州电子科技大学《数据库课程设计》课程设计手册姓名学号设计小组长课程设计名称商品库存管理系统指导教师设计时间 2012/9/5 至 2012/9/17杭州电子科技大学管理学院编制目录第一章系统概述 (1)1.1系统开发背景 (1)1.2系统开发意义 (1)第二章系统需求分析 (2)2.1基本信息管理 (2)2.2库存管理功能 (2)2.3权限管理功能 (3)2.4业务流程图 (3)2.5数据流程图 (4)2.6数据字典 (6)第三章系统总体设计 (9)3.1 系统总体设计目标 (9)3.2 系统概念设计 (10)3.2.2关系模式 (10)第四章逻辑结构设计 (11)第五章物理结构设计 (13)第六章数据实施和维护 (13)第七章数据库系统实现 (22)7.1系统实现工具简介 (22)7.1.1SQL Server 2000简介 (22)第一章系统概述6.3系统开发背景处于社会经济技术快速发展的今天,各种各样的行业竞争日益激烈。
行业不断寻求自身的优势劣势,扬长避短,加强自己的竞争力,力争在新世纪经济利润的大蛋糕中分得一杯羹。
然而无论出于何种时期,超市永远是人们生活离不开的一部分,大街小巷随处可见的大小型超市构建起了人们点点滴滴的生活。
众所周知,若单靠工作人员手工或者借助简单的管理信息系统进行管理,特别是超市的库存,不仅耗费大量的时间精力,而且在运作中由于信息不对称或者操作的时间前后不吻合,往往错误百出,严重影响运营和工作人员的工作情绪。
例如在老式的仓库管理中在盘点一遍遍地核对清点,一不留神清点错误又要重新开始,对于出库入库也异常麻烦,经常需要闭库,停止仓库任何变动来进行专门清点工作。
由此可见,将库存管理信息化,提高仓库管理的效率,使各种货物信息明朗化,给管理人员创造方便快捷的工作环境已经迫在眉睫。
6.3系统开发意义超市管理作为计算机应用的一个分支,有着手工管理无法比拟的优点:(1).使用本系统,可以迅速提升超市的库存管理水平,为降低经营成本,大大提高超市的运作效率。
商品库存管理系统课程设计说明书商品库存管理系统课程设计说明书1.引言1.1 编写目的本文档旨在详细说明商品库存管理系统的设计与实现过程,以便于开发人员了解系统需求、功能模块、数据结构、界面设计和系统测试等方面的内容。
1.2 项目背景商品库存管理系统是一款用于管理商品库存,追踪销售和采购数据的软件。
它可以帮助企业提高库存管理效率,减少库存损失,降低运营成本,提升客户满意度。
1.3 目标与范围本项目目标是设计一个功能完善、界面友好的商品库存管理系统,能够满足企业对于库存管理的需求。
范围包括系统需求分析、系统设计、编码、测试以及最终交付等阶段。
2.需求分析2.1 用户需求2.1.1 企业管理人员能够查看商品库存数量、销售情况和采购记录等数据。
2.1.2 仓库管理员能够录入、编辑和删除商品信息,包括商品名称、库存数量、销售价格、采购价格等。
2.1.3 销售员能够查询库存数量并出售商品,系统能够自动更新库存数量。
2.1.4 采购员能够查询库存数量并采购商品,系统能够自动更新库存数量。
2.2 功能需求2.2.1 商品管理功能:包括商品信息的录入、编辑和删除等操作。
2.2.2 库存管理功能:包括库存查询、库存调整和库存报警等操作。
2.2.3 销售管理功能:包括销售记录的录入和查询等操作。
2.2.4 采购管理功能:包括采购记录的录入和查询等操作。
3.系统设计3.1 概要设计3.1.1 系统结构:采用三层架构,包括表示层、业务逻辑层和数据访问层。
3.1.2 数据库设计:设计商品表、销售记录表和采购记录表等数据库表。
3.1.3 数据流程设计:设计商品信息的录入、编辑和删除的数据流程。
3.1.4 界面设计:设计用户界面,包括登录界面、商品管理界面、库存管理界面、销售管理界面和采购管理界面等。
3.2 详细设计3.2.1 商品管理模块设计:包括商品信息的增删改查功能的设计。
3.2.2 库存管理模块设计:包括库存调整和库存报警功能的设计。
目录引言 (2)一、系统分析 (2)(一)选题的背景 (2)(二)系统需求分析 (3)(三)系统的开发及功能描述 (4)(四)系统逻辑模型 (5)二、系统设计 (6)(一)系统总体结构设计 (6)(二)数据库设计 (6)(三)系统功能模块的详细设计 (7)三、系统实现 (11)四、系统开发总结 (16)参考文献 (16)附录 (17)1引言随着我国市场经济的蓬勃发展和人们对物质水平需求的增加,各行各业都处于一个飞速发展的时期,行业的快速发展必然导致各企业之间的竞争更加激烈,为了使自己的企业在竞争中能够站稳脚跟,不被激烈的竞争环境所压倒,必然要求企业加强对自身的管理,提高企业的经营效率。
本库存管理系统的开发主要包括前端应用程序以及后台数据库的建立和维护两个方面。
经过分析,我选用myeclipse来开发系统,利用其提供的各种面向对象的开发工具,来操纵数据库。
本论文正文分为五部分。
第一部分介绍了开发库存管理系统的必要性以及如何开发,并简要概述了myeclipse和SQL Server 2000。
第二部分介绍系统开发前的准备,包括系统的需求说明及系统总体结构设计和详细设计。
第三部分并着重阐述了系统主要功能模块的具体实现。
第四部分是系统开发的后期工作,讲到了该系统的不完善之处及本次系统开发过程中一些切身的感受与想法,是我做这次课程设计的心得体会一、系统分析(一)选题的背景企业的库存物资管理往往是很复杂、很繁琐的。
由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。
由于超市的行业特殊性,产品种类繁多,业务量巨大,若仍然采用人工记账的方式,必然不能满足企业的需求,企业需要利用计算机来进行库存管理,因此需要构造一个库存管理系统。
一个完整的企业物资供应管理系统应包括采购计划管理,合同收托管理、仓库库存管理、定额管理、统计管理、财务管理等模块。
其中仓库的库存管理是整个物资供应管理系统的核心。
因此有必要开发一套独立的库存管理系统来提高企业工作效率, 而所使用的这套库存管理系统是企业生产经营管理活动中的核心,此系统必须可以用来控制合理的库存费用、适时适量的库存数量,使企业生产活动效率最大化。
通过对这些情况的仔细调查,我开发了下面的仓库库存管理系统。
(二)系统需求分析系统需求分析就是在用户需求调研的基础上,确定系统的总体结构方案,完成相应的需求分析报告。
在确定系统的总体结构方案过程中,包括确定应用程序的结构、系统开发环境和开发工具的选择。
1.应用程序结构确定从用户应用角度来看,可把应用程序系统的组成部分分成数据存储层、业务处理层和界面表示层等3个层次,而应用程序结构可归纳为:集中式应用程序结构、单机板应用程序结构、多层服务器应用程序结构、浏览器/服务器应用程序结构、客户机/服务器应用程序结构等5种类型。
本库存管理系统就采用了单机版应用程序结构,将数据库和应用程序置于一台机器上,这样更加节约成本,适合中小规模的超市使用。
用户可以轻松将其拷贝到其他计算机上,可以同时运行程序。
2.确定系统开发环境由于大多数公司内部使用的计算机平台都是基于Windows环境的。
为了降低系统成本,应最大程度地利用现有的资源、兼容现有的环境,可确定使用下面的开发环境:★数据库:Microsoft SQL Server 2000;★前端开发工具:myeclipse;3.开发工具的选择可视化程序设计是一种全新的程序设计方法,全面采用面向对象的程序设计技术,使用事件驱动机制进行程序设计。
利用可视化开发工具可以快速、高效地开发应用程序。
可视化的开发工具很多。
myeclipse是集成开发环境,是目前最流行的Windows 平台应用程序开发环境。
它是把代码的编写、程序的调试、编译、运行以及其他的相关操作都集成在一起的“编程工具”。
作用是程序员通过它这个平台,利用编程语言来写程序,调试,运行。
SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统。
该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。
经分析,本库存管理系统选用myeclipse来设计界面,选用SQL Server 2000来建立后台数据库。
(三)系统的开发及功能描述1.开发方法的选择信息系统的开发是一项比较复杂的工作,因此我们必须选用科学有效的开发方法。
本系统的开发采用了生命周期法。
在系统设计时遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,则通过在系统的使用及对系统了解的不断加深中,对某一部分或几部分进行重新分析、设计、实施,使系统逐步完善。
2.系统功能描述及系统安全性本库存管理系统是一套对货品入库、出库、库存进行全面管理的系统。
在管理内容上,它的主要功能包括:进货管理:进行填写货品信息,货品采购入库,入库单据的填写和修改最低库存量。
出货管理:进行货品出库,出货单据的填写和获取采购员信息。
信息查询:货品信息查询,库存信息查询,入库、出库单据查询,日报表、月报表查询。
统计报表:完整的日报表、月报表统计查询功能,每张单据每次业务金额都可以清楚地反映。
系统管理:身份验证,修改本人密码,注册用户,修改删除用户。
由于库存管理系统包含比较重要的信息,因此,在系统设计时除了注重用户的需求,还要保证系统的安全性和一致性,体现如下:(1)安全性:本系统中共分为三类不同的用户,分别具有不同的权限。
(2)一致性:系统的数据要保证一致性、准确性,当某一数据库中记录发生改变时,与之相关联的数据库也随之变化。
(四)系统逻辑模型本系统的逻辑模型以系统流图为主要描述工具。
我们用不同的符号代表这四个元素:→表示数据流;=表示文件(数据存储);○表示加工;图1-2 库存管理系统的第二层图二、系统设计(一)系统总体结构设计1.系统功能分析本库存管理系统需要完成的功能有:(1)库存管理的各种信息的输入,包括入库、出库、货品信息的输入等。
(2)库存管理的各种信息的查询、修改和维护。
(3)入库单、出库单的生成,日报表、月报表的生成。
(4)在货品库存中加入所允许的最低库存字段,对所有库存物资实现监控和报警。
2.系统功能模块图根据系统功能分析,画出系统功能模块图如下:(二)数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
1.数据库概念结构设计图2-2库存管理系统E-R图(三)系统功能模块的详细设计本库存管理系统是本着用户操作界面友好、清晰、易学易用的原则进行设计的。
1.身份验证模块的设计图2-3 用户登录模块界面设计该模块的流程图如图2-4所示:此外,对一个完整的系统而言,用户是应该可以修改自己的密码的,因此系统中应该具有修改密码的功能,提高数据的安全性。
图2-5 修改密码界面设计2.系统主界面的实现图2-6 主界面(admin)设计图2-7 主界面(仓管)设计图2-8 主界面(经理)设计3.进货管理模块的实现进货管理模块包括填写货品信息、入库单、修改最低库存三个子模块。
(1)填写货品信息(2)入库单(3)修改最低库存4.出库管理模块的实现出库管理包括填写出库单,获取采购员信息两个子模块。
(1)出库单(2)获取采购员信息5.报表统计模块的实现本系统的报表分为日报表和月报表,日报表在添加入库单和出库单时就已经自动添加进数据库中的日报表了,所以在此只需再手动添加月报表。
三、系统实现系统实现包括用户需求实现,系统界面实现和数据库实现三方面。
1.用户登录界面用户通过该界面登录进入系统。
图3-1 系统登录界面 3.1 系统管理修改密码界面以下是注册用户界面:系统管理员注册用户界面注册前数据库中操作员个人信息表如图3-7:注册前的操作员个人信息表数据库注册用户成功界面:系统管理员修改删除用户界删除报表界面如下图:系统管理员删除报表界面3.2 进货管理仓库管理员填写入库单界面如下图:仓库管理员填写入库单界面界面自动跳转到如下图:仓库管理员填写入库单界面仓库管理员填写货品信息界面入库单填写的信息会自动加入入库单数据库,并且更改库存信息表和日报表中的相关信息。
未添加信息前的入库单入库单未添加前的库存信息表填写完入库单的图如下:四、系统开发总结此次库存管理系统开发让我学习到很多知识,现总结如下:◆系统开发的过程中,我深刻体会到了以前上课老师经常提起的一个问题,那就是:一个系统开发的过程中编码不是最重要的,重要的是对系统进行分析以及建立恰当的系统模型。
◆在该库存管理系统设计中,从系统的实用性出发,我能够在开发该系统时站在用户的角度看问题,本着用户操作界面友好、清晰、易学易用的原则进行设计。
总之,这次的系统开发,实现了我自己动手完成一个系统开发的目标,也学习到很多东西,不只是实践经验,还有一些做事的道理:在工作时,要尽量把要遇到的问题考虑周全,提前做好准备,那样就不会在遇到问题时有措手不及的感觉。
参考文献:[1] 梅玫:《物资库存的计算机管理》,黑龙江科技信息,2009年7月25日.[2] 申冠楠,郭宗义《百货店商品的库存管理系统的设计与实现》,现代商业,2010年1月18日.[3] 刘志坚:《中小制造企业库存管理系统的开发与设计》,中北大学,2009年4月25日.[4] [美]c.j.date:《数据库系统导论(英文版第七版)》,机械工业出版社,2002年.[5] 邓良松:《软件工程》,西安电子科技大学出版社,2004年.[6] 邓远志:《数据库设计方法》,《南昌教育学院学报》,2005年第20卷第4期.[7]萨师煊等编著,《数据库系统概论》,高等教育出版社, 2000年.[8]东方人华主编,《JSP范例入门与提高》,清华大学出版社, 2003年.[9]李佳, 付强, 丁宁等编著,《java开发技术大全》,清华大学出版社, 2009年.[10]欧立奇,康祥顺,马煜编著,《java案例开发集锦》,电子工业出版社,2005年.[11] 邝孔武,王晓敏编著,《信息系统分析与设计》,清华大学出版社,1999年.[12] 史济民:《软件工程-原理、方法与应用》,高等教育出版社,2002年.[13] 薛华成:《管理信息系统》,清华大学出版社,1999年.[14] 张金城:《管理信息系统》,北京大学出版社,2004年.[15]马士华:《供应链管理》,机械工业出版社,2000年.[16]李玉良,邵新宇:《CPFR——供应链库存管理技术的新趋势》,机械设计与制造工程,2001年第30卷第3期.附录源代码:import tongji.*;import danjuchaxun.*;import javax.swing.ImageIcon;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JButton;import java.awt.Rectangle;public class Danjuchaxun extends JFrame {private static final long serialVersionUID = 1L;ImageIcon beijing = new ImageIcon("pic/danjuchaxunbeijing.jpg");private JPanel jContentPane = null;private JButton jButton = null;private JButton jButton1 = null;private JButton jButton2 = null;private JButton jButton3 = null;private JButton jButton4 = null;private JButton jButton5 = null;private JButton jButton6 = null;private JButton jButton7 = null;private JButton jButton8 = null;private JButton jButton9 = null;private JButton jButton10 = null;private JButton jButton11 = null;//private JButton jButton12 = null;private JButton jButton13 = null;JLabel backgroundall = new JLabel(beijing);/*** This is the default constructor*/public Danjuchaxun() {super();initialize();}/*** This method initializes this* @return void*/private void initialize() {this.setBounds(233, 218, 156, 303);this.setContentPane(getJContentPane());this.setTitle("单据查询");this.setUndecorated(true);this.setResizable(false);this.getLayeredPane().add(backgroundall, new Integer(Integer.MIN_VALUE));backgroundall.setBounds(0, 0, beijing.getIconWidth(), beijing .getIconHeight());this.setVisible(true);}/*** This method initializes jContentPane* @return javax.swing.JPanel*/private JPanel getJContentPane() {if (jContentPane == null) {jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.setOpaque(false);jContentPane.add(getJButton(), null);jContentPane.add(getJButton1(), null);jContentPane.add(getJButton2(), null);jContentPane.add(getJButton3(), null);jContentPane.add(getJButton4(), null);jContentPane.add(getJButton5(), null);jContentPane.add(getJButton6(), null);jContentPane.add(getJButton7(), null);jContentPane.add(getJButton8(), null);jContentPane.add(getJButton9(), null);jContentPane.add(getJButton10(), null);jContentPane.add(getJButton11(), null);//jContentPane.add(getJButton12(), null);jContentPane.add(getJButton13(), null);}return jContentPane;}/*** This method initializes jButton* @return javax.swing.JButton*/private JButton getJButton() {if (jButton == null) {jButton = new JButton();jButton.setBounds(new Rectangle(8, 8, 140, 22));jButton.setText("进货单据查询");jButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { new ChaxundanjuJH();}});}return jButton;}/*** This method initializes jButton1* @return javax.swing.JButton*/private JButton getJButton1() {if (jButton1 == null) {jButton1 = new JButton();jButton1.setBounds(new Rectangle(8, 30, 140, 22));jButton1.setText("出货单据查询");jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { new ChaxundanjuCH();}});}return jButton1;}/*** This method initializes jButton2* @return javax.swing.JButton*/private JButton getJButton2() {if (jButton2 == null) {jButton2 = new JButton();jButton2.setBounds(new Rectangle(8, 52, 140, 22));jButton2.setText("退货出库单据查询");jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { new ChaxundanjuTHCK();}});}return jButton2;}/*** This method initializes jButton3* @return javax.swing.JButton*/private JButton getJButton3() {if (jButton3 == null) {jButton3 = new JButton();jButton3.setBounds(new Rectangle(8, 74, 140, 22));jButton3.setText("客户退货单据查询");jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new ChaxundanjuTHRK();}});}return jButton3;}This method initializes jButton4* @return javax.swing.JButton*/private JButton getJButton4() {if (jButton4 == null) {jButton4 = new JButton();jButton4.setBounds(new Rectangle(8, 96, 140, 22));jButton4.setText("库存调拨单据查询");jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new ChaxundanjuDB();return jButton4;}* This method initializes jButton5* @return javax.swing.JButton*/private JButton getJButton5() {if (jButton5 == null) {jButton5 = new JButton();jButton5.setBounds(new Rectangle(8, 118, 140, 22));jButton5.setText("供货商统计");jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new TongjiGHS();return jButton5;}* This method initializes jButton6* @return javax.swing.JButton*/private JButton getJButton6() {if (jButton6 == null) {jButton6 = new JButton();jButton6.setBounds(new Rectangle(8, 140, 140, 22));jButton6.setText("客户统计");jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new TongjiKH();return jButton6;* This method initializes jButton7* @return javax.swing.JButton*/private JButton getJButton7() {if (jButton7 == null) {jButton7 = new JButton();jButton7.setBounds(new Rectangle(8, 162, 140, 22));jButton7.setText("库存统计");jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new TongjiKC();return jButton7;}/*** This method initializes jButton8* @return javax.swing.JButton*/private JButton getJButton8() {if (jButton8 == null) {jButton8 = new JButton();jButton8.setBounds(new Rectangle(8, 184, 140, 22));jButton8.setText("采购统计");jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new TongjiCG();return jButton8;* This method initializes jButton9* @return javax.swing.JButton*/private JButton getJButton9() {if (jButton9 == null) {jButton9 = new JButton();jButton9.setBounds(new Rectangle(8, 206, 140, 22));jButton9.setText("出货统计");jButton9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new TongjiCH();}}); }return jButton9;}*************************************************.JButton private JButton getJButton10() {if (jButton10 == null) {jButton10 = new JButton();jButton10.setBounds(new Rectangle(8, 228, 140, 22));jButton10.setText("退货出库统计");jButton10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new TongjiTHCK();}return jButton10;}* This method initializes jButton11* @return javax.swing.JButton*/private JButton getJButton11() {if (jButton11 == null) {jButton11 = new JButton();jButton11.setBounds(new Rectangle(8, 250, 140, 22));jButton11.setText("客户退货统计");jButton11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {new TongjiTHRK();}});}return jButton11;} * This method initializes jButton12* @return javax.swing.JButton*//*private JButton getJButton12() {if (jButton12 == null) {jButton12 = new JButton();jButton12.setBounds(new Rectangle(8, 272, 140, 22));jButton12.setText("统计");}return jButton12;}*/* This method initializes jButton13* @return javax.swing.JButton*/private JButton getJButton13() {if (jButton13 == null) {jButton13 = new JButton();jButton13.setBounds(new Rectangle(8, 272, 140, 22));jButton13.setText("退出");jButton13.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {dispose();}});}returnjButton13}} // @jve:decl-index=0:visual-constraint="10,10"。