《C++程序设计》课程实习课程设计说明书之超市商品信息管理系统教学提纲.doc
《《C++程序设计》课程实习课程设计说明书之超市商品信息管理系统教学提纲.doc》由会员分享,可在线阅读,更多相关《《C++程序设计》课程实习课程设计说明书之超市商品信息管理系统教学提纲.doc(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。C+程序设计课程实习课程设计说明书之超市商品信息管理系统-超市商品信息管理系统C+程序设计课程设计说明书指导教师:XXX设计成员:刘X王X赵X张X学院:XXXXXXXXXXXXXXX学院班级:XXXX齐齐哈尔大学计算机中心二零零八年九月C+程序设计课程设计任务书适用专业:计算机科学与技术设计题目:超市商品信息管理系统一、已知技术参数或设计前提1、中小型超市一般会有上万件商品。2、每件商品需要记录商品名、条形码、类别、价格、出厂日期等商品的基本信息。3、除此之外,还需要记录商品的其他相关信息,如生产厂家、
2、供货处代码、厂家网址、厂家电话等。4、超市商品的相关信息需要存储到文件系统中,同时需要提供对信息的添加、编辑、删除等操作。5、超市管理员每天会记录购进的商品信息,核销过期的商品等。二、设计内容及要求1、使用链表结构操作数据,提供创建、插入、删除节点等操作。2、使用类和结构表示商品信息。3、实现商品信息的添加、编辑、删除等功能。4、实现以商品名进行查询和显示所有商品信息的功能。5、实现使用文本文件保存所有商品信息的存储功能。三、课程设计工作计划1、确定题目,成立设计小组,做用户需求分析(9月1日-9月5日)2、查阅资料,进行问题分析,制定方案,确定成员分工(9月5日-9月10日)3、根据方案编写
3、程序并进行调试(9月10日-9月25日)4、撰写设计说明书,完成设计(9月25日-10月1日)5、提交设计内容,答辩四、相关教材及参考书目1、C+语言基础教程.吕凤翥编著.清华大学出版社指导教师签字:系主任签字:年月日2、C+程序设计教程.钱能编著.清华大学出版社-目录一、需求分析2二、系统总体设计2三、模块功能实现3四、系统的软硬件环境10五、系统的使用说明10六、结束语13七、参考文献13附录A:程序源代码14附录B:程序调试记录17教师评语18一、需求分析中小型超市采购的商品一般都成千上万件。对这些商品进行有效的管理必不可少。每件商品一般都需要记录商品名、条形码、类别、价格、出厂日期等商
4、品的基本信息。除此之外,还需要记录商品的其他相关信息,如生产厂家、供货处代码、厂家网址、厂家电话等。超市商品的相关信息需要存储到文件系统中,一般都需要提供对商品信息的添加、编辑、删除等操作。超市管理员每天都会记录购进的商品信息,核销过期的商品等。为了巩固我们所学的C+语言程序设计知识,也为了满足课程设计的要求,我们在对几个中小型超市进行调研的基础上,设计和实现一个小型的超市商品管理系统,提供商品系统的添加、删除、编辑等功能。同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。二、系统总体设计系统应该具有管理系统的基本功能,即对商品信息能够进行添加、删除、编辑
5、等基本管理。除此之外,还要考虑安全问题,即对系统设置密码,进行访问控制。系统设置了相应的链表结果表示操作商品信息。为了便于系统调试,系统将商品信息存储于文本文件中。系统体系结构图2-1所示。文本文件系统主菜单1、添加商品信息2、删除商品信息3、显示商品信息4、查询商品信息5、编辑商品信息6、帮助菜单7、保存数据0、退出系统链表类1、添加节点2、删除节点3、查找节点4、创建节点图2-1系统体系结构根据需求分析,系统应该包含添加商品信息、删除商品信息、显示商品信息、查询商品信息、编辑商品信息、保存数据等6个主要功能模块。系统总体框架如图2-2所示。超市商品信息管理系统添加商品信息删除商品信息显示商
6、品信息查询商品信息编辑商品信息保存数据图2-2系统功能框图三、模块功能实现根据系统功能分析,设计具体的类以实现系统功能。系统主要使用2个主要的类来实现系统功能:一个为Manage类,负责实现系统界面的控制机制;另一个为list类,即链表类,实现系统的数据处理功能。系统的主要类之间的关系如图3-1所示。图3-1系统类之间的关系1、list链表类的设计与实现根据总体设计内容,本系统主要使用链表结构来操作数据,所以链表类的设计与实现为系统实现的核心。链表类中的主要数据成员head为nodetype节点类型的数据。nodetype的具体结构为:typedefstructlinknodecharaddr
7、ess100;/厂家地址charbirthday100;/出厂日期structscokksc;/供货处代号structgoodsgo;/单个商品信息structtelephonete;/购货方式boolflag;structlinknode*next;/指向节点的指针nodetype;此节点类型类一个自定义的结构体,其中有7个数据域,两个整型数组分别代表厂家地址和出厂日期;还有三个数据域,是嵌入的结构体类型,分别代表供货处代号、单个商品信息、购货方式,其商品信息结构体的具体结构如下:structgoodscharname100;/商品名chartype100;/类别charauthentica
8、tion100;/商品认证charcompany100;/公司名charprice50;/价格;其他结构的详细信息请参考附录A:程序源代码。此节点类型的最后一个域是重要的指针域,用于存放指向下一个节点的指针。根据上面设计的链表结构和系统功能设计的内容,可以进一步规划链表类的主要功能如下:(1)添加节点将新添加的商品信息填充到新创建的节点中,然后插入到链表里。类的成员函数原型如下:nodetype*List:insertNode(inti);其中,整型参数i为节点序号;函数返回值为链表的节点指针。在此函数中,首先,定义h,p,s三个指向节点的指针,h为指向链表头的指针,p为查找节点时返回的指针,
9、s为指向新生成的节点的指针;然后,使用malloc函数创建一个空的节点,即在堆空间创建一个nodetype类型的变量,将s指针指向此变量;判断是否是此链表的第一个节点,如果是,则s所指节点为链表的头节点,并将h指针指向链表头节点;如果不是,则需要查找节点的插入位置,根据函数参数i调用intFindNode函数查找插入位置,并将返回的位置指针复制给p;如果p所指向的值存在,则将创建的s节点插入,否则,显示i值错误。一般插入节点的方法是使用下面两条语句:s-next=p-next;/s节点的next指针指向p节点的下一个节点p-next=s;/p的next指针指向s节点函数最后,将h指向链表的头节
10、点,并返回新创建的节点s的地址。函数的程序流程图如图3-1所示。开始创建链表节点并初始化:s=(nodetype*)malloc(sizeof(nodetype);s-next=NULL;是否为链表的第一个节点?插入节点:s-next=h;h=s;查找节点i,找插入位置:p=intFindNode(i);是否找到(p!=NULL)?插入节点:s-next=p-next;p-next=s;i值不正确head=h;定义指针:nodetype*h=head,*p,*s;否是否是returns;图3-1插入节点流程图(2)显示节点信息在系统中,需要显示所有的商品名信息、一件商品的所有信息等,这些都需要
11、显示节点保存的相应信息。显示所有商品名,就是显示节点中的商品域中的商品名信息,它显示的是节点的一部分信息。显示所有的商品名的成员函数原型如下:voidList:dispNameAll();其函数功能是显示所有商品名,无参数,无返回值。其函数体的主要源代码如下所示:voidList:dispNameAll()nodetype*p=head;cout现有的商品:endl;if(p=NULL)cout没有任何商品数据endl;while(p!=NULL)cout商品名:go.namenext;在函数体中主要利用while循环遍历访问整个链表,p=p-next;语句主要功能是指向节点的指针不断下移,以
12、访问所有的节点。显示一件商品的所有信息使用的成员函数原型为:voidList:dispOneNode(nodetype*p);函数的主要功能是显示一件商品的所有信息,参数p为指向节点的指针,无返回值。函数通过参数接收指向节点的指针p,通过p访问其所指向的节点,并显示节点的所有信息(包括商品的基本信息,如商品名、价格等)。函数体的主要代码如下:voidList:dispOneNode(nodetype*p)if(p!=NULL)dispGoods(p);/显示一件商品的基本信息dispScokk(p);/显示一件商品的供货站代码dispTelephone(p);/显示一件商品的订货方式(3)修改
13、节点信息由于节点保存的信息较多,使用了嵌套的结构体保存数据,所以修改时,也需要按照相应的结构进行修改。可以修改商品的基本信息、商品的供货站代码和商品的订货方式。使用的成员函数原型如下:voideditGoods(nodetype*p);/编辑单个商品说明信息voideditScokk(nodetype*p);/编辑单个商品供货方式voideditTelephone(nodetype*p);/编辑单个商品订货方式(4)查找定位节点在进行节点的插入和编辑时,往往都需要按照指定的条件进行信息节点的查找。可以通过商品名或节点序号进行节点的查找定位。成员函数的原型如下所示:nodetype*intFin
14、dNode(inti);/通过查找序号返回节点的指针nodetype*strFindNode(charc);/通过查找商品名返回节点的指针intfindByName(charc);/通过查找商品名返回节点的序号其中,商品名查找节点,并返回节点指针使用较多,函数的主体代码如下所示。nodetype*List:strFindNode(charc)nodetype*p=head;intj=1;strcat(c,n);/从外部读入的字符串末尾都带了一个换行符/查找第i个节点并由p指向该节点while(p!=NULL&!(checkString(c,p-go.name)j+;p=p-next;retur
15、np;此函数主要通过p指针的移动,并比较p所指向的节点中的商品名与给定的查找商品名是否一致,如果相同则找到,否则,继续移动p指针指向下一个节点继续比较,直到p指向链表尾(p为NULL)。(5)删除节点删除节点操作是一个常用的操作。一般需要先找到要删除的节点,然后,将其从链表中删除。由于节点是使用malloc函数生成的动态变量,所以,应该使用delete系统函数将其删除。删除后还需要保存链表的连接性,即删除链表中的指定节点时,需要如图3-2所示的一些后继的处理步骤。123headNULL123headNULLps=p-nextp-next=s-nexts-next图3-2节点删除的处理步骤删除节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计 C+ 程序设计 课程 实习 课程设计 说明书 超市 商品信息 管理 系统 教学 提纲
限制150内