版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c语言小型物流仓储管理系统课程设计1、课程设计冃的和要求冃的:进一步加深、巩i古i学生所学专业课程c程序设计的基本理论知识, 理论联系实际,培养学生综合分析问题和解决问题的能力。掌握运用c语言独立地 编写、调试应用程序和进行其它相关设计的技能。耍求:编写仓库管理系统,实现库存记录、出库记录、入库记录等三方面的功 能。2、课程设计名称及内容? 2课程设计名称仓库物资管理系统? 2.2设计内容设计一个仓库物资管理系统,该系统耍求对仓库物资信息进行管理和维护,实 现仓库物资信息化。? 2.3任务和要求1. 创建库存记录文件,根据捉示输入若干电器的信息,并将信息保存至一个文 件中。2. 物资入库管理,
2、创建-个入库记录文件,每次有物资入库,则按入库记录要 求输入各项信息,并将该次的入库信息添加到文件屮,同时修改相应的库存记录文 件。3. 物资出库管理,创建一个出库记录文件,每次有物资出库,则按出库记录要 求输入各项信息,并将该次的出库信息添加到文件中,同时修改相应的库存记录文 件。注意:物资出库时要检查出库数量的合法性(即出库数量必须小于廂存数量)。4. 按不同条件进行查询操作,输出满足条件的物资信息。(1) 输入电器名称,在库存记录文件屮查找相应的物资信息并输出。(2) 输入殆牌名称,在库存记录文件中查找该品牌的所有电器信息并输出。(3) 输入一个日期(年.月.日),输出该天的入库记录和出
3、库记录。(4) 输入电器名称和型号,输岀该电器的所有入库记录和出库记录。5. 按不同条件对物资信息进行统计丁作。(1) 输入电器名称,在库存记录文件中统计该电器的现有库存总量。(2) 输入屯器名称,在入库记录文件中统计该电器的入库次数。(3) 输入一个日期(年月),在出库记录文件中统计该月的出库记录次数。(4) 设置一个库存数量警戒值,输出库存数量小于该警戒值的所有库存屯器的信 息。3. 设计思想作为仓库物资管理系统,首先要冇对物资信息的录入,库存记录应包括以下信 息:屯器名称、品牌名称(或牛产厂家)、型号、库存数量、价值。主要以录入、杳找、增加、修改、删除、显示等功能,贯穿整个程序。输入要查
4、找的物资名称,系统会口动显示对应的物资信息。最后就是退出程序4. 程序详细设计程序共有20个函数,分别为void creatstock()void creatlnstock()void creatoutstock()void searchelename();void searchbrand();void searchdate();void searchelenameandbrand();void printstock(struct stock *p);void printlnstock(struct instock *p);void printoutstock(struct outstock
5、*p)void searchmenu()void countmenu()void count4()void main()int read_stock()int readstock()int read_outstock()int count 1()int count2()int count3()其中程序末尾定义了 main函数,主函数void main(),主要通过调用各个成员函 数,最终实现物资信息的创建、杳找、统计等各项功能。5. 课程设计心得与体会在这次c语言课程设计中,我收获颇丰也发现了自己许多不足的地方,结合自 己所学并通过查阅资料,在程序设计过程屮加深了我对面向对象的程序设计方法的
6、认识,在巩固了基本的程序设计方法的基础上进一步学习了c中类的定义、成员方 法的使用以及函数的调用等。同时,在程序的设计过程m曝露出了许多问题,首先,程序设计之初思路 混乱,面对程序要求的各项功能如:教师信息的创建、删除、修改、查找等无从下 手,最终通过一个个的子函数分别完成不同的功能并通过主函数调用最终实现程序功能的完整性;第二,平时对于面向对象的程序设计方法仅仅局限于概念上的理解, 真止实现起来被每个对彖繁杂的属性搞的晕头转向;第三,自己对c语言的学习仅 仅局限于课本知识,很少实践,以至于在编程过程中错误不断甚至出现低级的语法 错误。这次课程设计使我的编程能力得到了很大的捉高,加深了我对面向
7、对彖这一 概念的理解,对以后其他面向对象程序语言的学习打好良好基础,同样也在编程方 面积累了经验6 参考资料c程序设计7.程序源代码#include "stdio.h"#include<stdlib.h># include<string.h>#include<conio.h>#define stocknum 3原来库存屮家电的种类#define instocknum 3每次输入的家电种类#define outstocknum 3出库家电的种类struct date/吋间结构int year;int month;int day;struct
8、 stock/库存结构char elename20;char brand20;char type 20;intstocknum;; intvalue; ; stocstocknum+instocknu; structinstock/入库结构;charelename20;; charbrand20;; chartype20;; intinstocknum;; intprice;: structdateintime;; charsendemame20j;; jinint stocknum;int value;stocstocknum+instocknumj;struct instock/入库结构c
9、har elename20;char brand20;char type 20;int in stocknum;int price;struct date intime;char sendername20;ininstocknumj;struct outstock/出库结构char elename20;char brand20j;char type 20;int outstocknum;struct date outtime;char delivemame20j;outoutstocknum;/void creatstock()/创建库存记录文件int i;file *fp;if(fp=fop
10、en(,stock.txt,;,w,)=null)printf(,'can,t open file!nn);exit(o);for(i=0;i<stocknum;i+)printf(”请输入电器的信息!n”);printfc'xn电器名称品牌名称型号库存数量价值);scanf(h%s %s %s %d %dr',stoci.elename,stoci.brand,stoci.type,&stoci.stocknum,&stocil.value);fwrite(&stoci,sizeof(struct stock),l,fp);fclose(
11、fp);/int read_stock()/读取库存文件到 stocint i=0;file *fp;if(fp=fopen(,stock.txtn;,r,)=null)printf("can't open file :stock.txt !n");return 0;if( fgetc(fp)<0 ) /读入的是文件结束符return 0;rewind(fp);/使位置指针重新移到文件开头 while( !feof(fp)fread(&stoci,sizeof(struct stock), 1 ,fp);i+;fclose(fp);retum _i;返
12、回库存家电的种类/int read_instock()/读取入库文件到 inint i=0;file *fp;if(fp=fopen(',instock.txt","r")=null)printf(”can't open file :instock.txt !nu); return 0;if( fgetc(fp)<0 ) return 0;rewind(fp);while( !feof(fp)fread(&ini,sizeof(struct instock),l,fp);i+;fclose(fp);return -i;返回入库家电的种
13、类/int read_outstock()/读取出库文件至!i out int i=0;file *fp;if(fp=fopen(',outstock.txtn,rh)=null)printfc'can't open file :outstock.txt !n”); return 0;if( fgetc(fp)<0 ) return 0; rewind(fp);while( !feof(fp)fread(&outi,sizeof(struct outstock),l,fp); i+;fclose(fp);return 一i;返回出库家电的种类/void c
14、reatlnstock()/创建入库记录并改变库存记录int i,j,k;int an=stocknum;int boolean=0;file *fp;if(fp=fopen(hinstock.txt,w,)=null)printf(,'can,t open file!n");exit(o);for(i=0;i<instocknum;i+)printfchl器名称品牌名称 型号入库数量单价 入库时间(年 月曰)送货 人姓名n”);scanf(”s %s %s %d %d %d %d %d %sn,ini.elename,inij.brand,inli,type,&
15、;i ni.instockn um,&ini.price,&inil .intime, year,&ime, month,&ime.day,in i.sendername); printf("有物资入库! nn);fwrite(&ini,sizeof(struct instock), 1 ,fp);fclose(fp);read_instock();/读取 instock.txt 入 inj;read_stock();/读取 stock.txt 入 stoc;for(k=0;kvinstocknum;k+)bool
16、ean=0;for(j=0;j<stocknum;j+)if(strcmp(stocj.elename,ink.elename)=0 && strcmp(stocj brandjnk.brand ) 二二0 && strcmp(stocjj.type ?inkj.type )二二0 )stoc|j.stocknum =stocjj.stocknum +inkjnstocknum ;boolean= 1;if( boolean=0 )原来库存屮没有此类家电strcpy(stocan.elename ,ink.elename );strcpy(stocan.b
17、rand ,ink.brand );strcpy(stocan.type ,ink.type );stocan.stocknum =ink.instocknum ;stocan.value=ink .price ;an+;if(fp=fopen(" stock, txtn,n wn )=null)printf("can't open file!n");exit(o);fwrite(stoc,sizeof(struct stock),an,fp);fclose(fp);/void creatoutstock()/创建出库记录并改变库存记录int i=0,j=
18、0,k=0,n=0;int sum_stock=0;file *fp;sum_stock=read_stock();/读取 stock.txt 入 stocprintf("共有家电物资d 种nn,sum_stock);for(n=0;n<outstocknum;n+)printf("电器名称品牌名称型号出库数量出库时间(年 月 日)nh);提货人姓名scanf(”s %s %s %d %d %d %d %sh,outn.elename,outn.brand,outn.type,&outnj.outstocknum,&outlnj.outtime .ye
19、ar,&outlnj.outtime .month,&out|n.outtime .day,outfn.delivername);printf(n有物资出库! n”);if(fp=fopen(noutstock.txtn,"w")=null)printf("can't open file!n");exit(o);for(j=0;j<outstocknum;j+)for(i=0;i<3;i+)if(strcmp(stoci.elename,outj.elename )=0)&&(strcmp(stoci.
20、brand,outj.brancl)二二 0)&&(strcmp(stoci.type,out|j.type)二二 0)k=l;if(outj.outstocknum<=stoci.stocknum)fwrite(&outj,sizeof(struct outstock),l ,fp);stoci.stocknum=stoci.stocknu outj.outstocknum;printfc*资源s 出库成功!n",outj.elename);elseif(outj .ou tstocknum>stoci .stocknum)/else print
21、f(nn超出库存量! n按任意键继续!n”); getch(); if( k=0 ) printf(hn库存中不存在该信息! n按任意键继续!n”); getch(); fclose(fp);if(fp=fopen(" stock.tx tn,n w" )=null)printf(hcan,t open file :stock.txt !nn);exit(o);fwrite(stoc,sizeof(struct stock),sum_stock,fp);fclose(fp);/; voidsearchelename();; voidsearchbrand();; voids
22、earchdate();;voidsearchelenameandbran ; voidprintstock(structsto; voidprintinstock(structi ; voidp rintoutstock(stru/void searchelename();void searchbrand();void searchdate();void searchelenameandbrand();void printstock(struct stock *p);void printlnstock(struct instock *p);void printoutstock(struct
23、outstock *p);/void searchmenu()/查询菜单int select;while(l)printf(nn欢迎使用查询功能! nn);(”输入1按电器名称查询n");printf("输入2按品牌名称查询nh);printf("输入3按日期查询n”);printf(n输入4按电器名称和型号查询1)”);printf("输入0退出查询功能n”); printf("n请选择查询方式:”); scanf(” d”,&select);getchar();switch(select)case 1:searchelename()
24、;break;case 2:searchbrand();break;case 3:searchdate();break;case 4:searchelenameandbrand();break;case o:return;default:printf(nn 错误!请重新选择! nh);void searchelename()/按照电器名称查询int i;int sum_stock=0;int boolean=0;char celename20,c=,y'sum_stock=read_stocko;/w 存中家电的种类whne(c=,y,|c=,y,)boolean=0;printf(n
25、n请输入电器名称:”);scanf(n%sn,celename);getchar();for(i=0;i<sum_stock;i+)if( strcmp(stoci.elename,celename)=0 )printfc'xn库存电器d的信息n”,i);printstock(&stoci);boolean=l;printf(un按任意键继续! nh);getch();if( boolean=0 )printf("没有屯器:%sn",celename);printf(hn继续查询其他库存信息吗? )(y/n):h);c=getchar();getcha
26、r();/void searchbrand()/按照品牌名称査询int i;int sum_stock=0;int boolean=0;char cbrand20,c=,y*;sum_stock=read_stock();/ 库存中家电的种类while(c='y,|c=,y,)boolean=0;printfc*n请输入品牌名称:”);scanf(” s”,cbrand);for(i=0;i<sum_stock;i+)if( strcmp(stoci.brand,cbrand)=0 )printf(hn库存电器4的信息n”,i);printstock(&stoci);bo
27、olean= 1;printf(nn按任意键继续! n”);getch();if( boolean=0 )printf("没有电器:%snn,cbrand);printf(un继续查询其他库存信息吗? )(y/n):h);c=getchar();getchar();/void searchdate()/按照口 期查询int i,j;int sum_instock=0,sum_outstock=0;int booleanin=0.booleanout=0;struct date time;sum_instock=read_instock();sum_outstock=read_outs
28、tock();printf(hn请输入日期:”);scanf(n%d%d%dn, &time.year,&time.month, &time.day);for(i=0;i<sum_instock;i+)if(ime.year=time.year && immintimemonth=nimemonlh ime.day=time.day)printlnstock(&ini);booleanin+;for(j=0;j<outstocknum;j+)if(outj.outtime.year=time.year
29、 && outj.outtime.month=tiinemonth outj.out time.day=time.day)printoutstock( &outj);booleanout+;if( booleanin=0 && booleanout=0 )printfc*该天没有入、出库信息! n按任意键继续! n");getch();elseif( booleanin=0 && booleanout!=0 ) && &&printf("该天没有入库信息! n按任意键继续! n”);ge
30、tch();elseif( booleanin !=0 && booleanout=0 )printf("该天没有出库信息! n按任意键继续! n”);getch();/void searchelenameandbrand()/按照电器名称和型号査询int i;int sumstock=0,sum_outstock=0;int booleanin=0,booleanout=0;char cname20,ctype20;sum_instock=read_instock();/ 入库家电的种类 sum_outstock=read_outstock();/ ; 11 库家电
31、的种类 printf(nn请输入电器名称和型号:”); scanf("%s %s",cname,ctype);fbr(i=0;i<sum_instock;i+)if(strcmp(ini.elename,cname)=o && strcmp(ini.type,ctype)=o)printlnstock(&ini);booleanin=l;for(i=0;i<sum_outstock;i+)if(strcmp(outi.elename,cname)=0 && strcmp(outi.type,ctype)=0) printo
32、utstock( &outi);booleanout= 1;if( booleanin=0 && booleanout=0 )printf("该电器没冇入、出库信息! n按任意键继续! nh);getch();/void printstock(struct stock *p)输出库存信息printf(”输出库存记录信息! n");printf("电器名称品牌名称型号库存数量价值屮);printf("%s %s %s %5d %dnn,p->elename,p->brand,p->type,p->stockn
33、um,p->valu e); /void printlnstock(struct instock *p)输出入库信息printf("输出入库记录信息! n“);printfc*电器名称t品牌名称型号入库数量单价入库时间送货人姓名n”); printf("%stt%st%st%dt %dt %d %d %d %sn",p->elename,p->brand,p->type, p >instocknum,p>pi*ice,p >intime.year,p >intime.month,p >intime.day,p
34、>sendemame);/void printoutstock(struct outstock *p)输出出库信息printf(h输出出库记录信息! n“);printfc吨器名称品牌名称 型号出库数量出库时间提货人姓名十);printf(h%s %s %s %d %d %d %d %snn,p->elename,p->brand,p->type,p->outsto cknum,p > outtime.yeai*,p>outtime.month,p > oimime.day,p->deliveniame);/int count 1();in
35、t count2();int count3();void count4();/void countmenu()/统计int select;int nl,n2,n3;while(l)printf(mn欢迎使用物资统计功能! nh);printf(printf(n 1输入屯器名称,在库存记录文件中统计现有库存总量n“);printf(" 2输入电器名称,在入库记录文件中统计入库次数);printf(n3输入日期(年,刀),;printf(n4设置库存数量警戒值,;printf("o退出 统计功能n&q; printf("n 请选择查询方式:&; sca
36、nf(”d”,&am; getchar();; switch (select); case 1:nl =countl();break;; caseprintf(n 3输入日期(年,刀),在出库记录文件中统计该刀出库次数e);printfc* 4设置库存数量警戒值,输出库存数量小于该警戒值的所有库存电器的 信息);print” 0退出统计功能n“);printf(nn请选择查询方式:");scanf(n%dm,&select);getchar();switch(select)case 1:nl=countl();break;case 2:n2=count2();brea
37、k;case 3:n3=count3();break;case 4:count4();break;case o:return;default:printf(mn按键错误,请重新选择! nh);/int count 1()/输入电器名称,在库存记录文件中统计现有库存总量int i;int sum_stock=0;int boolean=0;char cname20j;printfc'xn请输入电器名称:”);scanf(,%s,cname);sum_stock=read_stock();for(i=0;i<sum_stock;i+)if(strcmp(stoci.elename,c
38、name)=0 )printf(h该电器现有库存总量:d n*',stoci.stocknum );boolean= 1;if( boolean=0 )printf(h库存中没有该电器n”);printf(h按任意键继续!n”);getch();return i;/int count2()/输入电器名称,在入库记录文件中统计入库次数int i=0,sum=0;int sumnstock=0;int boolean=0;char cname20;printf(nn请输入电器名称:”);scanf(n%sn5cname);sum_instock=read_instock();for( i=0;i<sum_instock;i+)if(strcmp(ini.elename,cname)=o )sum+;boolean 二 1;if( boolean=0 )printf(na库屮没有该电器n”);elseprintf(n该电器入库次数:d nh,sum);printf(h按任意键继续!n”);getch();return 1;/int count3()/输入日期(年,月),在出库记录文件屮统计该月出库次数int i=0,sum=0;int sum_outstock=0;int boolean=0;struct date ti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五金材料采购实践分享
- 2022年四川省广元市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2022年安徽省合肥市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2022年四川省广安市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2021年贵州省铜仁市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2025年工具钢项目提案报告模范
- 广西北海市(2024年-2025年小学六年级语文)统编版随堂测试((上下)学期)试卷及答案
- 2025年出入口机项目立项申请报告模范
- 实习生的辞职报告
- 2024年服务器项目资金需求报告代可行性研究报告
- 高职院校智能制造实验室实训中心建设方案
- 房产交易管理平台行业发展预测分析
- 档案工作人员分工及岗位责任制(4篇)
- 电商整年销售规划
- GB 4396-2024二氧化碳灭火剂
- 美丽的秋天景色作文500字小学
- 施工单位2025年度安全生产工作总结及计划
- 口腔癌放疗护理
- 护理质量委员会会议
- 2024年护理质量分析
- 2024-2025学年高中物理举一反三专题2.1 简谐运动【八大题型】(含答案)
评论
0/150
提交评论