C语言课程设计 物资管理系统.docx

上传人:小飞机 文档编号:3155488 上传时间:2023-03-11 格式:DOCX 页数:19 大小:42.74KB
返回 下载 相关 举报
C语言课程设计 物资管理系统.docx_第1页
第1页 / 共19页
C语言课程设计 物资管理系统.docx_第2页
第2页 / 共19页
C语言课程设计 物资管理系统.docx_第3页
第3页 / 共19页
C语言课程设计 物资管理系统.docx_第4页
第4页 / 共19页
C语言课程设计 物资管理系统.docx_第5页
第5页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言课程设计 物资管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 物资管理系统.docx(19页珍藏版)》请在三一办公上搜索。

1、C语言课程设计 物资管理系统学 院: 专 业: 姓 名: 学 号: 指导老师: 1 目录 一题目要求3 二需求分析3 三总体设计4 四详细设计4 4.1 主函数 4 4.2各功能模块设计5 4.2.1信息输入模块5 4.2.2 信息查找模块6 4.2.3 新物资入库模块8 4.2.4 领料模块8 4.2.5 打印功能模块8 4.2.6采用文件来存储数据信息9 五上机操作10 六总结13 附录 14 2 物资管理系统 一 题目要求 请设计一个物资管理系统,要求主程序中应提供文字交互菜单界面,要求包含以下几个功能模块: 信息输入模块input:建立物资管理数据总文件,完成对物资原库存信息的录入,并

2、存放到指定文件中(pro.dat) 信息查找模块search:采用如下方式进行查找,若找到,则输出该物资的相关信息;没有则给出提示信息。 按产品名称查询 进货日期查询并统计。 按产品名称和规格查询并统计。 新物资入库模块insert:在原数据文件中插入新物资的信息。 领料模块lend:查找所领取物资的信息,满足领料的要求,请登记领取物资名称,日期,数量 打印功能模块printf (1)打印领料单 打印物资库存清单。 建立如下结构体: struct dateint year ;int month ; int day; struct product char p_name20;物资名称 long

3、int p_num7;物资编号 char size4;物资规格 struct date in date;进货日期 long int max_s;最大库存量 long int min_s;最小库存量 long int real_s;实际库存量 struct product*next;结点指针 Struct l_pro char p_name 20;物资名称 struct date l_date;领料日期 long int total ;领料数量 struct l_pro*next;结点指针 ; 二 需求分析 根据题目要求,由于物资信息是存放在文件中,所以提供文件的输入,输出等操作在程序中需要浏览

4、物资的需要浏览物资信息,应提供显示,查找等操作;另外还应提供键盘选择菜单实现功能选择。 3 三 总统设计 根据上面的分析及题目要求可以分为以下六个模块。 物资管理系统 商品种类输入 商品查询模块 商品信息输入 商品领取模块 打印商品信息 系统推出 图系统模块图 四 详细设计 主函数:主函数一般是设计简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其中流程图如图 menu /*主函数*/ int n,w1; do puts(ttt*menu*nn); puts(ttt 1.enter new datann);/*输入数据*/ puts(ttt 2.search menu

5、nn);/*查找信息*/ puts(ttt 3.insert new datann);/*插入新数据*/ puts(ttt 4.lend datann);/*领料数据*/ puts(ttt 5.print datann);/*打印*/ puts(ttt 6.exit);/*退出*/ puts(nttt*n); printf(Please choose the number 1-6: bb); scanf(%d,&n); if(n6) w1=1;getchar; else w1=0; while(w1=1); switch(n) case 1:enter;break; case 2:search

