南京工程学院课程设计说明书(论文)题目商品库存管理系统课程名称高级语言程序设计(C)院(系、部、中心)通信工程专业多媒体通信班级媒通111学生姓名张瑜学号208110515设计地点信息楼C216指导教师袁璟设计起止时间:2012年3月5日至2012年3月9日成绩目录1.课程设计题目................................................................................................................................12.软件功能描述................................................................................................................................13.软件总体设计................................................................................................................................23.1数据结构描述与定义..........................................................................................................53.2模块设计.............................................................................................................................64.测试结果与分析............................................................................................................................75.课程设计总结..............................................................................................................................12附录:源程序清单............................................................................................................................131.课程设计题目商品库存管理系统要求:设计数据结构实现商品的入库,出库,查询等功能,读/写文件功能(1,整个系统均用C语言实现;(2,可以利用数组、指针、链表来实现数据结构设计;(3,管理系统具有输入、显示、查询、删除、排序、插入、保存、读取等基本功能;(4,系统的各个功能模块都用函数的形式来表示;(5,可以将信息保存在文件中;(6,可以将信息从文件中读取出来。2.软件功能描述商品库存管理系统软件为人们提供了一个对商品价格信息了解,对商品的录入录出功能的使用提供了一个很好的平台。并给人们友好的操作界面,功能需求描述如下:1、提供系统主控平台:人们进入系统主控平台,界面中只显示其含有的功能供人们选择。当顾客在系统的提示下输入选项代码时,系统会调用相应的子程序供人们选择的功能。因此,系统主控平台应对系统提供的功能用列表的方式清晰的给人们呈现,并能正确的接受顾客的输入。2、创建商品信息文件:人们根据提示输入商品编号、名称、数量、保质期、生产地、供货商。可一次性输入多条商品信息记录。系统将商品信息记录存储在系统磁盘的文件中,以便进行管理和查找。3、添加商品信息:可在原有商品信息文件的基础上增加新的商品信息记录,并继续保存在磁盘中。在增加新信息记录的过程中,系统同样会提示人们相应地填入商品的编号、名称、数量、保质期、生产地、供货商。4、删除商品信息:根据人们输入要进行删除操作的商品的编号,如果在文件中有该商品的信息记录存在,则将提示人们是否确认将其删除,若确认,则将该编号所对应的名称等各种信息在对应文件中加以删除。如果该商品不存在,则将显示“该商品不存在!按任意键退出”。5、修改商品信息:提示人们输入要进行修改操作的商品编号,如果在文件中有该商品的信息记录存在,则将提示人们输入该编号的对应的商品编号、名称、数量、报质期、生产地、提供商等需要修改的选项,并将修改结果存储于文件。6、查询商品信息:提示人们输入要查询的商品信息的编号,如果在磁盘文件中有对应商品信息记录,则将查询的商品的信息逐项列出。查询完毕后可按任意键返回主键面。7、显示商品信息:当人们选择了显示商品信息该选项后,系统会自动进入一个界面,一个将之前存储在这个文件中的所以商品的各项信息都逐个陈列出来的界面。8、排序全部信息:当人们选择了排序全部信息该选项后,系统会自动进入一个界面,这个界面中的全部商品信息记录都按照编号排列(从小到大),以便人们能更直观的浏览到全部的商品信息。3.软件总体设计1、系统模块结构图-----系统模块结构图-----2、模块流程图-----流程图-----商品库存管理创建商品信息添加商品信息删除商品信息修改商品信息查询商品信息显示商品信息排序全部信息insert函数delet函数Modify函数find函数print函数sort函数开始输入选项判断选项创建新的商品信息输入各项信息保存结束结束对已有文件进行操作输入操作选项退出系统排序信息显示全部信息查询信息修改信息删除信息添加信息输出数据结束3、程序中各项功能具体定义:Elemsn*creatlink(void)创建链表信息voidsavelink(Elemsn*h)保存链表信息Elemsn*readlink(void)读出已存文件信息Elemsn*insert(Elemsn*head)添加信息Elemsn*delet(Elemsn*p0)删除信息Elemsn*modify(Elemsn*h)修改信息voidfind(Elemsn*h)查询信息voidprint(Elemsn*p)显示全部信息Elemsn*sort(Elemsn*head)排序信息4、程序中各项功能描述:一:头文件,变量定义,函数的声明,定义结构体定义结构体typedefstructpro为结构体命名Elemsn对系统所使用的变量进行定义,对函数进行声明二:商品库存管理系统主界面设计声明函数voidmain(),对整个系统进行选择使用说明三:创建商品库存信息声明函数creatlink(),用Elemsn*creatlink(void)创建链表信息四:商品库存信息的添加声明voidinsert()插入商品信息,先通过判断该商品是否存在,若不存在则继续输入,若是存在则跳出,重新循环五:保存信息voidsavelink()用于保存链表信息六:商品库存信息的删除声明voiddelet()实现商品信息删除,通过编号对比确定要删除的信息,然后用后一个替换掉。七:商品库存信息的修改声明voidmodify()为商品信息修改函数,通过switch(n)设定所要修改的项目八:商品信息的查找声明voidfind()为查找函数,通过switch(item)设定用编号查找九:显示全部商品信息通过voidprint()函数输出商品信息十:商品信息的排序声明voidsort()将录入商品的编号按升序排列,用的是“冒泡排序法”实现排序3.1数据结构描述与定义1、测量结构体变量的大小#defineNsizeof(structpro)2、商品库存信息数据结构用于存放每个商品的编号、名称、数量、保质期、提供商和生产地各方面的信息。typedefstructpro{charnumber[20];charname[20];charamount[20];chardeadline[20];charsupply[20];charadd[20];structpro*next;}Elemsn;//为结构体命名//用结构体定义商品信息。由于编号、名称、价格、数量等是用于描述一个有机整体—商品,为了表明这些字段不是孤立的,而是共同描述一个完整的事物,因此用结构体这种形式来体现。3.2模块设计1、模块描述对若干商品价格,名称,生产日期等记录进行创建商品信息文件、增加商品信息、删除商品信息、修改商品信息、查询商品信息、显示商品信息和排序全部信息几项功能管理。对文件有修改的操作,会将操作结果保存至文件,对于需要查看结果的操作,文件中的操作结果将会显示于屏幕上。2、模块设计总体框架图:商品库存管理系统1.添加商品信息2删除商品信息3修改商品信息4查询商品信息5.显示商品信息6排序全部商品信息3、系统模块流程图-----系统模块结构图-----4.测试结果与分析执行效果如下:1、主界面:2、输入1后编辑的商品信息(创建新文件):商品库存管理创建商品信息添加商品信息删除商品信息修改商品信息查询商品信息显示商品信息排序全部信息3、保存文件后,进入商品库存管理系统:4、执行1添加功能:5、执行2删除功能:6、执行3修改功能:7、执行4查询功能:8、执行5显示功能:9、执行6排序功能:5.课程设计总结经过一个礼拜的努力,终于,一个比较完整的小型商品库存管理系统就创建完毕了。我们组创建的商品库存管理,系统能实现商品信息的添加,删除,修改,查询,显示,排序等简单的基本功能。虽然这个课程设计是从寒假就开始准备了,但是说实话,在没有人能商量的情况下,我对这个课程设计的题目还是一头雾水的,虽然有上网查找资料并且问了家里有从事编程工作的亲戚,但是,我想说请原谅我的迟钝,因为我还是对课程设计无从下手。来了学校后,因为开学的第三周是课程设计,我特地去问了学姐有关课程设计的信息,并去图书馆查了大量资料。可能是由于资料的繁多重复吧,我没办法从里面理出头绪,所以我让组长给我整理了资料,十分感谢我们组的组长,他给我整理的资料很简练,在后面几天的编程中,我有不懂并且解决不了的程序问题,他都很耐心的帮我解答,调试。从这次的课程设计,从组长那里,我想我学到了很多,从第一天的无从下手到最后检验是能运行简单的功能操作,虽然程序还不是很完善,但是我还是感到很开心。老师检验的时候,问了我这样一个问题,她问:你for循环体在哪里?好吧,我突然感觉很糟糕,因为我只看到一个分号,下面的printf并不是循环体,可是我不知道该怎么说,我想不起来那个叫什么,我那个程序里的for循环只是起到一个将信息全部读完的作用。是的,很糟糕,真是太糟糕了。好吧,我承认,我的基本功真的不扎实。经过这次的课程设计,我觉得做一个系统真的需要很好的逻辑能力,并且你的基本功要扎实,不然大小错误会不断。还有我发现当你只看不做的时候,觉得什么都不会,当你去尝试了去讨论了去做出结果了,可能结果不是很如人意,但是你会收获很多很多。我很幸运我能有这样一次机会,对老师来说可能做的很糟,但是对我来说已经是个很大的突破了,因为我动手做了,动脑想了,还去讨论了,可以说是没什么遗憾了吧,唯一感到很遗憾的是一周的时间真的是太少了。我想在以后在我学习了更多之后,我的程序会更好,到时候我希望自己能独立写出一个能运行的系统程序。附录:源程序清单#includestdio.h#includestdlib.h#includestring.h#includeconio.h#defineNsizeof(structpro)//测结构体变量的大小//typedefstructpro{charnumber[20];charname[20];charamount[20];chardeadline[20];charsupply[20];charadd