《长江大学工程技术学院C语言课程设计实习报告(共17页).doc》由会员分享,可在线阅读,更多相关《长江大学工程技术学院C语言课程设计实习报告(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上长江大学工程技术学院C语言课程设计实习报告 小型仓库管理系统学生姓名:周伟 学号:序号:33专业班级:测控61001指导老师:贾晓艳报告日期:2011.07.10第一部分 课程设计的题目与要求1、 问题的提出在主函数中读入原始数据文件的内容,保存在对应的结构体数组中,然后显示菜单,利用菜单调用函数,分别完成一下功能:2、 功能要求 (1) 对仓库中库存物品信息实现查询和显示功能: 按物品名查询 查询库存数量不足的物品 显示全部信息。将满足查询条件的整条记录显示在屏幕上。(2) 对物品库存信息实现排序功能:按物品名排序 按物品的分类排序。将排序后的结果显示在屏幕上。(3
2、) 统计仓库整所以物品的总价,以及每种不同分类物品的总价。用C语言创建一个数据文件,用该文件来存放统计后的结果。(4) 实现物品的出库。当要从出库中提取某种物品时,先查询该物品的库存数是否满足要求。若满足,则允许出库,此时要将物品的出库信息写在物品的出库文件中。并修改物品的库存信息。(5) 实现物品库存信息的修改功能。先查询出要修改的记录,然后选择要修改的字段名,并输入新的字段信息。将新的字段信息写入文本文件中。第二部分 课程设计题目功能1、 系统功能模块框图设计主函数 main()按物品名查询物品查询库存不足的物品按物品名排序单个物品总价分类物品总价物品出库显示全部信息信息修改保存功能菜单2
3、、 数据结构说明 基本类型:int n 用来储存库存信息的条数。 数组类型:char s1200 用来储存无规律的字符串。 结构体:struck STORE 用来储存物品库存信息。3、 详细设计 函数findshangpin(),函数的作用是按物品名查找物品。其中定义变量int a,i=1; char s220;a是循环变量,i是用作if的判断条件,字符数组char 用于储存输入的字符串。 函数 buzu(),函数作用是按库存数不足查询。其中的变量有int a,i=1;a是循环变量,i是用作if的判断条件。 函数 paixu(),作用是按物品名排序。其中定义变量:int s=8,i,j,k;s
4、truct STORE tt;s是for循环的结束条件,i,j,k是循环变量,结构体tt用来保存物品的信息。 函数 danzongjia(),作用是计算单个物品的总价,其中定义变量:double s20;int i;char s2200;s2用来保存总价,i是循环变量,s2用来保存无规律的字符串。 函数 fenzongjia(),作用是统计单个物品的总价。其中定义的变量:double sum4=0,0,0,0;int i; char s2200=分类 分类总价n; struct fen。实型数组sum4用来保存计算的总价,i是循环变量,字符数组s2用来保存无规律的字符串,结构体struct用来
5、保存各种物品名。 函数 cuku(),作用是实现物品的出库。其中定义的变量:int s,a,i=1,x=0; char s220;其中s是储存物品的出库数量,i,x都是用作if的判断条件,字符数组s2是用来储存出库物品的物品名。 函数 quanbuxinxi(),作用是显示全部信息。其中定义的变量:int i是循环变量。 函数 baocun(),作用是保存修改后的信息,其中变量int i是循环变量。 函数 read(),作用是从文件中读取数据,并把数据赋给结构体struct STORE store20;其中变量int i是循环变量。 函数 main(),作用是作菜单并调用其他功能的函数。 例如
6、:void findshangpin() void buzu() void paixu() void fenpaixun() void danzongjia() void fenzongjia() void cuku() void quanbuxinxi() void xiugai() void baocun() void read() void main() int a; read();while(1) printf (*小型产库管理系统*n); printf (.1.按物品名查询物品n); printf (.2.查询库存数量不足的物品n); printf (.3.按物品名排序n); pri
7、ntf (.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)case 1:findshangpin();break;case 2:buzu();break;case 3:paixu();break;case 4:fenpaixun();break;case 5:danz
8、ongjia();break;case 6:fenzongjia();break;case 7:cuku();break;case 8:quanbuxinxi();break;case 9: xiugai();break;case 10: baocun();break;case 11:exit(0);4、调试与测试 程序运行开始: 按物品名查询物品,由键盘输入数字1,按下回车键,得出所有物品的全部信息,例如: 调整输入法后输入所要查找的物品例如:“作业本”,输入后查找出作业本的全部信息,例如:如果没有所要查找的物品则输出“NO FOUND”,例如: 查询库存不足的物品,题目要求选出库存数量小于
9、30的物品则输入2后,在所有物品中找出库存数少于30的物品所有信息,程序运行结果为:运行后找出“红叶台灯”,“江明饼干”库存不足30. 按物品名分类排序,比较物品名的大小,由小到大排序,输入3,运行结果为: 统计单个物品总价,单价乘以库存数得出的总价,运行后将所有物品的信息输出来,输入4,得出结果,例如:统计分类物品总价,按照生活用品,学习用品,食品,饮料进行分类,并统计出个大类物品的总价后输出,输入6,运行出结果,例如: 物品出库,选择所要出库的物品及数量,如果所要出库的数量小于库存数,输出所选的物品及数量,并修改库存数,输入物品名“统一矿泉水”,和数量30后得出结果,例如: 如果出库数量不
10、满足则输出“库存量不足,不能出库”,输入出库数10000,得出结果,例如: 显示全部信息,将出库后的物品信息全部显示出来,输入8,显示出信息,例如: 保存,保存运行后的所有信息到原文本文件中,程序运行全部结束。第三部分 课程设计总结 C语言课程设计是一门比较接近实际的课程,刚开始接触这门课程时,总觉得这太复杂了,和我们平时学习的编程题有太大的不同,因为它的综合性太强了。由于平时学习的知识太散乱,不容易整合到一起,哪怕是平时学习时一个知识点没搞懂,都很难把程序继续编下去,刚开始的上课,完全无从下手,所以只好再把课本看一遍,经过几次课,渐渐感觉到整个程序不就是多个小程序组合在一起。之后我就将程序分
11、成查找、分类、排序、修改,这几大类。虽然把程序分解后,还是遇到很多麻烦,特别是要写“物品出库”这个函数时,很是头疼,因为这个程序既要考虑到物品名,又要考虑出库数,还要考虑出库数是否满足库存数,程序总是出现问题,不过后来接触多了,不懂得去问老师、同学,了解的多了,渐渐地也就懂了不少,尤其是把整个程序写完后,运行处结果了,就感觉到付出这么多也算值了。虽然程序设计完成了,但是还是有一些不足之处,例如:程序编得太复杂,缺少一些警告语句等。不过在这半个月的学习中,确实学到了很多东西,我们考虑事情不能太过简单,太过马虎,一定要思维严谨,当然相互交流,相互合作也是非常重要的。总之,这次课程设计过得挺充实。附
12、录 程序清单#include#include#includestruct STOREchar shangpin50;char fenlei50;float danjia;int kucun ;store20;int n=8;char s1200;struct STORE1char shangpin30; float danjia; int kucun;STORE120;void findshangpin() int a,i=1; char s220; printf(1.按物品名查询物品n); printf (输入要查找的物品:n); fflush(stdin);.清除缓冲区 scanf(%s,
13、s2); for(a=0;an;a+) if(strcmp(s2,storea.shangpin)=0).判断查找物品是否存在 printf (%s %s 单价%.2f 库存%d n,storea.shangpin, storea.fenlei,storea.danjia,storea.kucun);i=0; if(i) printf(NO FOUND);void buzu()/int a,i=1; printf(2.查询库存数量不足的物品n); for(a=0;an;a+) if(storea.kucun=30).判断库存数是否小于30 printf (%s %s 单价%.2f 库存%d n
14、,storea.shangpin, storea.fenlei,storea.danjia,storea.kucun);i=0; if(i) printf(NO FOUND);void paixu()int s=8,i,j,k;struct STORE tt; printf(3.按物品名排序n); for(i=0;is-1;i+) k=i;for(j=i+1;j0)比较字符串k=j;if(k!=i)tt=storei; storei=storek; storek=tt;puts(s1); for(i=0;in;i+) printf(%s %s %.2f %dn,storei.shangpin,
15、 storei.fenlei,storei.danjia,storei.kucun );void fenpaixun() printf(4.按物品名的分类排序n);void danzongjia() double s20;int i;char s2200=商品名 分类 单价 库存 总价n; printf(5.单个物品总价n);for(i=0;in;i+)si=storei.danjia*storei.kucun; FILE *fp;定义指针变量用来储存文件地址 fp=fopen(CK0133_store02.txt,w);.打开文件并将文件的地址赋给fp if(fp=NULL).判断文件中要找
16、的物品是否存在 printf(文件打开失败n); exit(0); fputs(s2,fp); for(i=0;in;i+) fprintf(fp,%s %s %.2f %d %.2lfn,storei.shangpin ,storei.fenlei,storei.danjia,storei.kucun,si); fclose(fp);关闭文件puts(s2);.输出函数 for(i=0;in;i+) printf(%s %s %.2f %d %.2lfn,storei.shangpin ,storei.fenlei,storei.danjia,storei.kucun,si);void fe
17、nzongjia()double sum4=0,0,0,0; int i;char s2200=分类 分类总价n; struct fen char ming10;m4=饮料,食品,学习用品,生活用品; printf (6.分类物品总价n); for(i=0;in;i+) if(strcmp(storei.fenlei,饮料)=0) sum0=sum0+storei.danjia*storei.kucun; if(strcmp(storei.fenlei,食品)=0) sum1=sum1+storei.danjia*storei.kucun; if(strcmp(storei.fenlei,学习
18、用品)=0) sum2=sum2+storei.danjia*storei.kucun; if(strcmp(storei.fenlei,生活用品)=0) sum3=sum3+storei.danjia*storei.kucun; FILE *fp; fp=fopen(CK0133_store03.txt,w); if(fp=NULL) .判断文件中要找的物品是否存在 printf(文件打开失败n); exit(0); fputs(s2,fp); for(i=0;i4;i+) fprintf(fp,%s %.2lfn,mi.ming,sumi); fclose(fp); puts(s2); f
19、or(i=0;i4;i+) printf(%s %.2lfn,mi.ming,sumi);void cuku() printf (7.物品出库n);int s,a,i=1,x=0;char s220; printf(请输入所需的物品名:); fflush(stdin);.清空缓冲区 gets(s2); for(a=0;a=s) printf(允许出库n);storea.kucun=storea.kucun-s;printf(%s出库后信息:n,s2); puts(s1); printf(%s %s %.2f %dn,storea.shangpin ,storea.fenlei,storea.d
20、anjia,storea.kucun );x=1;将商品的详细详细输出来elseprintf(库存量不足,不能出库n); i=0; break; if(i) printf(没有此种商品n); if(x)FILE *fp,*fp1;定义指针变量 fp=fopen(CK0133_out.txt,a); if(fp=NULL) .判断文件中要找的物品是否存在 printf(文件打开失败n); exit(0); fprintf(fp,%s %.2lf %dn,s2,storea.danjia,s); fclose(fp); fp1=fopen(CK0133_store.txt,w); if(fp=NU
21、LL) printf(文件打开失败n); exit(0); fputs(s1,fp1); for(i=0;in;i+) fprintf(fp1,%s %s %.2f %dn,storei.shangpin,storei.fenlei,storei.danjia,storei.kucun); fclose(fp1);void quanbuxinxi()int i; printf (8.显示全部信息n); puts(s1); for(i=0;in;i+) printf(%s %s %.2f %dn,storei.shangpin ,storei.fenlei,storei.danjia,store
22、i.kucun );void xiugai() printf (9.信息修改n);void baocun() int i; printf (10.保存n); FILE *fp; fp=fopen(CK0133_store.txt,w); if(fp=NULL)printf(文件打开失败n); exit(0); fputs(s1,fp); for(i=0;in;i+) fprintf(fp,%s %s %.2f %dn,storei.shangpin ,storei.fenlei ,storei.danjia ,storei.kucun ); fclose(fp);void read()/ in
23、t i; FILE *fp; fp=fopen(CK0133_store.txt,r); if(fp=NULL)printf(文件打开失败n); exit(0); fgets(s1,180,fp); for(i=0;in;i+) fscanf(fp,%s%s%f%d,storei.shangpin,storei.fenlei, &storei.danjia,&storei.kucun); printf(从文件读出的结果为:n); puts(s1); for(i=0;in;i+) printf(%s %s %.2f %dn, storei.shangpin ,storei.fenlei, sto
24、rei.danjia,storei.kucun); fclose(fp);void save()int i; FILE *fp; fp=fopen(CK0133_store.txt,w); if(fp=NULL)printf(文件打开失败n); exit(0); fputs(s1,fp); for(i=0;in;i+) fprintf(fp,%s %s %.2f %dn, storei.shangpin,storei.fenlei, storei.danjia,storei.kucun); fclose(fp);void main() int a; read();while(1) printf
25、 (*小型产库管理系统*n); printf (.1.按物品名查询物品n); printf (.2.查询库存数量不足的物品n); printf (.3.按物品名排序n); printf (.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)case 1:findshangpin();break;case 2:buzu();break;case 3:paixu();break;case 4:fenpaixun();break;case 5:danzongjia();break;case 6:fenzongjia();break;case 7:cuku();break;case 8:quanbuxinxi();break;case 9: xiugai();break;case 10: baocun();break;case 11:exit(0);指导教师评语:报告成绩:指导教师签名: 年 月 日专心-专注-专业
限制150内