6、;break; 4 开始 case 3:insert;break; case 4:lend;break; case 5:print;break; 输入n,判断m case 6:exit(0); 是否是1到6? Y main 显示一系列功能选项 menu; 根据n值调用各 功能模块函数 N 各功能模块设计 结束 图主函数流程图 1信息输入模块:主要是为了输入商品类型,名称,数量,型号,日期,最大,最小,真实库存量,并存放在指定的文件(pro.dat)中。 enter/*信息输入模块*/ int i,n; 开始 printf(nHow many products do you want to in

7、put(0-%d)?:,N-1); scanf(%d,&n); printf(nEnter data now!nn); 输入用户要输入 for(i=0;in;i+) 学生记录的个数n printf(Please input the %dth products data:n,i+1); input(i); i从0到n1调用 输入函数input if(i!=0)save(n); printf_back; Y N input(int i) i!=0吗? printf(nname(1-20letter):); scanf(%s,&proi.p_name); printf(nnumber(1-7lett

8、er):); 返回主菜单 保存调用函 scanf(%d,&proi.p_num); 数save printf(nsize(1-4letter):); scanf(%s,&proi.size); 结束 printf(ndate(*.*.*):); 图信息输入模块 scanf(%d.%d.%d,&proi.in_date.year,&proi.in_date.month,&proi.in_date.day); printf(min_s real_s max_s:); scanf(%d %d %d,&proi.min_s,&proi.real_s,&proi.max_s); 5 printf_dat

9、a(int i) printf(nnametnumttsizetdatettmin real maxn); printf(%st%dtt%st%d.%d.%dt%d-%d-%d,proi.p_name,proi.p_num,proi.size,proi.in_date.year,proi.in_date.month,proi.in_date.day,proi.min_s,proi.real_s,proi.max_s); printf_back printf(nnSuccessful!nttThank you!n); getch; menu; 2查询模块 search/*信息查找模块*/ int

10、 n,w2; do puts(ttt*search menu*nn); puts(ttt1.search by name); puts(ttt2.search by data); puts(ttt3.search by name and size); puts(ttt4.exit); puts(nttt*n); printf(Choose the number to search 1-4: bb); scanf(%d,&n); 开始 if(n4) w2=1;getchar; else w2=0; 选择查询模式:1。按 while(w2=1); 名称查找2。按日期查 switch(n) 找3。按

11、名称和规格查 case 1:search_by_name;break; 找 case 2:search_by_date;break; case 3:search_by_nameandsize;break; case 4:getch;menu; Y N 是否找到 search_by_name/*按名称查找*/ 显示找到的记录 提示没有找到 int j,n,m=0;char a20; n=load; printf(nInput the products namenname:); scanf(%s,a); 结束 for(j=0;jn;j+) 图查找模块 6 if(strcmp(a,proj.p_na

12、me)=0) m+; printf_data(j); printf(nThis is the %dth product you have searched!,m); getch; menu; struct s_date/*按日期查找*/ int year; int month; int day; s; search_by_date int j,n,m=0; n=load; printf(nInput the date(*.*.*)ndate:); scanf(%d.%d.%d,&s.year,&s.month,&s.day); for(j=0;jn;j+) if(s.year=proj.in_

13、date.year)&(s.month=proj.in_date.month)&(s.day=proj.in_date.day) m+; printf_data(j); printf(nThis is the %dth product you have searched!,m); getch; menu; search_by_nameandsize/*按名称和规格查找*/ int j,n,m=0;char a20,b4; n=load; printf(nInput the products namenname:); scanf(%s,a); printf(nInput the products

14、 sizensize:); scanf(%s,b); for(j=0;jn;j+) if(strcmp(a,proj.p_name)=0)&(strcmp(b,proj.size)=0) m+; printf_data(j); printf(nThis is the %dth product you have searched!,m); getch; 7 menu; 开始 3新物资入库模块 调用加载函数n=loadinsert/*新物资入库模块*/ 并计算可以记录个数n int n,c; n=load; puts(nInput one data:n); 输入新入库物资的信息 do input(

15、n); printf_data(n); Y N 是否保存 printf(nnAre you sure?n1).suren2). cancel and againn3).back without save bb); scanf(%d,&c); N Y 是否重新输入 if(c=1)save(n+1);printf_back; else if(c=3)menu; 结束 while(c=2); min_s,&proi.real_s,&proi.max_s); 图新物资入库模块 4.领料模块 lend/*领料模块*/ int j,n; n=load; printf(nPlease check the p

16、roducts data you lend!); printf(nname(1-20letter) size(1-4letter) date amountn); scanf(%s%s%d.%d.%d%d,&check.p_name,&check.size,&check.l_date.year,&check.l_date.month,&check.l_date.day,&check.total); for(j=0;jn;j+) if(strcmp(check.p_name,proj.p_name)=0)&(strcmp(check.size,proj.size)=0)&(check.l_date

17、.year=proj.in_date.year)&(check.l_date.month=proj.in_date.month)&(check.l_date.day=proj.in_date.day)&(check.total=proj.real_s) proj.real_s-=check.total; save(proj.real_s); printf_data(j); printf_back; else printf(Erro!); 5打印模块 print/*打印模块*/ int i,n; n=load; 8 for(i=0;in;i+) printf_data(i); getch; me

