还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据结构》课程设计题目商店存储管理系统学生姓名徐玲指导教师秦飞学院管理科学与工程学院专业班级息082完成时间
2010.
06.10目录第一章课程设计目的2第二章课程设计内容和要求2第三章课程设计分析3第四章算法描述4第五章源代码8第六章运行结果分析13第七章结束语15第八章参考文献15第一章课程设计目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础通过实习巩固并提高实习者的C语言知识,并初步了解VisualC++的知识,提高其编程能力与专业水平第二章课程设计内容和要求
2.1课程设计内容建立一商店存货管理系统,要求每次出货时取进货时间最早且最接近保质期中止时间的货物分步实施
1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2.完成最低要求建立一个文件,包括5个种类的货物情况,能对商品信息进行扩充(追加),修改和删除以及简单的排序;
3.进一步要求扩充商品数量,以及完成系统查询功能有兴趣的同学可以自己扩充系统功能
2.2要求
1.界面友好,函数功能要划分好
2.总体设计应画一流程图
3.程序要加必要的注释
4.要提供程序测试方案
5.程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的
2.3运行环境该程序的运行环境为Windowsxp系统,MicrosoftVisualC++
6.0版本第三章课程设计分析
3.1需要定义一个结构体数组,其中name表示商品的名称,time表示商品的进货时间,year表示商品的生产日期,no表示商品的保质期
3.2利用冒泡法,对商品进行排序
3.3选择需要的功能,其中功能包括商品的最原始添加,商品的插入,删除,查找,将数据写入文件中,从文件中读出数据等操作
3.4选择输入0~9,10个数的其中一个数,进行相应的操作
3.5进行完所的操作之后,选择保存功能,将数据保存到文件中
3.6退出程序第四章算法(数据结构)描述
4.1先定义一个商品的结构体数组typedefstruct/*定义结构体数组*/{charname
[20];/*商品名称*/inttime;/*进货时间*/intyear;/*生产日期*/intno;/*保质期*/}goods;
4.2建立一个菜单函数,显示10个功能,供用户选择,进行人机对话
4.3设置一个排序的函数,voidSort_by_timegoodsgs[]intn利用冒泡法先对商品按进货的时间排序,对进货时间一样的货物,再按离保质期最近排序
4.4设置一个输入的函数,intInputgoodsgs[]intn这个函数是最初商品输入函数,当选择了这个功能后,如果是第一次运行这个程序,保存输入,那将在D盘产生一个名为“商品.doc”的文件,如果已经运行过了,并保存输入,那输入的商品信息将代替原有的信息,数据输入使用交互输入,进行人机对话,确定是否进行下一个数据的添加并且调用了上面的排序函数,对输入的数据进行排序
4.5设置一个显示的函数,voidDisplaygoodsgs[]intn显示上面输入的所有数据,或者是从文件中读取的数据
4.6设置一个插入的函数,intInsert_a_recordgoodsgs[]intn每次插入一组数据,如果要再插入,则再选择这个功能进行操作并且在插入的同时,已经排好序,把数据插入适合的位置
4.7设置一个查找删除的函数,intDelete_a_recordgoodsgs[]intn输入要查找的商品名称,如果不存在,则输出失败信息,如果存在,则用下一个信息代替原有信息的位置
4.8设置一个查找显示的函数,voidQuery_a_recordgoodsgs[]intn输入要查找的商品名称,如果不存在,则输出失败信息,如果存在,则显示信息
4.9设置一个写入文件的函数,voidWritetoTextgoodsgs[]intn设置文件指针,先判断文件是否能打开并且能进行写操作,不能则输出失败信息,能则循环写入数据,写完关闭文件
4.10设置一个读文件的函数,intAddfromTextgoodsgs[]intn设置文件指针,判断文件是否能打开而且能进行读操作,能则先读出总的数据量,接着循环读出数据,最后关闭文件
4.11进入最后一步,main函数判断选择的操作,根据用户选择的操作,利用switch语句进行相应的函数调用
4.12选择保存功能,对数据进行保存,然后选择结束程序退出功能,退出程序Sort_by_timegsn初始条件数据已经存在操作结果数据进行排序Inputgsn初始条件没有任何数据存在,或者要替换原文件中的所有数据操作结果数据进行输入Displaygsn初始条件数据已经存在操作结果数据显示Insert_a_recordgsn初始条件数据已经存在操作结果数据插入Delete_a_recordgsn初始条件数据已经存在操作结果数据删除Query_a_recordgsn初始条件数据已经存在操作结果数据统计WritetoTextgsn初始条件数据已经存在操作结果写入文件中AddfromTextgsn初始条件文件已经存在操作结果从文件中读出
4.13流程图第五章源代码#includestdio.h/*引用库函数*/#includestdlib.h#includectype.h#includestring.htypedefstruct/*定义结构体数组*/{charname
[20];/*商品名称*/inttime;/*进货时间*/intyear;/*生产日期*/intno;/*保质期*/}goods;goodsgs
[80];/*结构体数组变量*/intmenu_select/*菜单函数*/{charc;do{systemcls;/*运行前清屏*/printf\t\t****商品系统****\n;/*菜单选择*/printf\t\t|
1.输入数据|\n;printf\t\t|
2.显示数据|\n;printf\t\t|
3.插入数据|\n;printf\t\t|
4.删除数据|\n;printf\t\t|
5.查找数据|\n;printf\t\t|
6.统计并显示进货时间最早且最接近保质期中止时间的货物|\n;printf\t\t|
7.写入文件|\n;printf\t\t|
8.读文件|\n;printf\t\t|
9.对读入的文件进行排序|\n;printf\t\t|
0.退出|\n;printf\t\t*****************************************\n;printf\t\t\t请选择0-9:;c=getchar;/*读入选择*/}whilec0||c9;returnc-0;/*返回选择*/}voidSort_by_timegoodsgs[]intn/*按进货时间排序*/{intij*a*bc*p*qs*m*kdef;chart
[10];fori=0;in-1;i++/*冒泡法排序*/forj=0;jn-1-i;j++ifgs[j].timegs[j+1].time{a=gs[j+1].time;b=gs[j].time;c=*a;*a=*b;*b=c;strcpytgs[j+1].name;strcpygs[j+1].namegs[j].name;strcpygs[j].namet;p=gs[j+1].year;q=gs[j].year;s=*p;*p=*q;*q=s;m=gs[j+1].no;k=gs[j].no;d=*m;*m=*k;*k=d;}elseifgs[j].time==gs[j+1].time{p=gs[j].year;a=gs[j+1].year;b=gs[j].no;q=gs[j+1].no;e=*p+*b*10000;f=*a+*q*10000;ifef{a=gs[j+1].time;b=gs[j].time;c=*a;*a=*b;*b=c;strcpytgs[j+1].name;strcpygs[j+1].namegs[j].name;strcpygs[j].namet;p=gs[j+1].year;q=gs[j].year;s=*p;*p=*q;*q=s;m=gs[j+1].no;k=gs[j].no;d=*m;*m=*k;*k=d;}}}intInputgoodsgs[]intn/*输入若干条记录*/{inti=0;charsignx
[10];whilesign!=nsign!=N/*判断*/{printf\t\t\t商品名称:;/*交互输入*/scanf\t\t\t%sgs[n+i].name;printf\t\t\t进货时间例20070201:;scanf\t\t\t%dgs[n+i].time;printf\t\t\t生产日期例20070201:;scanf\t\t\t%dgs[n+i].year;printf\t\t\t保质期年:;scanf\t\t\t%dgs[n+i].no;getsx;/*清除多余的输入*/printf\t\t\t继续输入Y/N;scanf\t\t\t%csign;/*输入判断*/i++;}Sort_by_timegsn+i;/*调用排序函数*/returnn+i;}voidDisplaygoodsgs[]intn/*显示所有记录*/{inti;printf\t\t------------------------------------------------\n;/*格式头*/printf\t\t商品名称进货时间生产日期保质期年\n;printf\t\t------------------------------------------------\n;fori=1;in+1;i++/*循环输入*/{printf\t\t%-5s%d%d%d\ngs[i-1].namegs[i-1].timegs[i-1].yeargs[i-1].no;ifi1i%10==0/*每十个暂停*/{printf\t\t\t-----------------------------------\n;/*格式*/printf\t\t\t;systempause;printf\t\t\t-----------------------------------\n;}}printf\t\t\t;systempause;/*按任何键继续*/}intInsert_a_recordgoodsgs[]intn/*插入一条记录*/{charx
[10];/*清除多余输入所用*/printf\t\t\t商品名称:;/*交互输入*/scanf\t\t\t%sgs[n].name;printf\t\t\t进货时间:;scanf\t\t\t%dgs[n].time;printf\t\t\t生产日期:;scanf\t\t\t%dgs[n].year;printf\t\t\t保质期:;scanf\t\t\t%dgs[n].no;getsx;n++;Sort_by_timegsn;/*调用排序函数*/printf\t\t\t插入成功!\n;/*返回成功信息*/returnn;}intDelete_a_recordgoodsgs[]intn/*按商品名字查找,删除一条记录*/{chars
[20];inti=0j;printf\t\t\t商品名称:;scanf%ss;whilestrcmpgs[i].names!=0ini++;/*查找判断*/ifi==n{printf\t\t\t没找到!\n;/*返回失败信息*/returnn;}forj=i;jn-1;j++/*删除操作*/{strcpygs[j].namegs[j+1].name;gs[j].time=gs[j+1].time;gs[j].year=gs[j+1].year;gs[j].no=gs[j+1].no;}printf\t\t\t删除成功!\n;/*返回成功信息*/returnn-1;}voidQuery_a_recordgoodsgs[]intn/*查找并显示一个记录*/{chars
[20];inti=0;printf\t\t\t输入要查找的商品名称:;scanf\t\t\t%ss;whilestrcmpgs[i].names!=0ini++;/*查找判断*/ifi==n{printf\t\t\t没找到!\n;/*输入失败信息*/return;}printf\t\t\t进贷时间:%d\ngs[i].time;/*输出该商品信息*/printf\t\t\t生产日期:%d\ngs[i].year;printf\t\t\t保质期:%d\ngs[i].no;}voidWritetoTextgoodsgs[]intn/*将所有记录写入文件*/{inti=0;FILE*fp;/*定义文件指针*/iffp=fopend:\\商品.docwb==NULL/*打开文件*/{printf\t\t\tcanntopenthefile\n;systempause;return;}fprintffp%d\nn;/*循环写入数据*/whilein{fprintffp%-5s%d%d%d\ngs[i].namegs[i].timegs[i].yeargs[i].no;i++;}fclosefp;/*关闭文件*/printf\t\t\tSuccessed!\n;/*返回成功信息*/}intAddfromTextgoodsgs[]intn/*从文件中读入数据*/{inti=0num;FILE*fp;/*定义文件指针*/iffp=fopend:\\商品.docrb==NULL/*打开文件*/{printf\t\t\tcanntopenthefile\n;/*打开失败信息*/printf\t\t\t;systempause;returnn;}fscanffp%dnum;/*读入总记录量*/whileinum/*循环读入数据*/{fscanffp%s%d%d%dgs[n+i].namegs[n+i].timegs[n+i].yeargs[n+i].no;i++;}n+=num;fclosefp;/*关闭文件*/printf\t\t\tSuccessed!\n;printf\t\t\t;systempause;returnn;}voidmain/*主函数*/{intn=0;for;;{switchmenu_select/*选择判断*/{case1:printf\t\t\t输入最初商品\n;/*输入若干条记录*/n=Inputgsn;break;case2:printf\t\t\t显示所有商品\n;/*显示所有记录*/Displaygsn;break;case3:printf\t\t\t插入\n;n=Insert_a_recordgsn;/*插入*/printf\t\t\t;systempause;break;case4:printf\t\t\t删除\n;n=Delete_a_recordgsn;/*按商品名称查找,删除*/printf\t\t\t;systempause;break;case5:printf\t\t\t查找并显示\n;Query_a_recordgsn;/*查找并显示*/printf\t\t\t;systempause;break;case6:printf\t\t\t统计并显示进货时间最早且最接近保质期中止时间的货物\n;printf\t\t\t共有%d件商品.\nn;/*总共记录数*/printf\t\t\t进货时间最早且最接近保质期中止时间的货物:\n;printf\t\t\t商品名称r:%s\ngs
[0].name;printf\t\t\t进货时间:%d\ngs
[0].time;printf\t\t\t生产日期:%d\ngs
[0].year;printf\t\t\t保质期:%d\n\ngs
[0].no;printf\t\t\t;systempause;break;case7:printf\t\t\t写到文件中\n;WritetoTextgsn;/*循环写入数据*/printf\t\t\t;systempause;break;case8:printf\t\t\t文件中读数据\n;n=AddfromTextgsn;printf\t\t\t;/*文件中读数据*/break;case9:printf\t\t\t\n;Sort_by_timegsn;printf\t\t\t;/*对读入的文件进行排序*/break;case0:printf\t\t\t结束退出!\n;/*结束程序*/printf\t\t\t;systempause;exit0;}}}第六章运行结果分析
1.初始界面(从D盘读入已准备好的文件数据)
2.选择功能8并选择功能2,显示最初的数据
3.对读出的文件进行排序,选功能9,再选功能2,进行显示
4.选择功能3,进行插入操作,选择功能2,进行显示
5.选择功能4,进行删除操作,第一种情况为找不到要删除的商品数据接下去这个是另一种情况,即找到要删除的商品数据并按功能2,显示
6.选择功能5,第一种情况为找不到要查找的数据第二种为存在情况
7.选择功能
68.选择功能
79.选择功能0,退出程序第七章结束语转眼,为期两周的《数据结构》课程设计实习即将结束了在这次实习中,自己的C语言知识和数据结构知识得到了巩固,编程能力也有了一定的提高同时也学会了解决问题的方法总结起来,自己主要有以下几点体会
1.必须牢固掌握基础知识由于C语言是大一所学知识,有所遗忘,且未掌握好这学期所学的《数据结构》这门课,所以在实习之初感到棘手不知如何下手,但在后来的实习过程中自己通过看书和课外资料,并请教其他同学,慢慢地对C语言和数据结构知识有所熟悉这时才逐渐有了思路所以,这次实习之后,我告诫自己今后一定要牢固掌握好专业基础知识
2.必须培养严谨的科学态度自己在编程时经常因为一些类似于“少了分号”的小错误而导致错误,不够认真细致,这给自己带来了许多麻烦编程是一件十分严谨的事情,容不得马虎所以在今后自己一定要培养严谨的科学态度我想这不仅是对于程序设计,做任何事都应如此
3.这次课程设计也让我充分认识到《数据结构》这门课的重要性它给我们一个思想和大纲,让我们在编程时容易找到思路,不至于无章可循同时它也有广泛的实际应用总之,在这次实习中,自己的C语言以及数据结构知识得到提高,编程能力也得到了提高第八章参考文献1谭浩强C语言程序设计教程清华大学出版社2徐孝凯数据结构课程实验清华大学出版社3严蔚敏吴伟民数据结构(C语言版)清华大学出版社4秦锋袁志祥数据结构(C语言版)例题详解与课程设计指导中国科学技术大学出版社5秦锋数据结构(C语言版)中国科学技术大学出版社退出程序写入文件排序数据统计数据添加数据查找数据删除数据显示数据新数据重新选择功能读文件Main函数功能8功能1功能2功能3功能4功能5功能6功能9功能7功能0。