数据结构课程设计 仓库库存管理系统
更新时间:2023-05-30 22:03:01 阅读量: 实用文档 文档下载
- 数据结构课程设计推荐度:
- 相关推荐
课 程 设 计
题 目 学 院 专 业 班 级 学生姓名 指导教师
物品库存管理
计算机与信息工程学院 计算机科学与技术 2009级计算机科学与技术三班
尹亮 杨
永 斌
2010 年 12 月 25 日
重庆工商大学课程设计成绩评定表
指导教师评定成绩:
指导教师签名: 年 月 日
程设计任务书
学生姓名: 尹亮 专业班级:09级计算机三班
指导教师: 杨永斌 工作单位:计算机与信息工程学院
题 目: 物品库存管理
已知技术参数和设计要求:
1、增加函数,完成库存物品的管理功能。
2、将所有的函数与相应的数据封装到类中,并改写主程序,使程序简化。 3、可自行增加程序的功能。
4、设计测试主程序,在主程序中完成测试。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、设计的题目要求达到一定工作量,并具有一定的深度和难度,程序代码不得少于300行。
2、对设计问题进行分析研究,运用所学知识,确定设计思路及方案,并有相应文档产生。
3、要求设计的软件能够正确运行,达到题目要求。 4、编写出课程设计说明书(并附程序源代码),以电子文档方式上交教师批阅。设计说明书要求见附件。 5、课设总结
时间安排:
正确理解所设计的题目并进行问题抽象,确定设计方案 2天 编代码 3天 调试和测试 2天 编写设计说明书 2天 系统验收及成绩评定 1天
指导教师签名: 年 月 日
教研室主任签名: 年 月 日
《数据结构》课程设计
设计说明书
库 存 物 品 信 息 管 理
作者:尹亮
指导教师:杨永斌
一、题目:物品库存管理
1、 设计目的:
利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设计报告。通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。
2、 设计内容和要求 :
①、要求物品出库、入库信息管理,浏览、修改物品信息;
②、物品信息按名称和代码存放,在程序出错时自动返回主页面 ③、可以按物品名称物品代码来查询物品信息,即在主菜单中增加查询功能选项,输入代码或名称即可显示;
④、可以修改、删除某库存物品信息。
二、 运行环境(软、硬件环境)
软件环境:Vc6.0编程软件 运行平台: Win32
硬 件: 普通个人PC机
三、 算法设计的思想
1、输入物品信息函数:Add(Link l)
基本思想: 根据物品代码(code)来输入物品信息,如果代码已存在,则按ENTER键返回主页面;如果代码不存在,则继续输入物品名称、物品数量、物品等级;若继续输入,就直接输入代码等信息,若返回上一级,就按“0”键,调用main(),返回主界面。
2、物品出库函数:Del(Link l)
基本思想: 根据输入的代码或名称,如果不存在该物品,就输出“不存在该物品”;然后输出是用代码出库或者名称出库,在选择操作后,输出该物品对应的信息,若输入“0”,则调用main(),返回主界面。 3、查看库存物品信息函数 :Qur(Link l)
基本思想:根据输入的信息判断有无该商品信息,如果没有该信息,
则输出“你输入的信息有误”,有该物品,则输出该物品对饮的代码、名称、数量等信息,按enter键返回主界面。 4、删除物品信息函数:Del(Link l)
基本思想:根据用户键入的选择,如果没有该物品信息,则输出没有改物品;调用该函数Del(Link l),如果存在该物品,则输出该物品及信息已成功修改,然后用户键入任意键返回主界面。 5、物品信息修改函数:Modify(Link l)
基本思想:根据用户键入的信息,判断有无该物品,若有,则继续进行。调用输出函数printc(),然后依次键入新的物品信息,在输出物品信息已成功修改然后用户键入任意键返回主界面。
四、 算法的流程图
算法流程:
五、 源代码
//物品库存管理系统 制作人:胡华 张义江 魏尹 尹亮 朱翀 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream.h> int shoudsave=0;
struct item//物品信息定义 {
char code[10];//物品编码 char name[20];//物品名称 int num; //商品数量 int level;//物品等级 }item;
typedef struct node {
struct item data; struct node * next; }Node,*Link;//定义为链表 void menu()//页面显示函数 {
system("cls");//清屏函数
printf("***********************************《物品库存管理》*****************************\n"); printf(" \n");
printf("\n <1> 物品入库管理\n\t\n
<2> 物品出库管理\n");
printf("\n <3> 浏览库内物品信息\n\t\n <4> 修改物品信息\n");
printf("\n <5> 保存物品信息\n\t\n <0> 退出库存管理\n");
printf(" \n");
cout<<"********************************************************************************"<<endl;
printf("\n 请选择操作:"); }
void printstart() {
printf("------------------------------------------\n"); }
void Wrong()//错误处理函数 {
printf("输入错误!\n"); getchar(); getchar(); menu(); return; }
void Nofind() {
printf("没有找到该物品!\n"); }
void printc()//本函数用于输出中文 {
printf(" 物品编码 物品名称 物品数量 物品等级\n"); }
void printe(Node *p)//输出物品信息函数 {
cout<<endl<<" "<<p->data.code<<" "<<p-><<" "<<p->data.num<<" "<<p->data.level; }
Node *Locate(Link l,char findmess[],char nameorcode[]) //用于定位连接中,符合要求的结点,并返回该指针 {
Node *r;
if(strcmp(nameorcode,"code")==0)// {
r=l->next; while(r!=NULL) {
if(strcmp(r->data.code,findmess)==0) return r; r=r->next; } } else
if(strcmp(nameorcode,"name")==0)//按名称查询 {
r=l->next;
while(r!=NULL) {
if(strcmp(r->,findmess)==0) return r; r=r->next; } } return 0; }
void Add(Link l)//增加物品函数 {
Node *p,*r,*s; char code[10]; r=l; s=l->next;
while(r->next!=NULL) r=r->next; while(l) {
system("cls");//清屏函数
cout<<"请输入商品编码(输入'0'返回上一级菜单):"<<endl; scanf("%s",code); if(strcmp(code,"0")==0) break; while(s) {
if(strcmp(s->data.code,code)==0)
{
printf("物品编码为'%s'的物品已经存在,如果要修改请选择'4 修改'!\n",code);
printstart(); printc(); printe(s); printstart(); printf("\n"); return; }
s=s->next; }
p=(Node * )malloc(sizeof(Node)); strcpy(p->data.code,code);
printf("请输入物品名称:"); scanf("%s",p->); getchar();
printf("请输入物品数量:"); scanf("%d",&p->data.num); printf("请输入物品等级:"); scanf("%d",&p->data.level); p->next=NULL; r->next=p; r=p; shoudsave=1;
} menu(); }
void Qur(Link l)//查询物品信息函数 {
int sel;
char findmess[20]; Node *p; if(!l->next) {
printf("\n没有信息可查询!\n"); getchar(); getchar(); menu(); return; }
system("cls");//清屏函数
printf("\n 1按物品编码查询\n 2按物品名称查询\n"); scanf("%d",&sel); if(sel==1)// {
printf("请输入要查询的编码:\n"); scanf("%s",findmess); p=Locate(l,findmess,"code"); if(p) {
printf("\t\t\t\t查询结果\n");
printstart(); cout<<endl; printc(); cout<<endl; printe(p); cout<<endl; printstart(); getchar(); getchar(); menu(); return; } else Nofind(); } else
if(sel==2)// {
printf("请输入要查找的物品名称:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) {
printf("\t\t\t查询结果\n"); printstart(); cout<<endl; printc();
cout<<endl; printe(p); cout<<endl; printstart(); getchar(); getchar(); menu(); return; } else Nofind(); } else Wrong(); getchar();
system("cls");//清屏函数 menu(); }
void Del(Link l)//删除 {
int sel; Node *p,*r; char findmess[20]; if(!l->next) {
system("cls");//清屏函数 printf("\n您的仓库为空!\n");
getchar(); getchar(); menu(); return ; }
system("cls");//清屏函数
printf("\n 1按物品编码出仓\n 2按物品名称出仓\n"); scanf("%d",&sel); if(sel==1) {
printf("请输入要出仓的物品编码:"); scanf("%s",findmess); p=Locate(l,findmess,"code"); if(p) { r=l;
while(r->next!=p) r=r->next; r->next=p->next; free(p);
printf("\n该物品已经成功出仓\n"); shoudsave=1; getchar(); getchar(); menu(); return ; }
Nofind(); } else
if(sel==2) {
system("cls");//清屏函数 printf("请输入要出仓的物品名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { r=l;
while(r->next!=p) r=r->next; r->next=p->next; free(p);
printf("\n该物品已经成功出仓!\n"); shoudsave=1; getchar(); getchar(); menu(); return; } else Nofind(); }
Wrong(); }
void Modify(Link l)//物品信息修改 {
Node *p;
char findmess[20]; if(!l->next) {
system("cls");//清屏函数
printf("\n您的库存为空,无需修改!\n"); getchar(); getchar(); menu(); return; }
printf("请输入要修改的物品编码:"); scanf("%s",findmess); p=Locate(l,findmess,"code"); if(p) {
system("cls");//清屏函数
printf("请输入新编码(原来的是%s):",p->data.code); scanf("%s",p->data.code);
printf("请输入新名称(原来的是%s):",p->); scanf("%s",p->);
printf("请输入新的物品数量(原来的是%d):",p->data.num); scanf("%d",&p->data.num); getchar();
printf("请输入新的物品等级(原来的是%d):",p->data.level); scanf("%d",&p->data.level); getchar();
printf("\n修改资料成功!\n"); shoudsave=1; getchar(); menu(); return; } else Nofind(); getchar(); menu(); }
void Disp(Link l) {
int count=0; Node *p; p=l->next; if(!p) {
printf("\n 没有资料可以显示!\n"); getchar();
menu(); return; }
printf("\t\t\t\t显示结果\n"); printstart(); printc(); printf("\n"); while(p) {
printe(p); p=p->next; }
printstart(); printf("\n"); }
void Save(Link l)//物品信息保存 {
FILE *fp; Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb"); if(fp==NULL) {
printf("\n重新打开文件时错误!\n"); exit(1);
p=l->next; while(p) {
if(fwrite(p,sizeof(Node),1,fp)==1) {
p=p->next; count++; } else {
flag=0; break; } } if(flag) {
system("cls");//清屏函数
printf("\n 文件保存成功.(有%d条记录保存成功.)\n",count); shoudsave=0; getchar(); getchar(); menu(); }
fclose(fp); }
void main()//主函数
正在阅读:
数据结构课程设计 仓库库存管理系统05-30
1、3#联络线施工方案(按施组质量、安全、环保改3) - 图文11-09
DAM中波全固态数字调制发射机基本工作原理和常见故障的分析、总结07-21
2020年度X市公安局工作总结及2021年工作计划09-06
Visual Basic实验-答案(3)04-19
醒悟作文300字07-04
2019年工作总结(区委)02-26
银法利产品介绍03-29
2018年春季学校卫生专项检查工作总结04-01
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 数据结构
- 仓库
- 库存
- 管理系统
- 课程
- 设计
- 湖北省森林采伐技术规程
- 两种精品课程教学录像制作方式比较
- 聚合酶链式反应技术(PCR)
- 初中美术工作计划
- 2021年秋幼儿园中班上学期教学工作总结
- JT/T808-2011道路运输车辆卫星定位系统终端通讯协议及数据格式
- 改变一生的60个心理学效应
- 变压器空载损耗工艺系数的经验计算公式
- 地理实体数据制作技术探讨
- 2006年北京理工大学工业设计考研真题整理
- 铁道工程技术专业毕业设计选题手册
- 某酒店薪酬体系管理案例11
- 英语专四语法总结—非谓语动词的其他考点
- 建筑工程计量与计价(第二版)使用说明
- 上科教版九年级下信息技术教案 第1单元 认识Flash MX教案
- 2009年中考物理质量分析
- 网络技术支持笔试题
- 督导检查后的感想
- 2015-2016学年人教A版选修2-1 空间向量的数量积 第2课时 教案
- 贵州省情期末考试题