C语言试验5综合性试验设计仓库_第1页
C语言试验5综合性试验设计仓库_第2页
C语言试验5综合性试验设计仓库_第3页
C语言试验5综合性试验设计仓库_第4页
C语言试验5综合性试验设计仓库_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验目的四号黑体1. 掌握各种程序设计技术的综合应用方法;2. 掌握对实际应用中的一个具体问题进行分析的方法;3. 掌握将现实世界中的事物或现象转换成计算机内部的数据的方法;4. 初步掌握结构化分析方法;5. 初步掌握设计一个具有真实数据输入、数据处理和数据输出的完整的小程序的方法.实验原理算法分析包括流程图根据要求,在程序中应提供显示、查找、统计等操作;实现货物入库功能,要提供结构体 的输入操作;实现查询功能,要提供查询操作;实现统计功能,要提供相应的统计操作; 另外,还要提供字符界面菜单实现功能选择.根据上面的需求分析,将该系统的设计分为 4大模块,即菜单模块、入库模块、查询模块、 和统计

2、模块.程序整体流程图:保存数据函数save:(2)浏览库存数据(统计货物)view()主要功能模块流程图(1)录入数据(入库)函数insert()(3)货物查询函数search.(4)统计库存总价值函数 sum()三、实验过程原始记录(数据、图表、计算等)1头文件定义#defi ne_CRT_SECURE_NO_WARNINGS#include <stdio.h>#i nclude <stdlib.h>#in clude <cstri ng>#define SIZE 100/定义库存工程2、结构定义:定义了结构体用来描述库存的货物编号、商品名称、价格、总价格

3、、入库数量等.并定义一个结构体数组,存放多个条目.struct WAREHOUSE/货物编号/货物名称/价格/商品总价格/入库数量/生产厂家int num; char n ame10; double price;int total_price; int in;char factory10;char man 10; long count;goods SIZE;3、定义函数/经手人/商品总数量主要有7个功能模块,每个模块对应一个自定义函数:void menu();void insert();void save();void read();void view();void search(); voi

4、d sum();4、设计菜单项选择项void menu() /*/声明菜单函数/声明录入函数/声明保存函数/声明读取文件函数/声明浏览库存函数/声明查询函数/声明统计函数菜单函数*/system"cls"printf"仓库货物治理系统nn;prin tf"请选择您要进行的操作:请输入操作前的数字printf"1.货物入库nn"printf"2.货物查询nn"printf"3.库存浏览nn"printf"4.货物统计nn"printf"5.退出系统nn"调试

5、,到达理想效果EC:计笛机语言英曲&五更新八Wbuy实验五630更新knn");|仓库货物営理泵统请选禅您皱逬片的鮒:请输入操作前的数字I货物入库* 货物竟询3.库存浏览4 货物统i十3.记出系统请输人休霜要按作的序吕1 5:实现功能选择:void main()doint m, f; while (1) menu(); /* 调用菜单函数 */ printf( "请输入你需要操作的序号 (1 5):n" ); scanf( "%d", &m);if (m >= 1 && m <= 5)f = 1;br

