




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构与算法课程设计报告题 目: 仓库进销存管理系统 学 院: 计算机与控制工程学院 专业班级: 软件101 学生姓名: 王海川 指导教师: 王一萍 2012 年06 月2 9日 综合实践1评分表班级姓名指导教师题目:评分标准评分标准分数权重评分的依据得分ac选题10选题符合大纲要求,题目较新颖,工作量大选题基本符合大纲要求,工作量适中工作态度10态度端正,能主动认真完成各个环节的工作,不迟到早退,出勤好。能够完成各环节基本工作,出勤较好。存储结构、算法描述20能正确选择存储结构,定义准确,算法流程图或类c语言描述的算法准确无误能正确选择存储结构,算法流程图或类c语言描述的算法基本准确独立解决问题的能力10具有独立分析、解决问题能力,有一定的创造性,能够独立完成软件的设计与调试工作,程序结构清晰,逻辑严谨,功能完善。有一定的分析、解决问题能力。能够在老师指导下完成软件的设计与调试工作,程序功能较完善。答辨问题回答20能准确回答老师提出的问题能基本准确回答老师提出的问题程序运行情况10程序运行正确、界面清晰,测试数据设计合理。程序运行正确、界面较清晰,能给出合适的测试数据。综合实践报告20格式规范,层次清晰,设计思想明确,解决问题方法合理,体会深刻。格式较规范,设计思想基本明确,解决问题方法较合理。总分指导教师(签字):注:介于a和c之间为b级,低于c为d级和e级。按各项指标打分后,总分在90100为优,8089为良,7079为中,6069为及格,60分以下不及格。目 录1. 问题描述12. 需求分析13. 软件概要设计2 3.1 设计分析 2 3.1.1 设计理念 2 3.1.2 设计框架 24. 软件详细设计3 4.1 数据流程及结构应用 3 4.1.1 数据结构应用 3 4.1.2 主要流程图 3 4.2 主要函数设计 4 4.2.1 主函数的设计 4 4.2.2 录入函数的设计 5 4.2.3 查找函数的设计 7 4.2.4 删除函数的设计 8 4.2.5 排序函数的设计 95. 软件测试分析 11 5.1 函数模块的设计11 5.1.1 登录函数的测试11 5.1.2 录入函数的测试12 5.1.3 查找函数的测试12 5.1.4 修改函数的测试13 5.1.5 插入函数的测试13 5.1.6 删除函数的测试14 5.1.7 排序函数的测试145.2 文件模块的测试155.2.1 文件读取的测试155.2.2 文件写入的测试156. 课程设计总结 167. 参考文献 16附录1.问题描述仓库管理的重要性:仓库作为一总货品资源的集散地,货品的种类繁多,包含很多的信息数据管理。据调查得知,以前仓库进行信息管理的方式主要是基于文本、表格等纸介质的手工处理,对于货品的出入库情况的统计和核实等旺旺采用对账本的的人工检查,对管理者的管理权限的不受约束,任何人都可以查看,引起资料外泄。另外,数据信息处理工作量大,容易出错,不宜查找。而且,一般储存情况是记录在账本上的,仓库管理人员也只是当时记得比较清楚,时间长了进行查询会造成费事、费时、费力,如对很长时间的商品以及大量商品进行管理就更加困难了。因此我们很有必要建立一个仓库进销存管理系统,使商品管理工作更加规范化、系统化、程序化,提高信息处理的速度和准确性。2.软件需求分析商场购物已成为每家每户生活中必须的经历,随着人流量的增大。商场出售的商品种类也越来越多,商场的仓库需要有规格有条理的管理方式,灵活记录每天的情况。针对上面的情况,开发一个系统软件成为必然。该系统需要能够 方便的对每天进销存货操作和每天的销售额及库存量进行记录,能够给小型商场提供诸多方便。因此,商场库存系统应运而生。功能需求:(1)用户自行注册登录,保证仓库商品信息的保密性。(2)仓库各种商品信息的输入,主要包括商品名称、数量、类别、日期等。(3)仓库各种商品信息的查询、修改和维护。(4)对仓库中损坏商品信息的删除。(5)仓库商品信息列表的生成显示。(6)实现商品信息对文本中的保存。3.软件概要设计3.1设计分析3.1.1设计理念仓库存系统主要运用了数据结构中线性表的链式存储,链式存储空间的可扩展性大,将链表中的数据以文件的形式保存,程序功能包括初始化、创建表、插入、删除和查找等,以最少的内存使用和最高的效率为原则,实现客户的需求。进入主菜单,选择相应的功能按照提示即可进入相应的操作。 主菜单主要实现以下函数模块功能:(1)录入商品函数 linklist goods_input()/运用链式存储商品信息写入文件的函数 void file_write(node *p)文件中的信息读出的函数 linklist file_read()(2)查找商品函数 void goods_find()(3)修改信息函数 void goods_change()(4)插入商品函数 void goods_insert()(5)删除商品函数 void goods_delete()(6)商品信息排序函数 void goods_rank()3.1.2设计框架4.软件详细设计4.1数据流程及结构应用4.1.1数据结构应用为了能够提高内存的利用及各功能的实现,程序主要使用了:(1)线性表的链式存储,分配存储空间,空间可扩展性强,方便频繁的录入、插入、查找、删除和排序等而不占用多余的内存。(主要应用)(2)文件文本的读取与写入,为了方便用户更加快速的执行管理操作。(3)结构体的定义,定义了商品结构体和日期结构体。(4)登录用户时的字符串读取及验证。4.1.2主要流程图 图4-1 程序流程图4.2 主要函数设计4.2.1主函数的设计 程序启动进入主函数,进入主菜单 界面和用户进行交互。用户可以直接明了的清楚软件的功能项目,调用各个模块的功能项目,进行选择。 void main() int c; key(); do printf(请按任意键返回主菜单!);getch();system(cls);printf(n*欢迎进入商场货物管理系统*nn);printf( 1: 录入商品信息;n);printf( 2: 查找商品信息;n);printf( 3: 修改商品信息;n);printf( 4: 插入商品信息;n); printf( 5: 删除商品信息;n);printf( 6: 商品信息排序;n); printf( 7: 统计商品信息;n);printf( 0: 退出系统;n);printf( 请选择(07): ); scanf(%d,&c);while(1) if(c=1|c=2|c=3|c=4|c=5|c=6|c=7|c=0)break;else printf(n输入有误,请重新输入!n清选择(07):); scanf(%d,&c);if(c=1|c=2|c=3|c=4|c=5|c=6|c=7|c=0) break;switch(c)case 1:goods_input();break;case 2:goods_find();break;case 3:goods_change();break;case 4:goods_insert();break;case 5:goods_delete();break;case 6:goods_rank();break; case 7:goods_tongji();break;case 0 :break;while(c!=0);4.2.2录入函数的设计数据录入是该软件必备的基本功能当链表为空时,对商品信息变量“商品号”判断并进行录入,系统调用录入函数,在用户输入商品信息后添加到链表里,在添加过程中按提示自动插入到相应位置。添加成功后,返回主菜单并提示用户保存到自建的文本中,并可以根据各个模块要求进行读取修改。linklist goods_input()linklist l; node *p1,*p2; int i=1; void file_write(node *p); int flag=1; l=p2=(node*)malloc(sizeof(node);/为头节点分配存储空间 while(flag) p1=(node*)malloc(sizeof(node); printf(请输入第%d种商品的信息(商品号为0时,结束商品输入):nn,i+); flushall(); printf(商品号:); scanf(%ld,&p1-num); if(p1-num!=0) flushall(); printf(名称:); scanf(%s,&p1-name); flushall(); printf(类别:); scanf(%s,&p1-kind); flushall(); printf(生产日期(年月日用空格隔开):); scanf(%d%d%d,&p1-pro_date.year,&p1-pro_date.month,&p1-pro_date.day); flushall(); printf(保质期:); scanf(%d,&p1-save_day); flushall(); printf(商品数量:); scanf(%d,&p1-shuliang); flushall(); printf(进价:); scanf(%f,&p1-jinjia); flushall(); printf(售价:); scanf(%f,&p1-shoujia); flushall(); printf(销售日期(年月日用空格隔开):); scanf(%d%d%d,&p1-sale_date.year,&p1-sale_date.month,&p1-sale_date.day); p2-next=p1; p2=p1; else flag=0; break; p2-next=null; file_write(l); free(p1); return(l);保存文本文件的读写函数模块:void file_write(node *p) /将商品信息写入文件linklist file_read()/将文件中的信息读出的函数4.2.3查找函数的设计查找商品是信息管理的基本功能,当数据很多时怎么快速找到商品对管理员来说很重要,系统调用查找函数模块,显示查找菜单。根据提示输入需要查找的“商品号”进行查找,查找成功,用户会看到查找商品的详细信息,如没有该商品,则查找失败,查找函数设计: void goods_find() long snum; int flag=0,t; node *p0,*p1; p1=p0=file_read(); while(1) flag=0; printf(请输入你要查找的商品信息的商品号:); scanf(%ld,&snum); while( p0-next!=null) p0=p0-next; if(p0-num=snum) flag=1; break; if(flag=1) printf(该商品的信息如下:nn); printf(商品号t名称t类别t生产日期t保质期t数量t进价t售价t销售日期n); printf(%ldt%st%st%02d-%02d-%02dt%dt%dt%0.2ft%0.2ft%02d-%02d-%02d,p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day); else printf(此商品号不存在,查找失败!n); p0=p1; printf(结束查找按0,继续查找按1:); scanf(%d,&t); if(t=0) break; 4.2.4删除函数的设计 删除是一项对数据管理的功能,将过期的商品信息删除,以免影响仓库管理,删除函数的原理和查找函数原理一样,只是在输入“商品号”找到对应的商品后删除该结点,就会删除该商品的所有详细信息,并提示用户保存! void goods_delete() long num;node *p,*p0,*p1,*p2;int flag=0,t;p0=file_read();while(1) flag=0;p1=p2=p0;p=p1-next;if(p=null) flag=0;printf(请输入你要删除的商品的商品号:);scanf(%ld,&num);while(p!=null)if(p-num=num)p1-next=p-next;free(p);flag=1;break;p1=p;p=p-next;flag=0;if(flag=1)printf(你已正确删除!n);elseprintf(你输入的商品号不存在!n);printf(结束删除按0,继续删除按1:);scanf(%d,&t);if(t=0)break;p0=p0-next;printf(商品号t名称t类别t生产日期t保质期t数量t进价t售价t销售日期n); while(p0!=null) printf(-n); printf(%ldt%st%st%02d-%02d-%02dt%dt%dt%0.2ft%0.2ft%02d-%02d-%02d,p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day); p0=p0-next; file_write(p2);4.2.5排序函数的设计商品信息排序,为了可以更清楚的了解到商品库存量的多少,方便于管理者对商场商品的销售政策和对即将过期商品的多少有所了解,使仓库管理员更直观的了解到仓库库存。该函数找到商品的记录信息按照商品数量从小到大重新排序,排序完后,返回主菜单并提示用户保存! void goods_rank()node *p,*q,*k,*l,t;node *p0;int flag=0;l=file_read();p=l-next;while(p-next)k=p;q=p-next;while(q)if(k-shuliang)(q-shuliang) k=q; q=q-next;if(p!=k)t=*p;*p=*k; *k=t;t.next=p-next;p-next=k-next;k-next=t.next;flag=1; p=p-next;if(flag=1)printf(按商品数量从小到大排序成功!n);elseprintf(按商品数量从小到大排序失败!n);p0=l;p0=p0-next;printf(商品号t名称t类别t生产日期t保质期t数量t进价t售价t销售日期n); while(p0!=null) printf(-n);printf(%ldt%st%st%02d-%02d-%02dt%dt%dt%0.2ft%0.2ft%02d-%02d-%02d,p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day); p0=p0-next;file_write(l);5.软件测试分析5.1函数模块的测试5.1.1登录函数的测试 图5-1-1 登录测试(a)(b)5.1.2录入商品函数的测试 图5-1-2 录入商品信息测试5.1.3查找商品函数的测试 图5-1-3 查找商品信息测试5.1.4修改商品函数的测试 图5-1-4 修改商品信息测试5.1.4插入商品函数的测试 图5-1-4 插入商品信息测试5.1.5删除商品函数的测试 图5-1-5 删除商品信息测试 5.1.6商品排序函数的测试 图5-1-6 商品信息排序测试5.2 文件模块的的测试5.2.1 文件读取测试 图5-2-1 文件读取5.2.2 文本写入测试 图5-2-2 文本写入6.课程设计总结 经过近两周的课程设计实习过程中我学到了很多,我做的是商场仓库管理系统,这个系统基本完成了预期的一些基本功能(商品信息的录入、删除、查找和修改等),实现了仓库管理的信息化,满足了客户对于基本仓库管理的需求。这次课程设计中,各个功能模版的执行主要运用了本学期学习的数据结构中的线性表链式存储的方式,节点的插入删除等 。让我们再一次在应用中对线性表的运用有所提高,并加深了数据结构与实际应用的联系。此外,这次的课程设计,还加强了我们动手、思考和解决问题的能力。巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。而且做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。7.参考文献严蔚敏, 吴伟民. 数据结构(c语言版). 北京: 清华大学出版社, 1997.4严蔚敏, 吴伟民, 米宁. 数据结构题集(c语言版). 北京: 清华大学出版社, 1999.2附录使用说明: 本系统软件为仓库管理中的基本软件,实现功能为商品信息的录入、查找、删除、修改和查看等。用户首先需要注册然后登录到主菜单,按菜单提示选择相应的模块操作进行仓库管理的实施。用户还可以在创建的文本中直接查看保存的商品信息,方便用户直接的对仓库的管理与查看。使用流程按提示操作即可。源代码:#include#include#include#include/日期结构体typedef struct int year; int month; int day;date;/商品结构体 /定义链表typedef struct node long num; char name20; char kind20; date pro_date; int save_day; int shuliang; float jinjia; float shoujia; date sale_date; struct node *next;node,*linklist;/申请函数void apply() int i,flag=1;file *fp; char name20,key20;flushall();printf(用户名(不能为空):);scanf(%s,name);flushall();printf(密码(不能为空):); for(i=0;i=20;i+)keyi=getch();if(keyi=13)keyi=0;break;printf(*);fp=fopen(key.txt,w);if(fp=null) printf(the file can not open!); flag=0; exit(1);fprintf(fp,%s %s,name,key);fclose(fp);if(flag=1)printf(n申请成功,请登录!n);elseprintf(n申请失败,请重新申请!n);/登录函数int load() file *fp;int i;char name20,key20;char name120,key120;fp=fopen(key.txt,r);fscanf(fp,%s %s,name,key); fclose(fp); printf(用户名(不能为空):);scanf(%s,name1);flushall();printf(密码(不能为空):); for(i=0;inum); if(p1-num!=0) flushall();/ i/o库函数 清除缓冲 printf(名称:); scanf(%s,&p1-name); flushall(); printf(类别:); scanf(%s,&p1-kind); flushall(); printf(生产日期(年月日用空格隔开):); scanf(%d%d%d,&p1-pro_date.year,&p1-pro_date.month,&p1-pro_date.day); flushall(); printf(保质期:); scanf(%d,&p1-save_day); flushall(); printf(商品数量:); scanf(%d,&p1-shuliang); flushall(); printf(进价:); scanf(%f,&p1-jinjia); flushall(); printf(售价:); scanf(%f,&p1-shoujia); flushall(); printf(销售日期(年月日用空格隔开):); scanf(%d%d%d,&p1-sale_date.year,&p1-sale_date.month,&p1-sale_date.day); p2-next=p1; p2=p1; else flag=0; break; p2-next=null; file_write(l); free(p1); return(l);/将商品信息写入文件 void file_write(node *p) file *fp;char filename50;int c;printf(是否保存?(保存按1;不保存按0):); scanf(%d,&c);if(c=1) flushall(); printf(n为了将你操作的信息保存下来,请输入要写入的文件的路经或文件:); gets(filename); fp=fopen(filename,w);/文件写入 if(fp=null) printf(n this file can not be open!); exit(1); p=p-next; while(p!=null) fprintf(fp,%ld %s %s %d %d %d %d %d %f %f %d %d %dn,p-num,p-name,p-kind,p-pro_date.year,p-pro_date.month,p-pro_date.day,p-save_day,p-shuliang,p-jinjia,p-shoujia,p-sale_date.year,p-sale_date.month,p-sale_date.day); p=p-next; fclose(fp); printf(文件保存成功!);/将文件中的信息读出的函数linklist file_read() file *fp; linklist l; node *p1,*p2; char filename50; int i,k=0,t=-2; flushall(); printf(请输入要读取的文件的路径或文件名:); gets(filename); flushall(); printf(请输入商品的种类数:); scanf(%d,&i); fp=fopen(filename,r);/文件读出 l=p2=(node*)malloc(sizeof(node);/为头节点分配存储空间 while(t!=eof&knum,p1-name,p1-kind,&p1-pro_date.year,&p1-pro_date.month,&p1-pro_date.day,&p1-save_day,&p1-shuliang,&p1-jinjia,&p1-shoujia,&p1-sale_date.year,&p1-sale_date.month,&p1-sale_date.day); p2-next=p1; p2=p1; k+; p2-next=null; fclose(fp); return l;/查找商品信息void goods_find() long snum; int flag=0,t; node *p0,*p1; p1=p0=file_read(); while(1) flag=0; printf(请输入你要查找的商品信息的商品号:); scanf(%ld,&snum); while( p0-next!=null) p0=p0-next; if(p0-num=snum) flag=1; break; if(flag=1) printf(该商品的信息如下:nn); printf(商品号t名称t类别t生产日期t保质期t数量t进价t售价t销售日期n); printf(%ldt%st%st%02d-%02d-%02dt%dt%dt%0.2ft%0.2ft%02d-%02d-%02d,p0-num,p0-name,p0-kind,p0-pro_date.year,p0-pro_date.month,p0-pro_date.day,p0-save_day,p0-shuliang,p0-jinjia,p0-shoujia,p0-sale_date.year,p0-sale_date.month,p0-sale_date.day); else printf(此商品号不存在,查找失败!n); p0=p1; printf(结束查找按0,继续查找按1:); scanf(%d,&t); if(t=0) break; /修改商品信息void goods_change() node *p1,*p0,*p2; int c,flag=0,t;long snum;p2=p0=file_read();while(1) flag=0;p1=p0-next;if(p1=null) flag=0;printf(请输入你要修改的商品信息的商品号:);scanf(%ld,&snum);while(p1!=null)if(p1-num=snum)flag=1;break;p1=p1-next;if(flag=1) 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( 请选择修改的内容(19):);scanf(%d,&c);while(1) if(c=1|c=2|c=3|c=4|c=5|c=6|c=7|c=8|c=9)break;else printf(n输入有误,请重新输入!n清选择(19):); scanf(%d,&c);if(c=1|c=2|c=3|c=4|c=5|c=6|c=7|c=8|c=9) break;switch(c)case 1:printf(n输入修改后的商品号:);scanf(%ld,&p1-num);break; case 2: printf(输入修改后的商品名:); scanf(%s,&p1-name);break; case 3: printf(输入修改后的商品类别:); scanf(%s,&p1-kind);break; case 4: printf(输入修改后的商品生产日期(年月日之间用空格隔开):); scanf(%d%d%d,&p1-pro_date.year,&p1-pro_date.month,&p1-pro_date.day);break; case 5: printf(输入修改后的商品保质期:); scanf(%d,&p1-save_day);break; case 6: printf(输入修改后的商品数量:); scanf(%d,&p1-shuliang);break; case 7: printf(输入修改后的商品进价:); scanf(%f,&p1-jinjia);break; case 8: printf(输入修改后的商品售价:); scanf(%f,&p1-
温馨提示
- 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年骨科骨折固定手术器械使用技能考核答案及解析
- 2025年肿瘤综合治疗方案设计与实施答案及解析
- 鹦鹉热治疗讲课件
- 新解读《JB-T 8971-2013干式变压器用横流式冷却风机》新解读
- 2025年 天津市烟草专卖局(公司)笔试试卷(附答案)
- 中医治疗失眠课件
- 2025年高校图书馆建设项目可行性研究报告
- TD/T 1017-2008第二次全国土地调查基本农田调查技术规程
- JJG(烟草)01-2012卷烟和滤棒物理性能综合测试台检定规程
- 培训学校上墙管理制度
- 出血性疾病诊疗规范
- 口腔科消毒管理制度
- 供养中心考试题及答案
评论
0/150
提交评论