长江大学工程技术学院C语言课程设计实习报告.docx
- 文档编号:27014378
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:21
- 大小:219.61KB
长江大学工程技术学院C语言课程设计实习报告.docx
《长江大学工程技术学院C语言课程设计实习报告.docx》由会员分享,可在线阅读,更多相关《长江大学工程技术学院C语言课程设计实习报告.docx(21页珍藏版)》请在冰豆网上搜索。
长江大学工程技术学院C语言课程设计实习报告
长江大学工程技术学院C语言课程设计实习报告
小型仓库管理系统
学生姓名:
周伟学号:
序号:
33
专业班级:
测控61001
指导老师:
贾晓艳
报告日期:
2011.07.10
第一部分课程设计的题目与要求
1、问题的提出
在主函数中读入原始数据文件的内容,保存在对应的结构体数组中,然后显示菜单,利用菜单调用函数,分别完成一下功能:
2、功能要求
(1)对仓库中库存物品信息实现查询和显示功能:
按物品名查询
查询库存数量不足的物品
显示全部信息。
将满足查询条件的整条记录显示在屏幕上。
(2)对物品库存信息实现排序功能:
按物品名排序
按物品的分类排序。
将排序后的结果显示在屏幕上。
(3)统计仓库整所以物品的总价,以及每种不同分类物品的总价。
用C语言创建一个数据文件,用该文件来存放统计后的结果。
(4)实现物品的出库。
当要从出库中提取某种物品时,先查询该物品的库存数是否满足要求。
若满足,则允许出库,此时要将物品的出库信息写在物品的出库文件中。
并修改物品的库存信息。
(5)实现物品库存信息的修改功能。
先查询出要修改的记录,然后选择要修改的字段名,并输入新的字段信息。
将新的字段信息写入文本文件中。
第二部分课程设计题目功能
1、系统功能模块框图设计
2、数据结构说明
基本类型:
intn用来储存库存信息的条数。
数组类型:
chars1[200]用来储存无规律的字符串。
结构体:
struckSTORE用来储存物品库存信息。
3、详细设计
函数findshangpin(),函数的作用是按物品名查找物品。
其中定义变量inta,i=1;chars2[20];a是循环变量,i是用作if的判断条件,字符数组char用于储存输入的字符串。
函数buzu(),函数作用是按库存数不足查询。
其中的变量有inta,i=1;a是循环变量,i是用作if的判断条件。
函数paixu(),作用是按物品名排序。
其中定义变量:
ints=8,i,j,k;structSTOREtt;s是for循环的结束条件,i,j,k是循环变量,结构体tt用来保存物品的信息。
函数danzongjia(),作用是计算单个物品的总价,其中定义变量:
doubles[20];inti;chars2[200];s[2]用来保存总价,i是循环变量,s2用来保存无规律的字符串。
函数fenzongjia(),作用是统计单个物品的总价。
其中定义的变量:
doublesum[4]={0,0,0,0};inti;chars2[200]={"分类分类总价\n"};structfen。
实型数组sum[4]用来保存计算的总价,i是循环变量,字符数组s2用来保存无规律的字符串,结构体struct用来保存各种物品名。
函数cuku(),作用是实现物品的出库。
其中定义的变量:
ints,a,i=1,x=0;chars2[20];其中s是储存物品的出库数量,i,x都是用作if的判断条件,字符数组s2是用来储存出库物品的物品名。
函数quanbuxinxi(),作用是显示全部信息。
其中定义的变量:
inti是循环变量。
函数baocun(),作用是保存修改后的信息,其中变量inti是循环变量。
函数read(),作用是从文件中读取数据,并把数据赋给结构体structSTOREstore[20];其中变量inti是循环变量。
函数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");
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)
{
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,按下回车键,得出所有物品的全部信息,例如:
调整输入法后输入所要查找的物品例如:
“作业本”,输入后查找出作业本的全部信息,例如:
如果没有所要查找的物品则输出“NOFOUND”,例如:
查询库存不足的物品,题目要求选出库存数量小于30的物品则输入2后,在所有物品中找出库存数少于30的物品所有信息,程序运行结果为:
运行后找出“红叶台灯”,“江明饼干”库存不足30.
按物品名分类排序,比较物品名的大小,由小到大排序,输入3,运行结果为:
统计单个物品总价,单价乘以库存数得出的总价,运行后将所有物品的信息输出来,输入4,得出结果,例如:
统计分类物品总价,按照生活用品,学习用品,食品,饮料进行分类,并统计出个大类物品的总价后输出,输入6,运行出结果,例如:
物品出库,选择所要出库的物品及数量,如果所要出库的数量小于库存数,输出所选的物品及数量,并修改库存数,输入物品名“统一矿泉水”,和数量30后得出结果,例如:
如果出库数量不满足则输出“库存量不足,不能出库”,输入出库数10000,得出结果,例如:
显示全部信息,将出库后的物品信息全部显示出来,输入8,显示出信息,例如:
保存,保存运行后的所有信息到原文本文件中,程序运行全部结束。
第三部分课程设计总结
C语言课程设计是一门比较接近实际的课程,刚开始接触这门课程时,总觉得这太复杂了,和我们平时学习的编程题有太大的不同,因为它的综合性太强了。
由于平时学习的知识太散乱,不容易整合到一起,哪怕是平时学习时一个知识点没搞懂,都很难把程序继续编下去,刚开始的上课,完全无从下手,所以只好再把课本看一遍,经过几次课,渐渐感觉到整个程序不就是多个小程序组合在一起。
之后我就将程序分成查找、分类、排序、修改,这几大类。
虽然把程序分解后,还是遇到很多麻烦,特别是要写“物品出库”这个函数时,很是头疼,因为这个程序既要考虑到物品名,又要考虑出库数,还要考虑出库数是否满足库存数,程序总是出现问题,不过后来接触多了,不懂得去问老师、同学,了解的多了,渐渐地也就懂了不少,尤其是把整个程序写完后,运行处结果了,就感觉到付出这么多也算值了。
虽然程序设计完成了,但是还是有一些不足之处,例如:
程序编得太复杂,缺少一些警告语句等。
不过在这半个月的学习中,确实学到了很多东西,我们考虑事情不能太过简单,太过马虎,一定要思维严谨,当然相互交流,相互合作也是非常重要的。
总之,这次课程设计过得挺充实。
附录程序清单
#include
#include
#include
structSTORE
{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;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;a if(store[a].kucun<=30)………………….判断库存数是否小于30 {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;i {k=i; for(j=i+1;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;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;i s[i]=store[i].danjia*store[i].kucun; FILE*fp;…………………定义指针变量用来储存文件地址 fp=fopen("CK0133_store02.txt","w");……….打开文件并将文件的地址赋给fp if(fp==NULL)………………….判断文件中要找的物品是否存在 {printf("文件打开失败\n"); exit(0); } fputs(s2,fp); for(i=0;i fprintf(fp,"%s%s%.2f%d%.2lf\n",store[i].shangpin, store[i].fenlei,store[i].danjia,store[i].kucun,s[i]); fclose(fp);………………关闭文件 puts(s2);……………….输出函数 for(i=0;i printf("%s%s%.2f%d%.2lf\n",store[i].shangpin, store[i].fenlei,store[i].danjia,store[i].kucun,s[i]); } voidfenzongjia() {doublesum[4]={0,0,0,0}; inti; chars2[200]={"分类分类总价\n"}; structfen {charming[10];}m[4]={"饮料","食品","学习用品","生活用品"}; printf("6.分类物品总价\n"); for(i=0;i {if(strcmp(store[i].fenlei,"饮料")==0) sum[0]=sum[0]+store[i].danjia*store[i].kucun; if(strcmp(store[i].fenlei,"食品")==0) sum[1]=sum[1]+store[i].danjia*store[i].kucun; if(strcmp(store[i].fenlei,"学习用品")==0)sum[2]=sum[2]+store[i].danjia*store[i].kucun; if(strcmp(store[i].fenlei,"生活用品")==0)sum[3]=sum[3]+store[i].danjia*store[i].kucun; } FILE*fp; fp=fopen("CK0133_store03.txt","w"); if(fp==NULL)………………….判断文件中要找的物品是否存在 {printf("文件打开失败\n"); exit(0); } fputs(s2,fp); for(i=0;i<4;i++) fprintf(fp,"%s%.2lf\n",m[i].ming,sum[i]); fclose(fp); puts(s2); for(i=0;i<4;i++) printf("%s%.2lf\n",m[i].ming,sum[i]); } voidcuku() { printf("7.物品出库\n"); ints,a,i=1,x=0; chars2[20]; printf("请输入所需的物品名: "); fflush(stdin);………………..清空缓冲区 gets(s2); for(a=0;a if(strcmp(s2,store[a].shangpin)==0) {printf("请输入物品所需的数量: "); scanf("%d",&s); if(store[a].kucun>=s) {printf("允许出库\n"); store[a].kucun=store[a].kucun-s; printf("%s出库后信息: \n",s2); puts(s1); printf("%s%s%.2f%d\n",store[a].shangpin, store[a].fenlei,store[a].danjia,store[a].kucun); x=1;………………………将商品的详细详细输出来 } else printf("库存量不足,不能出库\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%d\n",s2,store[a].danjia,s); fclose(fp); fp1=fopen("CK0133_store.txt","w"); if(fp==NULL) {printf("文件打开失败\n"); exit(0); } fputs(s1,fp1); for(i=0;i fprintf(fp1,"%s%s%.2f%d\n",store[i].shangpin, store[i].fenlei,store[i].danjia,store[i].kucun); fclose(fp1); } } voidquanbuxinxi() {inti; printf("8.显示全部信息\n"); puts(s1); for(i=0;i printf("%s%s%.2f%d\n",store[i].shangpin, store[i].fenlei,store[i].danjia,store[i].kucun); } voidxiugai() { printf("9.信息修改\n"); } voidbaocun() {inti; printf("10.保存\n"); FILE*fp; fp=fopen("CK0133_store.txt","w"); if(fp==NULL) {printf("文件打开失败\n"); exit(0); } fputs(s1,fp); for(i=0;i fprintf(fp,"%s%s%.2f%d\n",store[i].shangpin, store[i].fenlei,store[i].danjia,store[i].kucun); fclose(fp); } voidread()/// {inti; FILE*fp; fp=fopen("CK0133_store.txt","r"); if(fp==NULL) {printf("文件打开失败\n"); exit(0); } fgets(s1,180,fp); for(i=0;i fscanf(fp,"%s%s%f%d", store[i].shangpin,store[i].fenlei, &store[i].danjia,&store[i].kucun); printf("从文件读出的结果为: \n"); puts(s1); for(i=0;i printf("%s%s%.2f%d\n", store[i].shangpin,store[i].fenlei, store[i].danjia,store[i].kucun); fclose(fp); } voidsave() {inti; FILE*fp; fp=fopen("CK0133_store.txt","w"); if(fp==NULL) {printf("文件打开失败\n"); exit(0); } fputs(s1,fp); for(i=0;i fprintf(fp,"%s%s%.2f%d\n", store[i].shangpin,store[i].fenlei, store[i].danjia,store[i].kucun); fclose(fp); } voidmain() {inta; read(); while (1) {printf("**********小型产库管理系统**********\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) { 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)";} } } 指导教师评语: 报告成绩: 指导教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 长江大学 工程 技术学院 语言 课程设计 实习 报告