18、nu; 6.采用文件来存储数据信息 #include save(int n) FILE*fp; int k; if(fp=fopen(pro.dat,wb)=NULL) printf(nCannot open file!n); return NULL; for(k=0;kn;k+) if(prok.real_s!=0) if(fwrite(&prok,sizeof(struct product),1,fp)!=1) printf(文件书写错误!n); fclose(fp); load FILE*fp; int k; if(fp=fopen(pro.dat,rb)=NULL) printf(n不

19、能打开文件!n); return NULL; for(k=0;!feof(fp);k+) fread(&prok,sizeof(struct product),1,fp); fclose(fp); return(k-1); 9 五 上机操作 图物资管理系统菜单 图输入两组数据 10 图查询菜单 图按名称查询 图按进货日期查询 图按名称和规格查询 11 图新物资入库模块 图领料模块 图打印模块 12 六总结 在学习C语言这门课时,由于是第一次接触计算机的课程,而且这门课本来就很抽象,因此,上课时就觉得听不懂.上程序设计课时也是一知半解,加上设计课的时间短,所以自己也没有什么进步。 老师布置课程设

20、计后,通过不断的学习与实践,慢慢有了一些进步,自己在综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的方面有了很大的提高。当今科学技术发展日新日异,计算机应用在生活中更是无处不在。作为一个大学来说掌握计算机技术是十分重要的。 回顾这次的课程设计,我感慨良多。从题目到编程,再从编程到调试,我学到很多很多的的东西,通过这次课程设计,我懂得了学习计算机靠的是大量的上机编程调试,从中才可以不断提高编程水平。在设计的过程中,我遇到了很多问题,这毕竟第一次做的,难免会遇到过各种各样的问题,比如说结构体、调试不成功 我很高兴在我遇到困难的时候,同学们给了我很多的帮助,可以这么说,没有同学们,我

21、现在肯定还没有完成这次课程设计。在设计中遇到了很多编程问题,在同学的帮助下,最后都迎刃而解。最后,我要再次对各位同学和曹弘老师说一声,谢谢大家的帮助,谢谢! 13 附录:源程序 #include #include #define N 100 struct date int year; int month; int day; ; struct product char p_name20;/*物资名称*/ long int p_num7;/*物资编号*/ char size4;/*物资规格*/ struct date in_date;/*进货日期*/ long int max_s;/*最大库存量*

22、/ long int min_s;/*最小库存量*/ long int real_s;/*实际库存量*/ struct product *next;/*结点指针*/ proN; menu /*主函数*/ int n,w1; do puts(ttt*menu*nn); puts(ttt 1.enter new datann);/*输入数据*/ puts(ttt 2.search menunn);/*查找信息*/ puts(ttt 3.insert new datann);/*插入新数据*/ puts(ttt 4.lend datann);/*领料数据*/ puts(ttt 5.print dat

23、ann);/*打印*/ puts(ttt 6.exit);/*退出*/ puts(nttt*n); printf(Please choose the number 1-6: bb); scanf(%d,&n); if(n6) w1=1;getchar; else w1=0; while(w1=1); switch(n) case 1:enter;break; case 2:search;break; 14 case 3:insert;break; case 4:lend;break; case 5:print;break; case 6:exit(0); main menu; enter/*信

24、息输入模块*/ int i,n; printf(nHow many products do you want to input(0-%d)?:,N-1); scanf(%d,&n); printf(nEnter data now!nn); for(i=0;in;i+) printf(Please input the %dth products data:n,i+1); input(i); if(i!=0)save(n); printf_back; search/*信息查找模块*/ int n,w2; do puts(ttt*search menu*nn); puts(ttt1.search b

25、y name); puts(ttt2.search by data); puts(ttt3.search by name and size); puts(ttt4.exit); puts(nttt*n); printf(Choose the number to search 1-4: bb); scanf(%d,&n); if(n4) w2=1;getchar; else w2=0; while(w2=1); switch(n) 15 case 1:search_by_name;break; case 2:search_by_date;break; case 3:search_by_namea

