




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档算法与数据结构课程设计说明书 课题:商品管理系统 学院:计算机与通信学院 班级:软件工程二班 姓名:吕少伟 学号:1516270251 指导老师:包仲贤 时间:2017.01.12目录摘要3序言4算法描述4流程图:7调试分析:8输出典型数据9源代码15涉及总结30参考文献31摘要随着社会经济的迅速发展和科学技术的全面进步,以计算机与商店管理技术为基础的管理系统正处于蓬勃发展的时期。仓库这个名词,已经不能用货物贮存地来概括,它现在是一个分销中心(DistributionCenter),完成的任务更全面。过去,人们不明白这条渠道利益。到了今天,企业间的竞争更加激烈了,因此仓库管理成了供应链管理当中不可或缺的一环。在这样的发展形式下,经过系统的分析与调研,完成了本系统。系统中主要分为两种操作权限,一种为超级管理员权限,另一种为普通用户权限。主要功能包括对货物的入库、出库、借出、盘点的相应操作;查询库存、入库、出库、借出、归还的货物数量;对货物月出入库数量与年出入库数量进行统计;对供应商、用户、货物信息进行相应的设置;打印库存信息和货物的出库信息以及用户系统权限的管理。超级管理员可以完成所有的操作,而普通用户只能完成查询统计与修改密码的。本课题是一个适应现今仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值关键词:库存;货物;入库;商店序言面对信息爆炸的今天,对库存管理人员来说,工作量正日趋繁琐,因此有一个好的管理系统,就显得非常的必要。库存管理所涉及的范围广泛。但是,最基本的入库、出库的操作,在以前的管理系统中,都会体现。过去,人们的管理理念没有完善,并且经验不够,因此是在摸索中成长。可是当今社会,如果还继承以前的东西,而没有更新或创新的部分,那么是不能适应当今这个大趋势的发展的。现在,一个最明显的变化是仓库不再被看作仅仅是一个货物贮存地,以前人们把货物管理看的很单调。最近出现了很多新的管理模式,如:基于零库存思想的沃尔玛管理方式。这些新的思想在中国的企业中普及只是个时间问题。库存管理的意义重大,不容忽视,基于如此设计了这个系统 算法(数据结构)描述5.1先定义一个商品的结构体数组:typedef struct /*定义结构体数组*/ char name20;/*商品名称*/ int time;/*进货时间*/ int year;/*生产日期*/ int no;/*保质期*/goods;5.2建立一个菜单函数,显示10个功能,供用户选择,进行人机对话。5.3设置一个排序的函数,void Sort_by_time(goods gs,int n)。利用冒泡法先对商品按进货的时间排序,对进货时间一样的货物,再按离保质期最近排序。 5.4设置一个输入的函数,int Input(goods gs,int n)。这个函数是最初商品输入函数,当选择了这个功能后,如果是第一次运行这个程序,保存输入,那将在D盘产生一个名为“商品.doc”的文件,如果已经运行过了,并保存输入,那输入的商品信息将代替原有的信息,数据输入使用交互输入,进行人机对话,确定是否进行下一个数据的添加。并且调用了上面的排序函数,对输入的数据进行排序。5.5设置一个显示的函数,void Display(goods gs,int n)。显示上面输入的所有数据,或者是从文件中读取的数据。5.6设置一个插入的函数,int Insert_a_record(goods gs,int n)。每次插入一组数据,如果要再插入,则再选择这个功能进行操作。并且在插入的同时,已经排好序,把数据插入适合的位置。5.7设置一个查找删除的函数,int Delete_a_record(goods gs,int n)。输入要查找的商品名称,如果不存在,则输出失败信息,如果存在,则用下一个信息代替原有信息的位置。5.8设置一个查找显示的函数,void Query_a_record(goods gs,int n)。输入要查找的商品名称,如果不存在,则输出失败信息,如果存在,则显示信息。5.9设置一个写入文件的函数,void WritetoText(goods gs,int n)。设置文件指针,先判断文件是否能打开并且能进行写操作,不能则输出失败信息,能则循环写入数据,写完关闭文件。5.10设置一个读文件的函数,int AddfromText(goods gs,int n)。设置文件指针,判断文件是否能打开而且能进行读操作,能则先读出总的数据量,接着循环读出数据,最后关闭文件。5.11进入最后一步,main函数。判断选择的操作,根据用户选择的操作,利用switch语句进行相应的函数调用。5.12选择保存功能,对数据进行保存,然后选择结束程序退出功能,退出程序。Sort_by_time(gs,n)初始条件:数据已经存在操作结果:数据进行排序Input(gs, n)初始条件:没有任何数据存在,或者要替换原文件中的所有数据 操作结果:数据进行输入Display(gs,n)初始条件:数据已经存在 操作结果:数据显示Insert_a_record(gs,n) 初始条件:数据已经存在操作结果:数据插入Delete_a_record(gs,n)初始条件:数据已经存在 操作结果:数据删除Query_a_record(gs,n)初始条件:数据已经存在 操作结果:数据统计WritetoText(gs,n)初始条件:数据已经存在 操作结果:写入文件中AddfromText(gs,n)初始条件:文件已经存在 操作结果:从文件中读出流程图:调试分析:a、 调试中遇到的问题及对问题的解决方法;1. 在商品的排序方面,指针指向错误。解决方案:利用画图理清指针的指向,并改正2.写入文件,当文件不存在数无法写入解决方案:当文件不存在时,创建一个文本去存取信息;3. 查找信息,当信息不存在时,程序没有反应解决方案:当所搜寻的信息不存在时,返回查找失败;4. VS运行程序时,出现scanf不安全问题解决方案:在项目属性中的预处理器中加入一串代码;b、 算法的时间复杂度和空间复杂度;算法的时间复杂度为:O(n3)空间复杂度:170输出典型数据界面:显示功能,显示最初的数据:插入功能:删除功能:查找商品信息:统计并显示进货时间最早且最接近保质期中止时间的货物:写入文件:读取文件:对读入文件进行排序:获得测试结果:源程序#include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/char name20;/*商品名称*/int time;/*进货时间*/int year;/*生产日期*/int no;/*保质期*/goods;goods gs80; /*结构体数组变量*/int menu_select() /*菜单函数*/char c;dosystem(cls); /*运行前清屏*/printf(* 商品系统*n); /*菜单选择*/printf( | 1. 输入数据 |n);printf( | 2. 显示数据 |n);printf( | 3. 插入数据 |n);printf( | 4. 删除数据 |n);printf( | 5. 查找数据 |n);printf( | 6. 统计并显示进货时间最早且最接近保质期中止时间的货物 |n);printf( | 7. 写入文件 |n);printf( | 8. 读文件 |n);printf( | 9. 对读入的文件进行排序 |n);printf( | 0. 退出 |n);printf(*n);printf(请选择(0-9):);c = getchar(); /*读入选择*/ while (c9);return(c - 0); /*返回选择*/void Sort_by_time(goods gs, int n) /*按进货时间排序*/int i, j, *a, *b, c, *p, *q, s, *m, *k, d, e, f;char t10;for (i = 0; in - 1; i+) /*冒泡法排序*/for (j = 0; jgsj + 1.time)a = &gsj + 1.time;b = &gsj.time;c = *a;*a = *b;*b = c;strcpy(t, gsj + 1.name);strcpy(gsj + 1.name, );strcpy(, t);p = &gsj + 1.year;q = &gsj.year;s = *p;*p = *q;*q = s;m = &gsj + 1.no;k = &gsj.no;d = *m;*m = *k;*k = d;else if (gsj.time = gsj + 1.time)p = &gsj.year;a = &gsj + 1.year;b = &gsj.no;q = &gsj + 1.no;e = (*p) + (*b) * 10000;f = (*a) + (*q) * 10000;if (ef)a = &gsj + 1.time;b = &gsj.time;c = *a;*a = *b;*b = c;strcpy(t, gsj + 1.name);strcpy(gsj + 1.name, );strcpy(, t);p = &gsj + 1.year;q = &gsj.year;s = *p;*p = *q;*q = s;m = &gsj + 1.no;k = &gsj.no;d = *m;*m = *k;*k = d; int Input(goods gs, int n) /*输入若干条记录*/int i = 0;char sign=0, x10;while (sign != n&sign != N) /*判断*/printf(商品名称:); /*交互输入*/scanf(%s, gsn + );printf(进货时间(例20070201):);scanf(%d, &gsn + i.time);printf(生产日期(例20070201):);scanf(%d, &gsn + i.year);printf(保质期(年):);scanf(%d, &gsn + i.no);gets(x); /*清除多余的输入*/printf(继续输入?(Y/N);scanf(%c, &sign); /*输入判断*/i+;Sort_by_time(gs, n + i); /*调用排序函数*/return(n + i);void Display(goods gs, int n) /*显示所有记录*/int i;printf(-n); /*格式头*/printf(商品名称 进货时间 生产日期 保质期(年)n);printf(-n);for (i = 1; i1 & i % 10 = 0) /*每十个暂停*/printf(-n); /*格式*/system(pause);printf(-n);system(pause); /*按任何键继续*/int Insert_a_record(goods gs, int n) /*插入一条记录*/char x10; /*清除多余输入所用*/printf(商品名称:); /*交互输入*/scanf(%s, );printf(进货时间:);scanf(%d, &gsn.time);printf(生产日期:);scanf(%d, &gsn.year);printf(保质期:);scanf(%d, &gsn.no);gets(x);n+;Sort_by_time(gs, n); /*调用排序函数*/printf(插入成功!n); /*返回成功信息*/return(n);int Delete_a_record(goods gs, int n) /*按商品名字查找,删除一条记录*/char s20;int i = 0, j;printf(商品名称:);scanf(%s, s);while (strcmp(, s) != 0 & in) i+; /*查找判断*/if (i = n)printf(没找到!n); /*返回失败信息*/return(n);for (j = i; jn - 1; j+) /*删除操作*/strcpy(, gsj + 1.name);gsj.time = gsj + 1.time;gsj.year = gsj + 1.year;gsj.no = gsj + 1.no;printf(删除成功!n); /*返回成功信息*/return(n - 1);void Query_a_record(goods gs, int n) /*查找并显示一个记录*/char s20;int i = 0;printf(输入要查找的商品名称:);scanf(%s, s);while (strcmp(, s) != 0 & in) i+; /*查找判断*/if (i = n)printf(没找到!n); /*输入失败信息*/return;printf(进贷时间:%dn, gsi.time); /*输出该商品信息*/printf(生产日期:%dn, gsi.year);printf(保质期:%dn, gsi.no);void WritetoText(goods gs, int n) /*将所有记录写入文件*/int i = 0;FILE *fp; /*定义文件指针*/if (fp = fopen(d:商品.doc, wb) = NULL) /*打开文件*/printf(cannt open the filen);system(pause);return;fprintf(fp, %dn, n); /*循环写入数据*/while (in)fprintf(fp, %-5s%d %d %dn, , gsi.time, gsi.year, gsi.no);i+;fclose(fp); /*关闭文件*/printf(Successed!n); /*返回成功信息*/int AddfromText(goods gs, int n) /*从文件中读入数据*/int i = 0, num;FILE *fp; /*定义文件指针*/if (fp = fopen(d:商品.doc, rb) = NULL) /*打开文件*/printf(cannt open the filen); /*打开失败信息*/system(pause);return(n);fscanf(fp, %d, &num); /*读入总记录量*/while (inum) /*循环读入数据*/fscanf(fp, %s%d%d%d, gsn + , &gsn + i.time, &gsn + i.year, &gsn + i.no);i+;n += num;fclose(fp); /*关闭文件*/printf(Successed!n);system(pause);return(n);void main() /*主函数*/int n = 0;for (;)switch (menu_select() /*选择判断*/case 1:printf(输入最初商品n); /*输入若干条记录*/n = Input(gs, n);break;case 2:printf(显示所有商品n); /*显示所有记录*/Display(gs, n);break;case 3:printf(插入n);n = Insert_a_record(gs, n); /*插入*/system(pause);break;case 4:printf(删除n);n = Delete_a_record(gs, n); /*按商品名称查找,删除*/system(pause);break;case 5:printf(查找并显示n);Query_a_record(gs, n); /*查找并显示*/system(pause);break;case 6:printf(统计并显示进货时间最早且最接近保质期中止时间的货物n);printf(共有 %d 件商品.n, n); /*总共记录数*/printf(进货时间最早且最接近保质期中止时间的货物:n);printf(商品名称:%sn, );printf(进货时间:%dn, gs0.time);printf(生产日期:%dn, gs0.year);printf(保质期:%dnn, gs0.no);system(pause);break;case 7:printf(写到文件中n);WritetoText(gs, n); /*循环写入数据*/system(pause);break;case 8:printf(文件中读数据n);n = AddfromText(gs, n);break;case 9:printf(n);Sort_by_time(gs, n);/*对读入的文件进行排序*/break;case 0:printf(结束退出!n); /*结束程序*/system(pause);exit(0);设计总结转眼,为期两周的数据结构课程设计结束了。在这次实习中,自己的C语言知识和数据结构知识得到了巩固,编程能力也有了一定的提高。同时也学会了解决问题的方法。总结起来,自己主要有以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年特种干式变压器绝缘防护与日常维护服务合同
- 2025年康复医院病房托管运营管理服务合同
- 2025年度商业地产租赁权转租保证金退还合同
- 2025年全面自驾车租赁及综合保险代理服务协议书
- 2025年度市政综合管廊建设造价审核与结算处理服务合同
- 2025年绿色低碳社区绿化建设与运营管理合同
- 企业员工心理健康教育与职业规划保密协议书
- 2025年新型材料边坡支护项目环保验收合同模板
- 2025年城市污水处理厂升级改造合同(节能降耗版)
- 2025年度海洋石油平台内部装饰工程追加协议书
- DL-T-5161.13-2018电气装置安装工程质量检验及评定规程第13部分:电力变流设备施工质量检验
- 安全顾问聘请协议
- 糖尿病酮症酸中毒的护理课件
- 设备材料进场报验单
- 班组长计划管理能力考试题库-上(选择题)
- (完整版)《机械制造工艺基础》教案
- 小学四年级数学口算题(每页60道直接打印).文档
- 诱思探究理论
- 铣床日常点检保养记录表
- 农产品贮藏与加工教案
- 04某污水处理厂630kW柔性支架光伏发电项目建议书
评论
0/150
提交评论