长江大学工程技术学院C语言课程设计实习报告小型仓库管理系统学生姓名:周伟学号:201060920序号:33专业班级:测控61001指导老师:贾晓艳报告日期:2011.07.10长江大学工程技术学院2010级C语言程序设计实验报告1第一部分课程设计的题目与要求1、问题的提出在主函数中读入原始数据文件的内容,保存在对应的结构体数组中,然后显示菜单,利用菜单调用函数,分别完成一下功能:2、功能要求(1)对仓库中库存物品信息实现查询和显示功能:①按物品名查询②查询库存数量不足的物品③显示全部信息。将满足查询条件的整条记录显示在屏幕上。(2)对物品库存信息实现排序功能:①按物品名排序②按物品的分类排序。将排序后的结果显示在屏幕上。(3)统计仓库整所以物品的总价,以及每种不同分类物品的总价。用C语言创建一个数据文件,用该文件来存放统计后的结果。(4)实现物品的出库。当要从出库中提取某种物品时,先查询该物品的库存数是否满足要求。若满足,则允许出库,此时要将物品的出库信息写在物品的出库文件中。并修改物品的库存信息。(5)实现物品库存信息的修改功能。先查询出要修改的记录,然后选择要修改的字段名,并输入新的字段信息。将新的字段信息写入文本文件中。第二部分课程设计题目功能1、系统功能模块框图设计长江大学工程技术学院2010级C语言程序设计实验报告22、数据结构说明基本类型:intn用来储存库存信息的条数。数组类型:chars1[200]用来储存无规律的字符串。结构体:struckSTORE用来储存物品库存信息。3、详细设计○1函数findshangpin(),函数的作用是按物品名查找物品。其中定义变量inta,i=1;chars2[20];a是循环变量,i是用作if的判断条件,字符数组char用于储存输入的字符串。○2函数buzu(),函数作用是按库存数不足查询。其中的变量有inta,i=1;a是循环变量,i是用作if的判断条件。○3函数paixu(),作用是按物品名排序。其中定义变量:ints=8,i,j,k;structSTOREtt;s是for循环的结束条件,i,j,k是循环变量,结构体tt用来保存物品的信息。○4函数danzongjia(),作用是计算单个物品的总价,其中定义变量:doubles[20];inti;chars2[200];s[2]用来保存总价,i是循环变量,s2用来保存无规律的字符串。○5函数fenzongjia(),作用是统计单个物品的总价。其中定义的变量:doublesum[4]={0,0,0,0};inti;chars2[200]={分类分类总价\n};structfen。主函数main()按物品名查询物品查询库存不足的物品按物品名排序单个物品总价分类物品总价物品出库显示全部信息信息修改保存功能菜单长江大学工程技术学院2010级C语言程序设计实验报告3实型数组sum[4]用来保存计算的总价,i是循环变量,字符数组s2用来保存无规律的字符串,结构体struct用来保存各种物品名。○6函数cuku(),作用是实现物品的出库。其中定义的变量:ints,a,i=1,x=0;chars2[20];其中s是储存物品的出库数量,i,x都是用作if的判断条件,字符数组s2是用来储存出库物品的物品名。○7函数quanbuxinxi(),作用是显示全部信息。其中定义的变量:inti是循环变量。○8函数baocun(),作用是保存修改后的信息,其中变量inti是循环变量。○9函数read(),作用是从文件中读取数据,并把数据赋给结构体structSTOREstore[20];其中变量inti是循环变量。○10函数main(),作用是作菜单并调用其他功能的函数。例如:voidfindshangpin(){……}voidbuzu(){……}voidpaixu(){……}voidfenpaixun(){……}voiddanzongjia(){……}voidfenzongjia(){……}voidcuku(){……}voidquanbuxinxi(){……}voidxiugai(){……}voidbaocun(){……}voidread(){……}voidmain(){……}{inta;read();while(1){printf(**********小型产库管理系统**********\n);printf(..........1.按物品名查询物品\n);printf(..........2.查询库存数量不足的物品\n);printf(..........3.按物品名排序\n);长江大学工程技术学院2010级C语言程序设计实验报告4printf(..........4.按物品名的分类排序\n);printf(..........5.单个物品总价\n);printf(..........6.分类物品总价\n);printf(..........7.物品出库\n);printf(..........8.显示全部信息\n);printf(..........9.信息修改\n);printf(..........10.保存\n);printf(..........11.退出\n);printf(请选择\n);scanf(%d,&a);switch(a){case1:findshangpin();break;case2:buzu();break;case3:paixu();break;case4:fenpaixun();break;case5:danzongjia();break;case6:fenzongjia();break;case7:cuku();break;case8:quanbuxinxi();break;case9:xiugai();break;case10:baocun();break;case11:exit(0);}4、调试与测试○1程序运行开始:长江大学工程技术学院2010级C语言程序设计实验报告5○2按物品名查询物品,由键盘输入数字1,按下回车键,得出所有物品的全部信息,例如:○3调整输入法后输入所要查找的物品例如:“作业本”,输入后查找出作业本的全部信息,例如:长江大学工程技术学院2010级C语言程序设计实验报告6如果没有所要查找的物品则输出“NOFOUND”,例如:○4查询库存不足的物品,题目要求选出库存数量小于30的物品则输入2后,在所有物品中找出库存数少于30的物品所有信息,程序运行结果为:运行后找出“红叶台灯”,“江明饼干”库存不足30.○5按物品名分类排序,比较物品名的大小,由小到大排序,输入3,运行结果为:○6统计单个物品总价,单价乘以库存数得出的总价,运行后将所有物品的长江大学工程技术学院2010级C语言程序设计实验报告7信息输出来,输入4,得出结果,例如:○7统计分类物品总价,按照生活用品,学习用品,食品,饮料进行分类,并统计出个大类物品的总价后输出,输入6,运行出结果,例如:○8物品出库,选择所要出库的物品及数量,如果所要出库的数量小于库存数,输出所选的物品及数量,并修改库存数,输入物品名“统一矿泉水”,和数量30后得出结果,例如:长江大学工程技术学院2010级C语言程序设计实验报告8如果出库数量不满足则输出“库存量不足,不能出库”,输入出库数10000,得出结果,例如:○9显示全部信息,将出库后的物品信息全部显示出来,输入8,显示出信息,例如:○10保存,保存运行后的所有信息到原文本文件中,程序运行全部结束。第三部分课程设计总结C语言课程设计是一门比较接近实际的课程,刚开始接触这门课程时,总觉得这太复杂了,和我们平时学习的编程题有太大的不同,因为它的综合性太强了。由于平时学习的知识太散乱,不容易整合到一起,哪怕是平时学习时一个知识点没搞懂,都很难把程序继续编下去,刚开始的上课,完全无从下手,所以只好再把课本看一遍,经过几次课,渐渐感觉到整个程序不就是多个小程序组合在一起。之后我就将程序分成查找、分类、排序、修改,这几大类。虽然把程序分解后,还是遇到很多麻烦,特别是要写“物品出库”这个函数时,很是头疼,因为这个程序既要考虑到物品名,又要考虑出库数,还要考虑出库数是否满足库存数,程序总是出现问题,不过后来接触多了,不懂得去问老师、同学,了解的多了,渐渐地也就懂了不少,尤其是把整个程序写完后,运行处结果长江大学工程技术学院2010级C语言程序设计实验报告9了,就感觉到付出这么多也算值了。虽然程序设计完成了,但是还是有一些不足之处,例如:程序编得太复杂,缺少一些警告语句等。不过在这半个月的学习中,确实学到了很多东西,我们考虑事情不能太过简单,太过马虎,一定要思维严谨,当然相互交流,相互合作也是非常重要的。总之,这次课程设计过得挺充实。附录程序清单#includestdio.h#includestdlib.h#includestring.hstructSTORE{charshangpin[50];charfenlei[50];floatdanjia;intkucun;}store[20];intn=8;chars1[200];structSTORE1{charshangpin[30];floatdanjia;intkucun;}STORE1[20];voidfindshangpin(){inta,i=1;chars2[20];printf(1.按物品名查询物品\n);printf(输入要查找的物品:\n);fflush(stdin);……………………….清除缓冲区scanf(%s,s2);for(a=0;an;a++)if(strcmp(s2,store[a].shangpin)==0)………………..判断查找物品是否存在{printf(%s%s单价%.2f库存%d\n,store[a].shangpin,store[a].fenlei,store[a].danjia,store[a].kucun);i=0;}if(i){printf(NOFOUND);}}voidbuzu()//{inta,i=1;printf(2.查询库存数量不足的物品\n);for(a=0;an;a++)if(store[a].kucun=30)………………….判断库存数是否小于30长江大学工程技术学院2010级C语言程序设计实验报告10{printf(%s%s单价%.2f库存%d\n,store[a].shangpin,store[a].fenlei,store[a].danjia,store[a].kucun);i=0;}if(i){printf(NOFOUND);}}voidpaixu(){ints=8,i,j,k;structSTOREtt;printf(3.按物品名排序\n);for(i=0;is-1;i++){k=i;for(j=i+1;js;j++)if(strcmp(store[k].shangpin,store[j].shangpin)0)………比较字符串k=j;if(k!=i){tt=store[i];store[i]=store[k];store[k]=tt;}}puts(s1);for(i=0;in;i++)printf(%s%s%.2f%d\n,store[i].shangpin,store[i].fenlei,store[i].danjia,store[i].kucun);}voidfenpaixun(){printf(4.按物品名的分类排序\n);}voiddanzongjia(){doubles[20];inti;chars2[200]={商品名分类单价库存总价\n};printf(5.单个物品总价\n);for(i=0;in;i++)s[i]=store[i].danjia*store[i].kucun;FILE*fp;…………………定义指针变量用来储存文件地址fp=fopen(CK0133_store02.txt,w);……….打开文件并将文件的地址赋给fpif(fp==