《数据结构课程设计文具店的货品管理.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计文具店的货品管理.doc(15页珍藏版)》请在三一办公上搜索。
1、数据结构课程设计报告设计题目:文具店的货品管理 专 业 软件工程 班 级 二 班 学 生 黄 淼 学 号 E20814028 2009-20109年 第 2 学期 一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。2、提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。4、训练用系统的观点和软件开发一般规范进行软件开发,培养
2、软件工作者所应具备的科学的工作方法和作风。5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。二、设计内容文具店的货品管理在文具店的日常管理经营过程中,存在对各种文具管理问题。当库存文具不足或缺货时,需要进货。日常销售时,需要出库。当盘点货物时,需要查询货物的信息。请根据这些要求编写软件完成库存文具的管理功能。文具信息可以用表1和表2来表示。表1 文具名称文具类别文具数量钢笔1400日记本22000计算器350 表2文具类别号文具类别名1文具2纸张3工具三、源程序#include#include#include#include#include#define ERROR 0#define
3、OK 1#define OVERFLOW 0typedef structchar name10;char lb10;int count;datatype;typedef struct nodedatatype name;struct node *next;listnode,*linklist;int menu_select();int linklist_init(linklist &head);int linklist_create(linklist &head);int linklist_insert(linklist &head);int linklist_find(linklist he
4、ad);int linklist_delete(linklist &head);int linklist_print(linklist head);int menu_select()int sn;printf(n 文具店商品管理 n);printf(=n);printf( 1.商店商品的初始状态 n);printf( 2.商品的存入 n);printf( 3.商品的查询 n);printf( 4.商品的卖出 n);printf( 5.商品的输出检索 n);printf( 6.退出管理系统 n);printf(n=n);printf(选择1-6:);for(;)scanf(%d,&sn);if(
5、sn6)printf(输入错误,从新选择(1-6):);elsebreak;return sn;int linklist_init(linklist &head) /初始化head=(linklist)malloc(sizeof(listnode);if(!head)exit(OVERFLOW);head-next=NULL;return OK;int linklist_create(linklist &head) /商品的创建linklist p,rear;int flag=0;rear=head;while(flag=0)p=(linklist)malloc(sizeof(listnode
6、);printf(n商店初始商品文具名称:);cinp-name.name;printf(n初始文具数量:);cinp-name.count;printf(n初始文具类别:);cinp-name.lb;p-next=NULL;rear-next=p;rear=p;printf(结束初始化吗?(1/0):);scanf(%d,&flag);rear-next=NULL;return OK;int linklist_insert(linklist &head) /向商店存货(存入文具)linklist p,p1,p2;p2=head;p2=p2-next;p=(linklist)malloc(si
7、zeof(listnode);printf(输入要存货的文具名称:);cinp-name.name;printf(n存货的文具数量:);cinp-name.count;printf(n存货的文具类别:);cinp-name.lb;while(p2!=NULL) if(strcmp(p2-name.name,p-name.name)=0) p2-name.count+=p-name.count;printf(n存货成功!);return OK;elsep1=p2;p2=p2-next;if(p2=NULL)p1-next=p;p-next=NULL;printf(n存货成功!);return E
8、RROR;int linklist_delete(linklist &head) /商店卖出文具linklist p,t;t=head;t=t-next;p=(linklist)malloc(sizeof(listnode);printf(卖出商品的文具名称:);cinp-name.name;printf(n想卖出多少件:);cinp-name.count;while(t!=NULL) if(strcmp(t-name.name,p-name.name)=0)if(t-name.count=0)printf(n此类商品已经销售完。);return ERROR;else if(t-name.co
9、untname.count) printf(n现存商品容量不足,无法卖出。);return ERROR; else t-name.count-=p-name.count; printf(n此类文具卖出成功!); return OK;elset=t-next;if(t=NULL)printf(n商店没有此类文具。);return ERROR;int linklist_print(linklist head) /输出linklist p1;p1=head;p1=p1-next;printf(文具名称 文具类别 文具数量n);while(p1!=NULL)printf(%4st%14st%20d,p
10、1-name.name,p1-name.lb,p1-name.count);p1=p1-next;printf(n);return OK;int linklist_find(linklist head) /查找linklist p,p1,p2;p1=p2=head;p2=p2-next;p=(linklist)malloc(sizeof(listnode);printf(n输入要查找的文具名称:);cinp-name.name;while(p2!=NULL)if(strcmp(p2-name.name,p-name.name)=0)printf(n查找成功,输出如下:n);printf(文具名
11、称 文具类别 文具数量n);printf(%4st%14st%20d,p2-name.name,p2-name.lb,p2-name.count);return OK;elsep2=p2-next;printf(n查找不成功!);return ERROR;void main()linklist head;linklist_init(head);for(;)switch(menu_select() case 1: /创建linklist_create(head);break;case 2: /存货linklist_insert(head);break; case 3: /查询文具linklist
12、_find(head);break;case 4: /卖出文具linklist_delete(head);break;case 5: /检索文具linklist_print(head); break;case 6:printf(n谢谢光临,欢迎回顾!n);break;四、 调试分析调试的过程中,对程序做了几点改进,增加了程序的容错能力,不论用户输入什么内容,程序都能安全检查。五、 测试结果进入演示程序后,即显示主界面为:根据提示,用户输入选项:1、 进入商店商品的初始化状态输入表1和表2信息其中:结束初始化吗? (1/0) 选择 0 代表不结束,即继续输入商品信息,选择1 代表,商品信息输入结
13、束.2、 商品的存入(例:文具店需进 钢笔 300 , 橡皮 200 ) 3、商品的查询 (查询一种商品的信息, 这里以钢笔为例)初始化时,钢笔 400 ; 后进货, 钢笔 300; 文具店现有存货为:钢笔 700; 4、商品的卖出以钢笔为例: 钢笔现存 700; 要卖出 200剩余 钢笔 5005、商品的输出检索可以查看现库存商品的信息6、退出管理系统六、课程设计小结: 通过这次课程设计,对程序设计和调试的能力有很大的提升。这次课程设计使我深刻认识到自己专业知识的匮乏,缺乏独立程序设计的能力。通过这次的课程设计也是我认识到了我在程序设计方面的严重不足,以及专业知识的严重匮乏。我的程序设计思想和代码的编写和调试能力在此次课设期间有所提高。这样一种更贴切实际的课程设计,大大的提高了我的学习效率,希望能够在平时教学的时候也能加入一些类似课程设计的程序设计习题