6、eak ; elsef = 0;break ;printf(" 您输入有误,请重新选择 !"); while(f = 0);switch (m)case 1:printf( case 2:printf( case 3:printf(I!I!I!录入货物信息 n" ; printf 查询货物信息 n" ; printf 浏览库存货物信息 n" ; printf"n" ); insert();"n" ); system( "cls" ); search(); break ;"n&

7、quot; ); system( "cls" ); view();break ;case 4:printf(I!统计货物信息 n" ); printf( "n" ); system( "cls" ); sum(); break;case 5:defaultgoto loop;:break; loop: /行标system( "cls"printf( "nnnnnn );谢谢使用!nnnnnn");4、文件写入:用于将录入的库存数据写到文件当中以永久保存.具体定义如下:void save

8、() / 向文件中写入库存数据 FILE* fp;int i;库存记录 .txt" , "wb" ) = NULL)if (fp = fopen(printf( "没有写文件 ");return ;for (i = 0; i < SIZE; i+)if (fwrite(&goodsi, sizeof ( struct WAREHOU),S1E, fp) != 1)printf( "file write errorn");fclose(fp);使用块写入函数 fwrite 写入,更方便一次性写入整个结构体数据.5

9、、入库把库存数据录入到系统中.先输入需要读取的条目数量,限制录入循环的次数,通过 scanf 的格式控 制,依次对结构体的数据进行写入.void insert() / 入库int i, n;system( "cls" );printf( " 输入几个货物的信息 :n" );scanf( "%d", &n);for (i = 0; i < n; i+)printf( "nt 货物编号 :" );scanf( "%d", &goodsi.num);printf( "n

10、nt 货物名称 :" );scanf( "%s", );printf( "nnt 价格 :" );scanf( "%lf" , &goodsi.price);printf( "nnt 入库数量 :" );scanf( "%d", &goodsi.in);printf( "nnt 生产厂家 :" );scanf( "%s", goodsi.factory);printf( "nnt 经手人 :&quo

11、t; );scanf( "%s", goodsi.man);getchar(); system( "cls" );printf( "n 信息创立完毕!请输入下一个货物的信息 n" );printf( "n" );save(); 调试,录入货物信息:匚 '计算机1S言题葩五Webug煤检五J恤入几牛货抑的信息厂n信息创立完毕!请输入下一个货物的信息货厠煽号:1货物编号:2货物名称:椰汁货物名称:權汁仰加12价辂:10入库栽量:10人库数园:游生产厂泉;海南一厂生产厂家:广州一厂经手人:阿三径手人:阿四6、库存

12、数据查看void view() /汇总全部库存数据read();int i;system( "cis");printf( "n货物编号t货物名称t价格t入库数量t生产厂家t经手人n");for (i = 0; i < SIZE; i+)if (goodsi.in = 0) break;printf( "n %dt%st %lft %dt %st %s n", goodsi. num, goodsi. name,goodsi.price,goodsi.i n, goodsi.factory, goodsi.ma n);printf

13、( " n");printf("按任意键返回主菜单n");getchar();getchar(); system( "cls"); RL 医言头疑、头城壬 询.丸匡奇J Deb娈削五U开弄务)£疔货物编号货物名称入库数畐生产厂家经手人1檸汁12. OOOCXN)10释南一厂阿二2橙汁10. 00000020广州一厂阿四我任惫谧返冋主菜甲7、查询货物void search() /* 查询函数 */ read();char name110;int i,t;printf("请输入要查找的货物名称:n");sca

14、nf( "%s", namel);for (i = 0; i < SIZE; i+)if (strcmp(name1, ) = 0)printf( "n已找到货物,其记录为:n");printf( "n货物编号t货物名称t价格t入库数量t生产厂家t经手人n"); pri ntf( "n %dt %st %lft %dt %st %s n"goodsi. num, goodsi. name, goodsi.price,goodsi.i n, goodsi.factory, goodsi.m

15、a n);break;if (i = SIZE)printf( "n对不起,查无此货物n");printf( "n");printf("继续查询请按1,返回主菜单请按2n");scanf( "%d", &t);switch (t)case 1:search(); break;case 2:menu(); break ;default : break;|沾林A.建內扌2旳張牠吝峙; 册丨己典利吏物,雄记录対:费轲繼号货物名尊ffr格人库敷且尘产厂靈经FA1欄汁ig.oomofi10海南一厂阖三耐淇鱼沏诘按1.