26、ndsize;break; case 4:getch;menu; search_by_name/*按名称查找*/ int j,n,m=0;char a20; n=load; printf(nInput the products namenname:); scanf(%s,a); for(j=0;jn;j+) if(strcmp(a,proj.p_name)=0) m+; printf_data(j); printf(nThis is the %dth product you have searched!,m); getch; menu; struct s_date/*按日期查找*/ int y

27、ear; int month; int day; s; search_by_date int j,n,m=0; n=load; printf(nInput the date(*.*.*)ndate:); scanf(%d.%d.%d,&s.year,&s.month,&s.day); for(j=0;jn;j+) if(s.year=proj.in_date.year)&(s.month=proj.in_date.month)&(s.day=proj.in_date.day) m+; printf_data(j); printf(nThis is the %dth product you ha

28、ve searched!,m); getch; menu; search_by_nameandsize/*按名称和规格查找*/ 16 int j,n,m=0;char a20,b4; n=load; printf(nInput the products namenname:); scanf(%s,a); printf(nInput the products sizensize:); scanf(%s,b); for(j=0;jn;j+) if(strcmp(a,proj.p_name)=0)&(strcmp(b,proj.size)=0) m+; printf_data(j); printf(

29、nThis is the %dth product you have searched!,m); getch; menu; insert/*新物资入库模块*/ int n,c; n=load; puts(nInput one data:n); do input(n); printf_data(n); printf(nnAre you sure?n1).suren2).cancel and againn3).back without save bb); scanf(%d,&c); if(c=1)save(n+1);printf_back; else if(c=3)menu; while(c=2)

30、; struct l_pro char p_name20; char size4; struct date l_date; long int total; struct l_pro *next; check; lend/*领料模块*/ int j,n; n=load; 17 printf(nPlease check the products data you lend!); printf(nname(1-20letter) size(1-4letter) date amountn); scanf(%s%s%d.%d.%d%d,&check.p_name,&check.size,&check.l

31、_date.year,&check.l_date.month,&check.l_date.day,&check.total); for(j=0;jn;j+) if(strcmp(check.p_name,proj.p_name)=0)&(strcmp(check.size,proj.size)=0)&(check.l_date.year=proj.in_date.year)&(check.l_date.month=proj.in_date.month)&(check.l_date.day=proj.in_date.day)&(check.total=proj.real_s) proj.real

32、_s-=check.total; save(proj.real_s); printf_data(j); printf_back; else printf(Erro!); print/*打印模块*/ int i,n; n=load; for(i=0;in;i+) printf_data(i); getch; menu; #include save(int n) /*保存函数,保存n个记录*/ FILE*fp; int k; if(fp=fopen(pro.dat,wb)=NULL) printf(nCannot open file!n); return NULL; for(k=0;kn;k+)

33、if(prok.real_s!=0) if(fwrite(&prok,sizeof(struct product),1,fp)!=1) printf(Files read erro!n); fclose(fp); 18 load /*加载记录或可以计算记录个数的函数*/ FILE*fp; int k; if(fp=fopen(pro.dat,rb)=NULL) printf(nCannot open the file!n); return NULL; for(k=0;!feof(fp);k+) fread(&prok,sizeof(struct product),1,fp); fclose(f

34、p); return(k-1); input(int i) printf(nname(1-20letter):); scanf(%s,&proi.p_name); printf(nnumber(1-7letter):); scanf(%d,&proi.p_num); printf(nsize(1-4letter):); scanf(%s,&proi.size); printf(ndate(*.*.*):); scanf(%d.%d.%d,&proi.in_date.year,&proi.in_date.month,&proi.in_date.day); printf(min_s real_s

35、max_s:); scanf(%d %d %d,&proi.min_s,&proi.real_s,&proi.max_s); printf_data(int i) printf(nnametnumttsizetdatettmin real maxn); printf(%st%dtt%st%d.%d.%dt%d-%d-%d,proi.p_name,proi.p_num,proi.size,proi.in_date.year,proi.in_date.month,proi.in_date.day,proi.min_s,proi.real_s,proi.max_s); printf_back printf(nnSuccessful!nttThank you!n); getch; menu; 19

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号