收藏 分销(赏)

仓库管理系统程序设计训练报告.docx

上传人:xrp****65 文档编号:8791978 上传时间:2025-03-02 格式:DOCX 页数:40 大小:433.81KB
下载 相关 举报
仓库管理系统程序设计训练报告.docx_第1页
第1页 / 共40页
仓库管理系统程序设计训练报告.docx_第2页
第2页 / 共40页
点击查看更多>>
资源描述
HUNAN UNIVERSITY 程序设计训练 报 告 学生姓名xxxx xxxxx 学生学号 xx2 xxx 专业班级 xxxx班 指导老师 xxxx 院长 xxx 2012 年 6 月 12 日 目录 1 软件开发平台 2 2 软件功能说明 2 2.1 功能分析说明图 3 2.2 各项功能说明 3 3 软件设计详细内容 5 3.1 采用的主要数据结构类型 5 3.2 流程图 6 4 软件测试 11 4.1 软件测试用例 11 4.2 软件测试报告 25 5 附录 26 5.1 软件使用说明 26 5.2 源码 26 5.3 参考文献 37 6 心得..........................................................................................................................................38 1. 软件开发平台 配置环境 Windows 7(32位) 系统 运行环境 Windows 7(32位) 系统 开发工具 Dev C++ 程序语言 C 语言 2. 软件功能说明 仓库产品管理系统 要求记录产品的名称、制造商、产地、原有产量、现有量、编号、产品位置。 亓学忠: 1、创建产品信息 2、输出产品信息 3、修改产品信息 4、插入产品信息 5、删除产品信息 6、查询某产品信息 7、按产品名称排序 8、按产品编号排序 9、保存产品信息到文件 10、从文件文件中读取产品信息 朱宏伟: 1、目录 2、主函数 仓库产品管理系统 输入产品信息 输出产品信息 修改产品信息 产品信息排序 插入产品信息 删除产品信息 查询产品信息 退出系统 按产品名称排序 按产品编号排序 2.1功能分析说明图 2.2各项功能说明 要求对分别上面的每个功能模块进行详细的文字说明 输入模块 createList() 在主函数里面选择1 进入输入模块, 首先建立一个名为product 的文本文档,用 scanf函数依次从键盘输入产品名称 制造商 产地 原产量 现有量 编号 存放位置。 然后再把这些信息用printf函数写入文本文档,如果输入错误要重新输入。最后关闭文件。 打印模块 printList() 在主函数里面选择2 进入打印模块, 打开名为product的文本文档,然后依次把 文本里的产品名称 制造商 产地 原有量 现有量 编号 存放位置,用printf函数文 本读出来,用printf 函数显示出来,再关闭文件。 查找模块 find() 在主函数里面选择8 进入查找模块,再打开名为product的文本文档,然后输入要 查找的产品的名称,通过strcmp函数找到该产品的位置,再通过printf函数输出该产品息。 如果库中没有此种产品,会提示输入错误,重新输入产品名称。然后关闭文件退出查找模块。 修改模块 changeproduct() 在主函数里面选择7进入输入模块,然后打开名为protect的文本文档,输入要修改的产品的名称,通过strcmp函数找到该产品的位置,找到后直接输入新的信息,如果产品库中没有此种产品的名称,会提示重新输入产品名称。然后关闭文件。 删除模块 delproduct() 在主函数里面选择5 进入删除模块,然后打开名为product的文本文档,然后要删除的产品的名称,通过strcmp函数找到该产品位置,找到后又分三种情况: 1、如果该产品在链首,那么直接把链首位置后移到下一链节,然后清除此链节所占内存; 2、如果产品信息在链尾,那么直接上一链节指向NULL,然后清除此链节所占空间; 3、如果产品信息在链中,那么直接把上一链节的指针跳过此链节指向下一连接,然后清除此链节所占空间。 如果找不到此种产品,会提示重新输入产品名称,正确输入后按上面的三种情况运行此模块。 删除后退出删除模块。 插入模块 insertproduct() 在主函数里选择6进入到插入模块,打开名为product的文本文档,然后直接输要 插入的产品的名称 制造商 产地 原产量 现有量 编号 存放位置,然后此模块会直接 把该信息插入到信息首位,插入后退出此模块。 排序模块 namesortList()或者numberssortList() 在主函数里选择3进入按产品名称排序模块,选择4进入按产品编号排序模块,打 开名为product的文本文档,然后模块会通过链节一个一个对比彼此的名称大小(用strcmp 函数)或者编号大小,然后小者在前,大者在后重新排序,排序后退出此模块。 退出系统模块 通过输入0选择直接退出系统 3软件设计详细内容 3.1 采用的主要数据结构类型 仓库管理系统:#include<stdio.h> #include<string.h> #include<stdlib.h> 链表 3.2 流程图 1、main()函数流程图: namesortList(h) numberssortList(h) break break input select select=0? select=1? Select=2? createList() break break break break return main() Y N N Y Y Select=3? N N Select=4? N Select=5? Y Y printList(h) N delproduct(h) N N N Select=7? Select=6? Y Y Y insertproduct(h) Select=10? N Select=9? Select=8? break break Y Y changeproduct(h) find(h) load(h) break break Y save(h) 2、createList() 函数流程图: printf(....); input n i=1? i=3? i=2? printf(....); printf(....); ............... i=n? N Y N Y Y N Y printf(.....); return h 3、printList()函数流程图: return newNode->next!=NULL? N printf(.....); Y newNode=newNode->next input name Y cur==NULL? printf(.......); Y N strcmp(cur->name,name.)? curpre=cur cur=cur->next 4、find() 函数流程图: N 5、changeproduct() 函数流程图: input name Y cur==NULL? printf(.......); Y N strcmp(cur->name,name.)? curpre=cur cur=cur->next N input name N N strcmp(cur-> name,name)? curpre=cur cur=cur->next N N cur!=NULL? cur==h? h=h->next free(cur) cur->next==NULL? curpre->next=NULL free(cur) curpre->next=cur->next free(cur) 6、delproduct()函数流程图: Y return Y Y Y 4. 软件测试 4.1 软件测试用例 1、 创建产品信息 2、 输出数据 3、 按名称排序 4、 按产品编号排序 5、 删除产品信息 6、 插入产品信息 7、修改产品信息 8、 查询产品信息 9、 保存 10、 打开文件 11、 退出软件 4.2软件测试报告 将4.1 测试过程中能完成的功能和不能完成的功能以及不能完全完成的功能进行列表分析,指出测试结果和出错原因,例如: 标号 项目 预期结果 实际结果 出错原因 出错次数 01 主函数 菜单 美观的菜单 得到美观的菜单 无 无 02 输入产品信息 正确输入数据 完成 无 无 03 输出产品信息 正确输出数据 完成 无 无 04 按名称排序 正确排序 完成 无 无 05 按产品编号排序 正确排序 完成 无 无 06 删除产品信息 正确删除数据 完成 无 无 07 修改产品信息 正确修改 完成 无 无 08 查询产品信息 正确查询到信息 完成 无 无 09 退出系统 正确退出系统 完成 无 无 5.附录 5.1软件使用说明 运行条件:本软件可以在Dev C++ 和 Visual C++ 里运行,在Turbo C 下不能运行,其他编程软件没有测试。 进入菜单, 选择你要执行模块,在初次使用时,应收先选择数字1 输入航班信息后才能使用其他模块, 5.2源码 /*仓库产品管理系统-------亓学忠*/ #include<stdio.h> /*包含常用库函数*/ #include<string.h> /*包含strcmp、strcpy字符串比较拷贝函数*/ #include<stdlib.h> /*包含exit强制结束函数*/ #include<conio.h> struct product /*定义相关链表*/ { char name[12]; /*产品名称*/ char manufacturer[30]; /*制造商*/ char origin[30]; /*产地*/ int originqun; /*产品原有数量*/ int nowqun; /*现有产品数量*/ int numbers; /*产品编号*/ char location[30]; /*存放位置*/ struct product *next; /*指向下一个同类型结构*/ }; void W() { printf("\n\n\n"); printf("\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n"); printf("\t★ ★\n"); printf("\t☆ ☆\n"); printf("\t★ ★\n"); printf("\t☆ ☆\n"); printf("\t★ ★\n"); printf("\t☆ 欢迎使用产品库存管理系统 ☆\n"); printf("\t★ ★\n"); printf("\t☆ 按任意键继续 ☆\n"); printf("\t★ ★\n"); printf("\t☆ ☆\n"); printf("\t★ ★\n"); printf("\t☆ ☆\n"); printf("\t★ ★\n"); printf("\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n"); getch(); }; struct product *createList() /*定义新建产品信息函数*/ { struct product *head=NULL,*cur=NULL,*curnext=NULL; /*定义头节点、当前节点、下一个节点*/ int n,i; /*定义节点数、循环变量*/ printf("\t☆请输入要创建的节点数:"); scanf("%d",&n); for(i=0;i<n;i++) /*用for循环输入产品信息*/ { if(i==0) /*输入头节点信息*/ { A: printf("\t☆请输入第%d种产品的:名称 制造商 产地 原产量 现有量 编号 存放位置\n",i+1); curnext=(struct product*)malloc(sizeof(struct product)); /*开辟curnext需要的空间*/ printf("\t"); scanf("%s%s%s%d%d%d%s",curnext->name,curnext->manufacturer,curnext->origin, &(curnext->originqun),&(curnext->nowqun),&(curnext->numbers),curnext->location); if(curnext->originqun<0||curnext->nowqun<0||curnext->originqun<curnext->nowqun) /*判断输入数据是否正确*/ { printf("\n\t★输入数据错误,请重新输入!\n\n"); goto A; } curnext->next=NULL; head=curnext; /*将cuenext赋给头节点*/ cur=curnext; /*将cuenext赋给当前节点cur*/ } else { curnext=(struct product*)malloc(sizeof(struct product)); /*开辟下一个节点需要的空间*/ B: printf("\t☆请输入第%d种产品的:名称 制造商 产地 原产量 现有量 编号 存放位置\n",i+1); printf("\t"); scanf("%s%s%s%d%d%d%s",curnext->name,curnext->manufacturer,curnext->origin, &(curnext->originqun),&(curnext->nowqun),&(curnext->numbers),curnext->location); if(curnext->originqun<0||curnext->nowqun<0||curnext->originqun<curnext->nowqun) /*判断输入数据是否正确*/ { printf("\n\t★输入数据错误,请重新输入!\n\n"); goto B; } curnext->next=NULL; cur->next=curnext; /*将当前节点与下个节点连接起来*/ cur=curnext; /*当前节点后移*/ } } system("cls"); /*DOS清屏*/ printf("\n\t☆恭喜你输入已完成。\n\n"); return head; /*结束输入信息并返回主菜单*/ }; void printList(struct product *h) /*定义输出产品信息函数*/ { struct product *newNode; newNode=h; /*获取链表头指针*/ system("cls"); printf("\n\t名称\t制造商\t产地\t原产量\t现有量\t编号\t存放位置"); while(newNode->next!=NULL) { printf("\n\t%s\t%s\t%s\t%d\t%d\t%d\t%s",newNode->name,newNode->manufacturer,newNode->origin, newNode->originqun,newNode->nowqun,newNode->numbers,newNode->location); newNode=newNode->next; } printf("\n\t%s\t%s\t%s\t%d\t%d\t%d\t%s\n",newNode->name,newNode->manufacturer,newNode->origin, newNode->originqun,newNode->nowqun,newNode->numbers,newNode->location); printf("\n"); } struct product *delproduct(struct product *h) /*定义删除某位产品的信息函数,名称由用户输入*/ { struct product *cur=NULL,*curpre=NULL; char name[12]; G: printf("\t☆请输入要删除的产品名称:"); scanf("%s",name); cur=h; while(cur!=NULL&&strcmp(cur->name,name)) /*查找产品位置*/ { curpre=cur; /*如果不是所需节点,curpre指向后移*/ cur=cur->next; /*cur也后移*/ } if(cur==NULL) /*如果没有找到*/ { printf("\n\t★没有找到该产品,请重新输入!\n\n"); goto G; } if(!strcmp(cur->name,name)) /*如果找到该产品*/ { if(cur==h) /*如果该节点在链首*/ { h=h->next; /*当前链首后移*/ free(cur); /*释放链首所占内存*/ } else { if(cur->next==NULL) /*如果该节点在链尾*/ { curpre->next=NULL; /*前一个链节指向空*/ free(cur); /*释放链尾所占内存*/ } else /*如果该节点在链中*/ { curpre->next=cur->next; /*该节点的前一位链节指向该链节后的下一位节点*/ free(cur); /*释放该节点所占内存*/ } } } system("cls"); printf("\n\t☆已成功删除该产品信息!\n\n"); return h; /*结束该函数且返回新链表后返回主菜单*/ } struct product *changeproduct(struct product *h) /*定义修改产品信息函数*/ { struct product *cur=NULL,*curpre=NULL; char name[12]; D: printf("\t☆请输入要修改产品名称:"); scanf("%s",name); cur=h; while(cur!=NULL&&strcmp(cur->name,name)) /*查找产品位置*/ { curpre=cur; cur=cur->next; } if(cur==NULL) /*如果没有找到*/ { printf("\n\t★没有找到该产品,请重新输入!\n\n"); goto D; } if(!strcmp(cur->name,name)) /*如果找到该产品*/ { E: printf("\n\t名称 制造商 产地 原产量 现有量 编号 存放位置\n"); /*输入该产品的新信息*/ printf("\t"); scanf("%s%s%s%d%d%d%s",cur->name,cur->manufacturer,cur->origin, &(cur->originqun),&(cur->nowqun),&(cur->numbers),cur->location); if(cur->originqun<0||cur->nowqun<0||cur->originqun<cur->nowqun) /*判断输入数据是否正确*/ { printf("\n\t☆输入数据错误,请重新输入!\n\n"); goto E; } } system("cls"); printf("\n\n\t☆已成功修改信息!\n\n"); return h; } struct product *insertproduct(struct product *h) /*插入新产品信息到链首*/ { struct product *newproduct=NULL; newproduct=(struct product*)malloc(sizeof(struct product)); C: printf("\t请输入新产品的信息:名称 制造商 产地 原有量 现有量 编号 存放位置\n "); printf("\t"); scanf("%s %s %s %d %d %d %s",newproduct->name,newproduct->manufacturer,newproduct->origin, &(newproduct->originqun),&(newproduct->nowqun),&(newproduct->numbers),newproduct->location); if(newproduct->originqun<0||newproduct->nowqun<0||newproduct->originqun<newproduct->nowqun) /*判断输入数据是否正确*/ { printf("\n\t★输入数据错误,请重新输入!\n\n"); goto C; } newproduct->next=h; h=newproduct; system("cls"); /*DOS清屏*/ printf("\n\n\t☆已成功插入新产品信息!\n\n"); return h; } struct product *namesortList(struct product *h) /*按名称对产品进行排序*/ { struct product *newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre; if(h==NULL) /*空链*/ { return h; } while(h!=NULL) { minPre=curPre=min=cur=h; while(cur!=NULL) /*检索名称最小的点*/ { if(strcmp(cur->name,min->name)<0) { min=cur; minPre=curPre; } curPre=cur; cur=cur->next; } if(newH==NULL) /*新链为空*/ { newH=min; newT=min; } else { newT->next=min; /*附到新链尾*/ newT=newT->next; } /*将最小节点和原链分离*/ if(min==h) /*min在链首*/ { h=h->next; } else { if(min->next==NULL) { minPre->next=NULL; } else { minPre->next=min->next; } } } min->next=NULL; system("cls"); printf("\n\n\t☆已成功按名称排名!\n\n"); return newH; } struct product *numberssortList(struct product *h) /*按产品编号排序*/ { struct product *newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre; if(h==NULL) { return h; } while(h!=NULL) { minPre=curPre=min=cur=h; while(cur!=NULL) { if(cur->numbers<min->numbers) { min=cur; minPre=curPre; } curPre=cur; cur=cur->next; } if(newH==NULL) { newH=min; newT=min; } else { newT->next=min; newT=newT->next; } if(min==h) { h=h->next; } e
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服