16、匹回丄家单情按211淸输理仟找羽咦眈轲称:程汁己找刊货糊.施记录为:凭物编号货妁假设算价格AJtSJf 量生产厂京经于人Bit10. oooooo广州-r懈续寿诣洁掩1.逅冋主慕单晞捲2&统计库存总价值先通过函数的嵌套调用,使用read函数读取库存数据.然后使用循环累加计算价值总量.循环次数以库存结构体数组的数目来确定.void sum()read();system( "cis");float S = 0;int i;for (i = 0; i < SIZE; i+)S = S + goodsi.price * goodsi.i n;printf("

17、仓库货物的总价值为:%.2fn" ,S);printf( " n");printf("按任意键返回主菜单n");getchar();getchar(); system( "cis"); 5计算机语言实M鲨五汨30更新)pebug£ (6 30) exe会专货物的总价tfl为:迎心00按任点惟返回主章单四、实验结果及分析本次实验设计的是简单的仓库治理系统,最后根本实现了预想的功能,完成了实验的要求,让我有以下几个收获:1 强化稳固了C语言中文件输入输出知识.深刻体会到fwrite/fread 块读写函数和fprin

18、tf/fsca nf的区别,以及应在什么读写方式下用何种输入/输出函数.2 熟悉了字符/字符串函数vstring.h> 的使用.会应用 strcmp对字符串数组进行比拟.3 对模块化编程有了了解,并建立了模块化编程的思想,我想这点对我来说尤为重要.4这次的编程,更增强了我对错误的改正水平,也在编程中减少了低级错误的发生,也 提升了对软件的熟练程度.这次的程序设计,是自己独立完成了一个相比照拟大的程序,里面用到的知识也是比 较多的,通过一番实践,很好的总结、强化了之前学习过的知识要点,并且也发现了自己 还没好好掌握的知识点,对于没掌握的,通过查阅参考书籍、询问同学和老师及时补上. 虽然前期

19、难度较大,但后来代码越写状态越好,感觉是由于自己对于一些根本的知识的比 较好的掌握了.有些问题虽然没以前遇到过,但是通过查阅资料,老师的补充讲解,了解 了它们的用法,自己就可以很快的模仿,写出自己的程序.这一点我觉得在今后的程序设 计中也是蛮重要的,要写出好程序,首先应该去学习人家的程序,看懂他们的程序并且转 化为自己的.其次才有可能去创新.五、附录自己实现的源代码/1 数据如何存#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <cstring>#def

20、ine SIZE 100/ 定义库存工程/ 定义库存文件结构体struct WAREHOUSEint num;/ 货物编号char name10;/ 货物名称double price;/ 价格int total_price;/ 商品总价格int in;/ 入库数量char factory10;/ 生产厂家char man10;/ 经手人long count;/ 商品总数量goods SIZE;/2 用什么函数处理voidmenu();/ 声明菜单函数voidinsert();/ 声明录入函数voidsave();/ 声明保存函数voidread();/ 声明读取文件函数voidview();/

21、 声明浏览库存函数voidsearch();/ 声明查询函数voidsum();/ 声明统计函数void menu() /* 菜单函数 */system( "cls" );printf( " 仓库货物治理系统 nn" );nn" );printf( " 请选择您要进行的操作:(请输入操作前的数字) printf( "1. 货物入库 nn" );printf( "2. 货物查询 nn" );printf( "3. 库存浏览 nn" );printf( "4. 货物统计

22、 nn" );printf( "5. 退出系统 nn" );void main()int m, f;while (1)do menu(); /* 调用菜单函数 */printf( "请输入你需要操作的序号 (1 5):n" ); scanf( "%d", &m);if (m >= 1 && m <= 5)f = 1; break ;elsef = 0;printf(" 您输入有误,请重新选择 !"); while (f = 0);switch (m)case 1:pri

23、ntf( "录入货物信息 n"); printf("n"case 2:printf( "查询货物信息 n"); printf("n" );case 3:printf( "浏览库存货物信息n" ); printf(case 4:printf( "统计货物信息 n"); printf("n"case 5: goto loop;/*用goto语句跳至跳至指定的行*/default :break;break ; system(); insert(); break

24、;system( "cls" ); search(); break ; "n" ); system( "cls" ); view();"cls" ); sum(); break ;loop: /system( "cls"printf( "nnnnnn行标);谢谢使用!nnnnnn");void save() / 向文件中写入库存数据FILE* fp;int i;if (fp = fopen( 库存记录 .txt" , "wb" ) = NULL)

25、 printf( "没有写文件 ");return ;for (i = 0; i < SIZE; i+)if (fwrite(&goodsi, sizeof ( struct WAREHOU),S1E, fp) != 1);printf( "file write errorn"fclose(fp);void insert() / 入库int i, n;system( "cls" );printf( " 输入几个货物的信息 :n" );scanf( "%d", &n);for

26、 (i = 0; i < n; i+)printf( "nt 货物编号 :" );scanf( "%d", &goodsi.num); printf( "nnt 货物名称 :" );scanf( "%s", );printf( "nnt 价格 :" );scanf( "%lf" , &goodsi.price);printf( "nnt 入库数量 :" );scanf( "%d", &

27、goodsi.in); printf( "nnt 生产厂家 :" );scanf( "%s", goodsi.factory);printf( "nnt 经手人 :" );scanf( "%s", goodsi.man);getchar(); system( "cls" );printf( "n 信息创立完毕!请输入下一个货物的信息 n" );printf( "n" );save();void read() / 从文件中读取库存数据FILE* fp;int

28、 i;if (fp = fopen( 库存记录 .txt" , "wb" ) = NULL) printf( "没有写文件 ");return ;for (i = 0; i < SIZE; i+)fscanf(fp, "n %dt%st %lft %dt %st %s n", goodsi.num, ,goodsi.price,goodsi.in, goodsi.factory, goodsi.man);if (goodsi.in = 0) break ;fclose(fp);void view(

29、) / 汇总全部库存数据read();int i;system( "cls" );printf( "n 货物编号 t 货物名称 t 价格 t 入库数量 t 生产厂家 t 经手人 n" ); for (i = 0; i < SIZE; i+)if (goodsi.in = 0) break ;printf( "n %dt %st %lft %dt %st %s n" , goodsi.num, , goodsi.price,goodsi.in, goodsi.factory, goodsi.man);printf( " n" );printf( " 按任意键返回主菜单 n" )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论