版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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物资管理系统一 题目要求请设计一个物资管理系统,要求主程序中应提供文字交互菜单界面,要求包含以下几个功能模块: 信息输入模块input():建立物资管理数据总文件,完成对物资原库存信息的录入,并存放到指定文件中(pro.dat) 信息查找模块s
2、earch():采用如下方式进行查找,若找到,则输出该物资的相关信息;没有则给出提示信息。()按产品名称查询()进货日期查询并统计。()按产品名称和规格查询并统计。 新物资入库模块insert():在原数据文件中插入新物资的信息。 领料模块lend():查找所领取物资的信息,满足领料的要求,请登记领取物资名称,日期,数量(领料后修改) 打印功能模块printf()(1)打印领料单()打印物资库存清单。【提示】建立如下结构体:struct dateint year ;int month ; int day;struct productchar p_name20;物资名称long int p_nu
3、m7;物资编号char size4;物资规格struct date in date;进货日期 long int max_s;最大库存量long int min_s;最小库存量long int real_s;实际库存量struct product*next;结点指针struct l_prochar p_name 20;物资名称 struct date l_date;领料日期 long int total ;领料数量 struct l_pro*next;结点指针;二 需求分析根据题目要求,由于物资信息是存放在文件中,所以提供文件的输入,输出等操作在程序中需要浏览物资的需要浏览物资信息,应提供显示,
4、查找等操作;另外还应提供键盘选择菜单实现功能选择。三 总统设计根据上面的分析及题目要求可以分为以下六个模块。物资管理系统商品种类输入商品查询模块商品信息输入商品领取模块打印商品信息系统推出 图(1)系统模块图四 详细设计(1)主函数:主函数一般是设计简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其中流程图如图(2) menu() /*主函数*/ int n,w1;do puts(ttt*menu*nn); puts(ttt 1.enter new datann);/*输入数据*/ puts(ttt 2.search menunn);/*查找信息*/ puts(ttt
5、 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();break; case 3:i
6、nsert();break; 输入n,判断m 是否是1到6?开始 case 4:lend();break; case 5:print();break; n case 6:exit(0); y显示一系列功能选项main() menu();根据n值调用各功能模块函数 结束 (2)各功能模块设计 图(2)主函数流程图1信息输入模块:主要是为了输入商品类型,名称,数量,型号,日期,最大,最小,真实库存量,并存放在指定的文件(pro.dat)中。enter()/*信息输入模块*/开始int i,n; printf(nhow many products do you want to input(0-%d)
7、?:,n-1); scanf(%d,&n);输入用户要输入学生记录的个数n printf(nenter data now!nn); for(i=0;in;i+) printf(please input the %dth products data:n,i+1);i从0到n1调用输入函数input(i) input(i); if(i!=0)save(n); printf_back();i!=0吗?yninput(int i) printf(nname(1-20letter):);返回主菜单 scanf(%s,&proi.p_name);保存调用函数save(n) printf(nnumber(1
8、-7letter):); scanf(%d,&proi.p_num); printf(nsize(1-4letter):);结束 scanf(%s,&proi.size); printf(ndate(*.*.*):); 图(3)信息输入模块 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);printf_data(int i) prin
9、tf(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 n,w2; do
10、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();选择查询模式:1。按名称查找2。按日期查找3。按名称和规格查找 else w2=0; while(w2=1); switch(n) case
11、 1:search_by_name();break; case 2:search_by_date();break; case 3:search_by_nameandsize();break; 是否找到 case 4:getch();menu(); yn提示没有找到显示找到的记录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+)图(4)查找模块 if(strcmp(a,proj.p_name)=0
12、) 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_date.
13、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();开始menu();调用加载函数n=load()并计算可以记录个数n3新物资入库模块 insert()/*新物资入库模块*/int n,c;输入新入库物资的信息 n=load(); puts(ninput one data:n); do是否保存 in
15、put(n); printf_data(n);yn printf(nnare you sure?n1).suren2).cancel and againn3).back without save bb);是否重新输入 scanf(%d,&c);ny结束 if(c=1)save(n+1);printf_back(); else if(c=3)menu(); while(c=2);min_s,&proi.real_s,&proi.max_s); 图(5)新物资入库模块4.领料模块lend()/*领料模块*/int j,n; n=load(); printf(nplease check the pr
16、oducts 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.ye
17、ar=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(); for(i=0;in;i+) printf_data(i); getch(); me
18、nu();6.采用文件来存储数据信息#includesave(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);五 上机操作图(6)物资管理系统菜单图(7)输入两组数据图(8)查询菜单图(9)按名称查询图(10)按进货日期查询图(11)按名称和规格查询图(12)新物资入库模块图(13)领料模块图(14)打印模块六总结在学习c语言这门课时,由于是第一次接触计算机的课程,而且这门课本来就很抽象,因此,上课时就觉得听不懂.上程序设计课时也是一知半解,加上设计课的时间短,所以自己也没有什么进步
20、。老师布置课程设计后,通过不断的学习与实践,慢慢有了一些进步,自己在综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的方面有了很大的提高。当今科学技术发展日新日异,计算机应用在生活中更是无处不在。作为一个大学来说掌握计算机技术是十分重要的。回顾这次的课程设计,我感慨良多。从题目到编程,再从编程到调试,我学到很多很多的的东西,通过这次课程设计,我懂得了学习计算机靠的是大量的上机编程调试,从中才可以不断提高编程水平。在设计的过程中,我遇到了很多问题,这毕竟第一次做的,难免会遇到过各种各样的问题,比如说结构体、调试不成功 我很高兴在我遇到困难的时候,同学们给了我很多的帮助,可以这么说,
21、没有同学们,我现在肯定还没有完成这次课程设计。在设计中遇到了很多编程问题,在同学的帮助下,最后都迎刃而解。最后,我要再次对各位同学和曹弘老师说一声,谢谢大家的帮助,谢谢!附录:源程序#include#include#define n 100struct dateint year; int month; int day;struct productchar p_name20;/*物资名称*/ long int p_num7;/*物资编号*/ char size4;/*物资规格*/ struct date in_date;/*进货日期*/ long int max_s;/*最大库存量*/ long
22、 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 datann);/
23、*打印*/ 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; case 3:insert();break; case 4:lend();break; case 5:print();break; case 6:exit(0); main() menu();ent
24、er()/*信息输入模块*/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.
25、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; while(w2=1); switch(n) case 1:search_by_name();break; case 2:search_by_date();break; case 3:sear
26、ch_by_nameandsize();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
27、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_date.year)&(s.month=proj.in_date.month)&(s.day=proj.in_date.day) m+; printf_data(j); printf(nthis is the
28、 %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 sizensize:); scanf(%s,b); for(j=0;jn;j+) if(strcmp(a,proj.p_name)=0)&(strcmp(b,proj.size)=0) m+; pr
29、intf_data(j); printf(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(); e
30、lse if(c=3)menu(); while(c=2);struct l_prochar p_name20; char size4; struct date l_date; long int total; struct l_pro *next;check;lend()/*领料模块*/int j,n; n=load(); 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_n
31、ame,&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.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!);print()/*打印模块*/int i,n; n=load(); for(i=0;in;i+) printf_data(i); getch(); menu();#includesave(int n) /*保存函数,保存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡下年工作计划例文
- 交警个人半年工作计划范文书
- 区就业服务管理局年度工作总结暨工作计划
- 《财产税行为税》课件
- 2024村卫生室工作计划例文
- 人教版小学五年级第九册语文教学计划
- 董事长秘书工作计划
- XX-2021第二学期学校德育工作计划
- 道德工作计划集合
- 咖啡店商业计划书
- 多场耦合完整版资料课件
- 2022年勿忘国耻吾辈自强纪念12.13国家公祭日PPT
- 重医大临床麻醉学教案23腹部外科与泌尿外科手术的麻醉
- 六年级上册数学课件-6.13 稍复杂的百分数实际问题丨苏教版 (共18张PPT)
- 物理化学课件第8章表面化学
- 脑卒中诊疗、护理与防治考核题库与答案
- 《管理学》课程思政教学案例(一等奖)
- 复配生产安全操作规程
- 中医适宜技术推广督灸(课堂PPT)
- 孵化问题分析
- 学校工程验收报告单
评论
0/150
提交评论