数据结构课程设计 仓库库存管理系统

更新时间: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()//主函数

本文来源:https://www.bwwdw.com/article/az34.html

Top