您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > 用C语言进行商品信息管理系统设计
《C语言程序设计》课程设计报告专业:电子信息工程(本)班级:0902姓名:学号:指导教师:二0一0年十二月二十九日目录一.商品信息管理系统设计的目的…………………………………03二.商品信息管理系统设计题目描述和要求………………………04三.商品信息管理系统设计报告内容………………………………043.1需求分析……………………………………………043.2概要设计……………………………………………043.3详细设计……………………………………………053.4编写代码……………………………………………063.5程序分析……………………………………………11四.总结…………………………………………………………11五.参考书目……………………………………………………12六.附源程序……………………………………………………13二、设计目的1、熟练掌握C语言课程中所学的理论知识;通过课程设计让我们对掌握的C语言的理论知识更加熟练,加深对C语言的各种数据类型的理解,以及在编程中对各种数据类型,运算符和表达示的运用,更加熟练掌握运用不同的结构类型如顺序结构、选择结构、循环结构,同时掌握数组、结构体在编程中的运用的优点。2、通过综合C语言的基本知识来解决实际问题;对理论知识有了一定的掌握后,要求我们能做到理论与实践相结合,通过综合C语言的基本知识来解决实际问题,这次的课程设计就是我们理论联系实际的案例,要求我们编写一个商品信息管理系统,方便对商品的各类指标进行存储,查询,为商店的管理带来方便,是我们对解决实际问题的一次尝试。3、加强分析和解决问题的能力。通过课程设计,加强我们对实际问题的分析能力,让我们在学习过程中的一些想法得到检验,可以让我们的思维在辩证中提高,最重要的是可以分析我们过往的不足,对于以后遇到类似问题可以更加快速、完善的解决,同时让我们积累了一定的经验,为今后的发展奠定了基础。二.程序设计题目描述和要求设计对n种商品进行管理的商品信息管理系统,商品信息管理系统是为了商品信息管理的方便而做的一套商品信息管理系统。本管理系统只有获得权限的用户才可以管理商品信息,否则不可以进行操作,提高了管理系统的安全性。获得权限的用户可以进行商品信息修改、商品信息删除、商品信息查询、计算总价格和平均价格的基本操作,还可以轻而易举得到统计信息,即商品编号,商品名称,出厂日期,商品价格。充分展示了一个商品信息管理系统所带来的方便。(可是本系统不支持商品信息永久保留的功能)系统功能包括:1、系统以菜单方式工作,密码登陆。2、商品信息的录入功能(增加数据)。用数组数据类型赋初值的方法把商品信息送到各个数组中(但注意要是合法数据),然后把它们输出显示。3、商品信息的删除(删除数据)。任意输入一个商品的编号,将它所有的信息从组数中删除。4、商品信息的浏览功能(查找数据)。任意输入一个商品的编号,打印出他的所有数据。要求能多次查找。5、商品信息的删除(修改数据)。任意输入一个商品的编号,打印出所有相关信息后,可对某一项信息进行修改并保存。6、商品信息的计算并排序。计算所有商品的总价格及平均价格(aver,单精度,输出一位小数),将包括所有数据的数组元素按价格从低到高的顺序排序打印出来。三.程序设计报告内容3.1需求分析:题目要求设计的系统满足如下一些要求:菜单方式工作;添加商品信息;删除指定商品信息;修改指定商品信息;浏览指定商品的信息;计算所有商品的总价格和平均价格;对于排序,根据题目的要求和自身设计的需求,本程序按照每种商品的价格从低到高的方式进行排序。3.2概要设计:本系统分为以下几个模块来实现其功能:密码登陆验证模块,为单独设计函数,放在主体main函数中;任务选择主菜单模块,包括:增加商品信息模块,删除商品信息模块,查找商品信息模块,修改商品信息模块,计算商品总价格及商品平均价格模块,退出系统模块;以上各模块除退出系统直接调用系统exit函数外,其它模块均单独放在一个函数里;分支选择利用的是switch语句。增加商品信息模块所用的函数接口为ADD,无参数调用;删除商品信息模块所用的函数接口为DELETEC【防止和系统的DELETE函数冲突】,无参数调用;查找商品信息模块的函数接口为FIND,无参数调用;修改商品信息模块的函数接口为MODIFY,无参数调用;计算商品平均价格和总价格的函数为AVER,无参数调用;主菜单功能选择模块函数接口为choose,无参数调用。系统使用的数据结构为结构体链表。结构体成员包括结构体成员变量和结构体方法,成员变量包括:Number,商品编号;name,商品名称;date,商品的出场日期;factory,制造商的名字;price,商品的价格;next结构体指针,指向链表的下一个节点;pre结构体指针,指向链表的上一个节点。结构体成员列表包括:Course,构造函数;output,输出当前节点的信息,也就是商品的信息。链表有一个头节点:start,一个链表尾节点:cur,添加商品信息通过操作尾节点cur实现;删除商品信息,查找商品信息和修改商品信息都从start节点开始操作。本系统预设密码为“12345”,不提供密码修改功能。3.3详细设计:Main函数:case1:ADD();break;增加商品case2:DELETEC();break;删除商品case3:FIND();break;查找商品case4:MODIFY();break;修改商品信息case5:AVER();break;总价格和平均价格case6:sortSeq;break;按照商品价格排序case7:SORT();break;算法:本系统的密码登陆及验证模块,为单独设计的函数,放在主体main函数中。因此主体main函数包括了使系统通过密码登陆(本程序通过调试和实际的操作反馈出,密码登录次数在程序的设计过程中没有做出限制,可以说是设计的一个缺陷)。伪代码如下:while(密码不匹配)重新输入密码endwhilewhile(用户输入选择)if(选择增加商品信息)ADD();elseif(删除指定商品信息)DELETEC();elseif(修改指定商品信息)MODIFY();elseif(查找指定商品信息)FIND();Elseif(计算总价格和平均价格)AVER();Elseif(退出系统)exit();endwhile**********************************************添加商品信息伪代码如下:ADD:while(继续添加)(“输入添加商品的信息”)New(是一个新的节点,存储添加的商品信息)Endwhile(“返回主菜单”)EndADD**********************************************删除商品信息伪代码如下:DELETEC:while(继续删除)输入删除的商品编号for(链表上的节点)if(当前节点的编号==待删除节点编号)删除当前节点,更改前后节点的next和pre指针指向标记找到节点elsethen继续遍历endforif(假如没有找到)输出提示信息elsethen输出删除成功endwhile返回主菜单endDELETEC**********************************************查找商品信息伪代码如下:FIND:while(继续查找)输入查找的商品编号for(链表上的节点)if(当前节点的编号==等待查找的节点编号)调用当前节点输出函数output,打印节点信息标记找到节点elsethen继续遍历endforif(假如没有找到)输出提示信息endwhile返回主菜单endFIND**********************************************修改商品信息伪代码如下:MODIFY:while(继续修改)输入修改的商品编号for(链表上的节点)if(当前节点的编号==待修改节点编号)输入新的商品信息标记找到节点elsethen继续遍历endforif(假如没有找到)输出提示信息elsethen提示修改成功endwhile返回主菜单endMODIFY**********************************************计算总价格和平均价格伪代码如下:AVER:初始化总学分sum为0for(未到达末尾节点)将节点学分累加,保存到sum变量中同时累计节点个数endfor打印并输出总价格和平均价格endAVER**********************************************选择函数伪代码如下:choose:打印主菜单,并提示输入命令编号然后系统执行指定命令endchoose程序流程图如下:输入查询删除修改计算结束程序输入密码界面主菜单输入数据完毕输入的数据输入的数据输入的数据输入的数据完毕完毕完毕选择功能计算总价格平均价格价格返回主菜单3.4编写代码作为小组长除了参与主函数的设计外,我在小组内主要负责的模块是,商品信息输出和俺照价格(从低到高的顺序)进行排序两个模块。1、个体任务模块的源代码如下:商品信息输入:Commodity*cur=NULL,*start=NULL;Commodity*tp_Pre=NULL;voidADD(){intlabel;//商品编号charname[50];//商品名称intelec;intsco;//学分puts(输入添加的商品信息,按照如下格式:编号名称出场年月价格);puts(返回主菜单输入-1);while(true){scanf(%d,&label);if(-1==label)break;scanf(%s%d%d,name,&elec,&sco);cur=newCommodity(label,name,elec,sco);if(NULL==start)start=cur;if(NULL==tp_Pre)tp_Pre=cur;else{cur-pre=tp_Pre;tp_Pre-next=cur;tp_Pre=cur;}puts(添加成功,您添加的信息如下:);cur-output();////////////////////////////////cur=cur-next;}system(cls);}按照商品价格排序:sortSeq[MAX];//结构体数组,用于排序用intMyCMP(constvoid*a,constvoid*b){structCommodity*aa=(Commodity*)a;structCommodity*bb=(Commodity*)b;returnaa-price-bb-price;}Commodity*cur=NULL,*start=NULL;Commodity*tp_Pre=NULL;2、具体负责模块的功能的设计与实现a、商品信息输入模块:voidADD(){intlabel;//商品编号charname[50];//商品名称intelec;intsco;//学分puts(输入添加的商品信息,按照如下格式:编号名称出场年月价格);puts(返回主菜单输入-1);while(true){scanf(%d,&label);//输入添加的商品编号if(-1==label)break;//假如输入-1,表示退出scanf(%s%d%d,name,&elec,&sco);//否则,继续输入剩余信息cur=newCommodity(label,name,elec,sco);//构造一个新节点,存储新加商品的信息if(NULL==start)start=cur;//假如是第一件商品,那么讲链表头结点指向他if(NULL==tp_Pre)tp_Pre=cur;//同上,将当前指针指向第一个节点else//否则,更改节点指向关系{cur-pre=tp_Pre;tp_Pre-next=cur;tp_Pre=cur;}puts(添加成功,您添加的信息如下:);cur-output();//
本文标题:用C语言进行商品信息管理系统设计
链接地址:https://www.777doc.com/doc-7028847 .html