还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
题目__商品管理系统院系信息科技学院专业计算机科学与技术姓名学号指导教师日期桂林电子科技大学信息科技学院目录1问题定义…………………………………………………………………………..32系统设计……………………………………………………………………32.1总体设计………………………………………………………………………………32.2详细设计………………………………………………………………………………
32.
2.1数据结构设计…………………………………………………………
32.
2.2主控流程…………………………………………………………………………
32.
2.3信息输入模块……………………………………………………………………
42.
2.4信息增加模块……………………………………………….…………………
42.
2.5信息修改模块………………………………………………
42.
2.6信息删除模块……………………………………………….…………………
42.
2.7信息查看模块……………………………………………….…………………
42.
2.8信息统计模块…………………………………………………………………
42.
2.9函数功能描述…………………………………………………………………43系统实现………………………………………………………………………
53.1编码………………………………………………………………………
53.
1.1程序预处理……….……………………………………………………………
53.
1.2主函数__in……….………………………………………………………
53.
1.3主菜单界面………….………………………………………………………
63.
1.4商品信息建立…….………………………………………………………….
73.
1.5商品信息查看………….………………………………………………………
93.
1.6商品信息增加……….………………………………………………………..
113.
1.7商品信息删除………….………………………………………………………
123.
1.8商品信息修改………….………………………………………………………
143.
1.9商品数目统计………….………………………………………………………
163.2测试与调试………………………………………………………………………
223.
2.1概述………….……………………………………………………………
223.
2.2程序测试………….……………………………………………………………224系统维护………………………………………………………………………255归纳总结………………………………………………………………………
255.1__经验………………………………………………………………………
255.2实训中遇到的问题及解决方法………………………………………………
255.3设计中的不足之处……………………………………………………………………
255.4感想和心得体会……………………………………………………………………256参考资料………………………………………………………………………25__商品管理系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的__流程,熟悉C语言的单链表的各种基本操作本程序中涉及结构体、单链表、文件保存等方面的知识通过本程序的训练,使学生能对C语言的链表的操作有一个更深刻的了解,掌握利用单链表存储结构实现对__信息管理系统的原理,为进一步__出高质量的管理信息系统打下坚实的基础
1、问题定义创建一个__管理系统该程序具有保存商品信息、查询商品信息、修改商品信息、删除商品信息、统计商品信息并具有自动判断商品__、库存等的功能__管理系统主界面
2、系统设计2.1总体设计本程序采用模块化设计方法,即将一个大任务分成一个个小任务,然后分别设计个小任务划分出来的模块相对__而又相互关联,容易理解本程序由5大模块组成
1.输入信息模块
2.增加信息模块
3.修改信息模块
4.删除信息模块
5.统计信息模块2.2详细设计
2.
2.1数据结构设计定义结构体structgood{intnum;/*商品编号*/charname
[20];/*商品名称*/charkind
[40];/*商品类型*/floatpri__;/*商品__*/charunit
[10];/*商品单位*/intquantity;/*商品数量*/structgood*next;/*定义结构体指针类型*/}*head*p1*p2;单链表good结构体structgood/*定义结构体*/{intnum;/*商品编号*/charname
[20];/*商品名称*/charkind
[40];/*商品类型*/floatpri__;/*商品__*/charunit
[10];/*商品单位*/intquantity;/*商品数量*/structgood*next;/*定义结构体指针类型*/}*head*p1*p2;
2.
2.2主控__in函数执行流程Int__instructgood*p1*p2;while1{ifm==1printf********************************商品信息的查看*******************************\n;ifm==2{printf********************************商品信息的输入*******************************\n;}ifm==3{printf********************************商品信息的统计*******************************\n;}ifm==4{printf********************************退出*******************************\n;}break;}}return0;}本商品管理系统执行主流程它先以可读写的方式打开数据文件,此文件默认为“C:\goodslist.___”,若该文件不存在,则新建此文件当打开文件操作成功后,从文件中一次读出一条记录,然后执行显示主菜单和进入主循环操作,进行按键判断
2.
2.3输入信息模块记录可以从以文件形式存储的数据文件中读入,也可从键盘逐个输入商品记录商品记录由商品的基本信息和成绩信息字段构成当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条__到单链表中
2.
2.4增加信息模块增加信息模块主要实现信息增加
2.
2.5修改信息模块修改信息模块主要实现信息修改
2.
2.6删除信息模块删除信息模块主要实现信息删除
2.
2.7查看信息模块查看信息模块主要实现信息查看
2.
2.8统计信息模块统计信息模块主要实现信息统计
2.
2.9函数功能描述shuchushuchu函数用于输出商品信息structgood*paixustructgood*head2此函数用于给链表排序jisuanjisuan函数用于判断商品的类别printf0structgood*pprintf0structgood*p函数用于遍历链表并打印电器类商品printf1structgood*pprintf1structgood*p函数用于遍历链表并打印日用品类商品printf2structgood*pprintf2函数用于遍历链表并打印办公用品类商品printf3structgood*pprintf3structgood*p函数用于遍历链表并打印食品类商品shunxudayinshunxudayin函数用于给商品排序并打印tongji1tongji1函数用于统计给库存量低于100的货名和类别tongji2tongji2函数用于统计商品库存量有2种以上(含两种)低于100的商品类别完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写
3、系统实现3.1编码
3.
1.1程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作#includestdio.h/*输入,输出头文件*/#includestdlib.h/*申请空间头文件*/#includestring.h/*对字符串__头文件*/#includeconio.h/*清屏头文件*/FILE*fp;intn=0;/*定义文件指针类型*/intija
[4]m;/*定义整数类型*/float__er
[4]sum
[4]g
[4]h;/*定义浮点类型*/
3.
1.2主函数__in__in函数主要实现了对整个程序的运行控制,以及相关功能模块的调用Int__instructgood*p1*p2;while1{ifm==1printf********************************商品信息的查看*******************************\n;ifm==2{printf********************************商品信息的输入*******************************\n;}ifm==3{printf********************************商品信息的统计*******************************\n;}ifm==4{printf********************************退出*******************************\n;}break;}}return0;}
3.
1.3主菜单界面用户进入商品管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务{printf桂林电子科技大学信息科技学院__管理系统\n;printf***********************************************\n;printf1----------输出查看或者修改已存信息-----------\n;printf-----------------------------------------------\n;printf2-----重新输入新信息(并且删除原有信息)------\n;printf-----------------------------------------------\n;printf3统计商品信息(如果您还没有查看过信息请先按1)\n;printf-----------------------------------------------\n;printf4-------------------退出---------------------\n;printf***********************************************\n;scanf%dm;
3.
1.4商品信息建立用户进入商品管理系统时,对某个商品的信息进行处理structgood/*定义结构体*/{intnum;/*商品编号*/charname
[20];/*商品名称*/charkind
[40];/*商品类型*/floatpri__;/*商品__*/charunit
[10];/*商品单位*/intquantity;/*商品数量*/structgood*next;/*定义结构体指针类型*/}*head*p1*p2;structgood*createlist/*创建链表函数*/{structgood*head1*p1*p2;/*定义结构体指针类型*/iffp=fopengoodsmessage.___w==NULL/*判断能否打开文件*/{printfcannotopenthefile;exit0;/*结束程序*/}head1=structgood*__llocsizeofstructgood;/*申请头结点空间*/p1=head1;p2=head1;printf*********************************************\n;printf请输入信息:编号,名称,类型,__,单位,数目\n;printf(以输入“-1”表示结束输入)\n;printf*********************************************\n;printf____________________\n;scanf%d%s%s%f%s%dp1-nump1-namep1-kindp1-pri__p1-unitp1-quantity;/*输入商品信息*/printf____________________\n;p1-next=NULL;fprintffp%d%s%s%f%s%dp1-nump1-namep1-kindp1-pri__p1-unitp1-quantity;/*将商品信息写入文件*/while1{p1=structgood*__llocsizeofstructgood;/*申请新空间*/printf*********************************************\n;printf请输入信息:编号,名称,类型,__,单位,数目\n;printf(以输入“-1”表示结束输入)\n;printf*********************************************\n;printf____________________\n;scanf%dp1-num;ifp1-num==-1/*申请空间结束条件*/{printf____________________\n\n;fprintffp%d-1;fclosefp;returnhead1;/*返回头指针*/}scanf%s%s%f%s%dp1-namep1-kindp1-pri__p1-unitp1-quantity;/*输入商品信息*/printf________________\n;fprintffp%d%s%s%f%s%dp1-nump1-namep1-kindp1-pri__p1-unitp1-quantity;/*将商品信息写入文件*/p1-next=NULL;p2-next=p1;p2=p1;}}
3.
1.5商品信息查看voidshuchu/*输出商品信息函数*/{do{structgood*p3*p4*p5;/*定义结构体指针类型*/intn=0p=0q=0r=0;printf所有商品信息\n;printf编号,名称,类型,__,单位,数目\n;printf**********************************\n;iffp=fopengoodsmessage.___rb+==NULL/*判断能否打开文件*/{printfcannotopenthefile;exit0;/*结束程序*/}head=structgood*__llocsizeofstructgood;/*申请头结点空间*/p3=head;fscanffp%d%s%s%f%s%dp3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*从文件中写到链表*/while1{p4=structgood*__llocsizeofstructgood;/*申请头结点空间*/fscanffp%dp4-num;ifp4-num!=-1/*判断循环结束条件*/{fscanffp%s%s%f%s%dp4-namep4-kindp4-pri__p4-unitp4-quantity;/*从文件中写到链表*/p4-next=NULL;p3-next=p4;p3=p4;}else{p3-next=NULL;break;}}fclosefp;/*关闭文件*/p3=head;whilep3!=NULL{printf%d%s%s%
0.1f%s%d\n\np3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;printf__________________________________\n;p3=p3-next;}printf**********************************\n;printf//////////////////////////////////\n;whilen!=4{p3=head;printf**********************************\n;printf1添加商品信息\n;printf2删除某商品信息\n;printf3修改某商品信息\n;printf4返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)\n;printf**********************************\n;scanf%dn;
3.
1.6商品信息增加ifn==1/*添加商品信息*/{printf请输入商品编号名称类型__单位数目\n;printf**********************************\n;p4=structgood*__llocsizeofstructgood;/*申请空间*/scanf%d%s%s%f%s%dp4-nump4-namep4-kindp4-pri__p4-unitp4-quantity;/*输入商品信息*/p4-next=NULL;whilep3-next!=NULL/*判断循环结束条件*/{p3=p3-next;}p3-next=p4;p3=head;iffp=fopengoodsmessage.___w==NULL/*判断能否打开文件*/{printfcannotopenthefile;exit0;/*结束程序*/}whilep3!=NULL{fprintffp%d%s%s%f%s%dp3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*将商品信息写入文件*/p3=p3-next;}fprintffp%d-1;fclosefp;/*关闭文件*/printf**********************************\n;printf__________________________________\n;printf------------请按4返回-------------\n;printf__________________________________\n;printf**********************************\n;}
3.
1.7商品信息删除ifn==2/*删除商品*/{printf**********************************\n;printf请输入需要删除的商品编号\n;printf**********************************\n;scanf%dp;printf**********\n;printf1确认删除\n2取消删除\n;printf**********\n;scanf%dr;ifr==1{ifhead-num==p{head=head-next;freep3;/*释放空间*/}else{p4=head;p3=p4-next;whilep3!=NULL/*判断循环结束条件*/{ifp3-num==p{p5=p3-next;freep3;/*释放空间*/p4-next=p5;break;}p3=p3-next;p4=p4-next;}}iffp=fopengoodsmessage.___w==NULL/*判断能否打开文件*/{printfcannotopenthefile;exit0;/*结束程序*/}p3=head;whilep3!=NULL/*判断循环结束条件*/{fprintffp%d%s%s%f%s%dp3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*将商品信息写入文件*/p3=p3-next;}fprintffp%d-1;fclosefp;/*关闭文件*/}ifr==2continue;/*继续循环*/printf**********************************\n;printf__________________________________\n;printf------------请按4返回-------------\n;printf__________________________________\n;printf**********************************\n;}
3.
1.8商品信息修改ifn==3/*修改某商品信息*/{printf请输入需要修改的商品编号\n;scanf%dq;whilep3!=NULL/*判断循环结束条件*/{ifp3-num==q/*判断是否为所需要修改的商品*/{printf请输入商品单价与库存量(如果单价不变请输入原来的单价)\n;scanf%f%dp3-pri__p3-quantity;/*输入商品__与库存量*/}p3=p3-next;}iffp=fopengoodsmessage.___w==NULL/*判断能否打开文件*/{printfcannotopenthefile;exit0;/*结束程序*/}p3=head;whilep3!=NULL/*判断循环结束条件*/{fprintffp%d%s%s%f%s%dp3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*将商品信息写入文件*/p3=p3-next;}fprintffp%d-1;fclosefp;/*关闭文件*/printf**********************************\n;printf__________________________________\n;printf------------请按4返回-------------\n;printf__________________________________\n;printf**********************************\n;}ifn==4/*退出*/break;}printf**********\n;printf1继续修改\n---------\n2返回\n;printf**********\n;scanf%dp;ifp==1continue;/*继续循环*/ifp==2break;/*跳出循环*/}whilen!=2;fclosefp;/*关闭文件*/}
3.
1.9商品信息统计voidprintf0structgood*p/*遍历链表并打印电器类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;whilep3!=NULL/*判断遍历链表循环结束条件*/{ifstrcmpp3-kindc==0/*判断商品类型是否为电器类型*/{printf%d\t%s\t%s\t%
0.1f\t%s\t%d\np3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*输出电器类商品信息*/printf________________________________________________\n;}p3=p3-next;}return;}voidprintf1structgood*p/*遍历链表并打印日用品类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;whilep3!=NULL/*判断遍历链表循环结束条件*/{ifstrcmpp3-kindd==0/*判断商品类型是否为日用品类型*/{printf%d\t%s\t%s\t%
0.1f\t%s\t%d\np3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*输出日用品类商品信息*/printf________________________________________________\n;}p3=p3-next;}return;}voidprintf2structgood*p/*遍历链表并打印办公用品类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;whilep3!=NULL/*判断遍历链表循环结束条件*/{ifstrcmpp3-kinde==0/*判断商品类型是否为办公用品类型*/{printf%d\t%s\t%s\t%
0.1f\t%s\t%d\np3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*输出办公用品类商品信息*/printf________________________________________________\n;}p3=p3-next;}return;}voidprintf3structgood*p/*遍历链表并打印食品类商品函数*/{structgood*p3;/*定义结构体指针类型*/p3=p;whilep3!=NULL/*判断遍历链表循环结束条件*/{ifstrcmpp3-kindf==0/*判断商品类型是否为食品类型*/{printf%d\t%s\t%s\t%
0.1f\t%s\t%d\np3-nump3-namep3-kindp3-pri__p3-unitp3-quantity;/*输出食品类商品信息*/printf________________________________________________\n;}p3=p3-next;}return;}voidshunxudayin{fori=0;i4;i++g[i]=__er[i];/*将平__赋给新数组*/forj=0;j3;j++/*将新数组用冒泡排序法排序*/fori=j+1;i4;i++{ifg[j]g[i]{h=g[j];g[j]=g[i];g[i]=h;}}printf\n****************************\n;printf商品平__格排序表(从高到低)\n;printf****************************\n;printf________________________________________________\n;printf编号\t名称\t类别\t单价\t单位\t数量\n;printf________________________________________________\n;forj=0;j4;j++fori=0;i4;i++{if__er[i]==g[j]/*判断每类商品平__格的先后顺序*/switchi{case0:printf0head;/*调用遍历链表并打印电器类商品函数*/break;case1:printf1head;/*调用遍历链表并打印日用品类商品函数*/break;case2:printf2head;/*调用遍历链表并打印办公用品类商品函数*/break;case3:printf3head;/*调用遍历链表并打印食品类商品函数*/break;}}}voidtongji1{p1=head;printf\n************************\n;printf库存量低于100的货名及类别\n;printf************************\n;printf________________________\n;printf商品名称\t商品类型\n;printf________________________\n;whilep1!=NULL/*判断遍历链表循环结束条件*/{ifp1-quantity100/*判断库存量是否小于100*/{printf%s\t%s\np1-namep1-kind;/*输出商品名称及类别*/printf________________________\n;}p1=p1-next;}}voidtongji2{printf\n**********************************************\n;printf商品库存量有2种以上(含2种)低于100的商品类别:\n;printf**********************************************\n;printf________\n;ifa
[0]100a
[0]=2/*判断电器类库存量是否为2种以上(含2种)低于100*/{printf电器\n;printf________\n;}ifa
[1]100a
[1]=2/*判断日用品类库存量是否为2种以上(含2种)低于100*/{printf日用品\n;printf________\n;}ifa
[2]100a
[2]=2/*判断食品类库存量是否为2种以上(含2种)低于100*/{printf食品\n;printf________\n;}ifa
[3]100a
[3]=2/*判断办公用品类库存量是否为2种以上(含2种)低于100*/{printf办公用品\n;printf________\n;}}3.2测试与调试
3.
2.1概述一般情况下,为解决一个问题所编写的程序代码较长,可能包括几百条甚至成千上万条语句在检查并排除所有语法错误后,还会有不易发现的逻辑错误,因此要对程序进行认真仔细的测试与调试测试是通过运行程序发现错误的过程,常见的错误有数据溢出、数组越界、进入死循环、语句顺序颠倒、多加“;”或少加“{}”等等调试则是确定测试中找到的错误性质并改正错误的过程测试与调试通常交替进行,即测试——调试——再测试——再调试能检查出尚未发现的、各种不同类型错误的测试才是成功的测试测试程序需要测试用例,测试用例可用如下公式表示测试用例=测试数据+预期结果好的测试用例应该是用尽可能少的测试数据发现尽可能多的错误,即发现错误的概率要大要选择合适的测试数据,使系统在运行时尽量能执行到每条语句,以测试各指令是否正确还应分别测试输入合法数据与非法数据时,程序的运行情况,对于合法数据,还要考虑数据的一般性与特殊性,如求最大值的问题,应测试最大值在最前面、最后面、中间某一位置的情况测试程序时,用监视窗口可以随时查看变量或表达式的值,有时还可以将部分程序代码用注释符暂时括起来,缩短程序,以便压缩出错代码的范围
3.
2.2程序测试在主菜单中选择2本程序需要先建立文件才能运行其他功能当用户输入2并按回车键后,即可进入输入信息并建立文件的界面在主菜单中选择1建立文件信息后既可输入1进行查看和修改信息在商品信息菜单中选择1在商品信息菜单中选择1后按回车,既可进入添加商品信息的界面在商品信息菜单中选择2在商品信息菜单中选择2后按回车,既可进入删除商品信息界面在商品信息菜单中选择3在商品信息菜单中选择3后按回车,既可进入修改商品信息的界面在主菜单中选择在主菜单中选择3后按回车,既可进入商品信息统计界面
4、系统维护经测试与调试确认软件无错时,__就告一段落,这时可以交付软件供用户使用,但是在软件的使用过程中还会面临更加漫长的工作,即软件维护一般维护的工作有更改使用中发现的错误;为适应实际环境而对程序进行修改;为满足新的需求而对程序作必要的改进等等
5、归纳总结5.1__经验通过对本题目的__,体会到要掌握以下几点内容5.2实训中遇到的问题及解决方法在这次实训中,碰到最大的问题是链表的使用,因为我本身对链表的操作并不是特别熟练后来经过老师的指导,并查找了大量资料,终于初步掌握了链表的使用与操作5.3设计中尚存的不足之处关于这次的程序,也有挺多不足的地方首先,我觉得程序还不够完善,有些地方甚至有点乱;其次,因时间紧急并没有加上查询功能;最后,就是该程序界面不够美观大方5.4感想和心得体会通过这次实训,我感触甚深,C语言是一门高深的计算机语言,很多C语言的精髓我都没有很好掌握我应该更要在C语言方面下工夫,毕竟C语言是C++等更多计算机语言的基础,C语言学不好意味着以后对其他计算机语言的学习会更吃力
6、参考资料
[1]谭浩强.C程序设计(第三版).清华大学出版社,2005实训报告。