C语言课程设计-物资管理系统.doc_第1页
C语言课程设计-物资管理系统.doc_第2页
C语言课程设计-物资管理系统.doc_第3页
C语言课程设计-物资管理系统.doc_第4页
C语言课程设计-物资管理系统.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

计算机高级语言课程设计(c)题目: 物资管理系统设计 姓 名: 学号: 院(系): 专业: 指导教师: 2010 年 08 月摘 要【题目】:物资管理系统设计【实习时间】:2010-8-28到2010-9-4【问题描述】物资管理系统问题的描述:通过程序实现对物资的输入、信息查询、数量的修改及增加等的管理。【基本要求】1 主程序中,应提供文字交互菜单界面。要求包含以下几个功能模块。 2 信息输入模块input():建立物资管理数据总文件,完成对物资原库存信息的录入,并将其存放到指定文件(如:pro.dat)中。 3 信息查找模块search(): 采用如下方式进行查找,若找到,则输出该物资的相关信息;否则,输出提示信息(如:not found!)。 1)按产品名称查询; 2)按进货日期查询并统计(统计某年某月进的某种产品的数量,产品的种类); 3)按产品名称和规模查询并统计; 4 新物资入库模块insert():在原数据文件中插入新物资信息。 5 领料模块lend():查找所领取物资信息,若满足领料的要求,请登记领取物资名称,领料的日期,所领数量(领料后对库存的修改)。 6 打印功能模块print(): 1) 打印领料单 。2) 打印物资库存清单。 目 录 1需求分析11.1系统功能11.2性能描述:12设计12.1总体设计12.1.1设计思想12.2 模块设计22.2.1过程或函数调用关系图(流程图)22.2.2模块接口说明32.3程序算法及函数的功能实现43调试分析74测试结果74.1主函数的调试74.2数据录入函数的调试74.3物品信息的修改84.3.1按时间查找84.3.2按名称查找94.4物品信息注浏览94.5新增物品信息105程序源代码116总结207致谢218参考文献22中国地质大学c程序课程设计 物质信息管理系统1需求分析1.1系统功能:具有信息输入功能,能建立物资管理数据总文件,完成对物资原库信息的录入,并将其存放到制定文件中;物资的修改功能,能对物资的相关属性进行修改;物质信息的浏览功能,能查询全部的物质的信息;可采用如下方式进行查找相关的物质;按产品名称查询;按进货日期查询并统计(统计某年某月进的某种产品的数量,产品的种类);按产品名称和规模查询并统计;在新物质入库时能在原数据文件中插入新物资信息;用文件的形式将录入的数据进行存储,并从其中读取数据。1.2性能描述:程序的各种功能基本可以满足,能对物资进行较好的管理,不易出错。程序相对较小,因而运行时反应比较迅速,不存在响应不及时地问题。2设计2.1总体设计2.1.1设计思想(1)数据结构根据对象的信息和数据形式,数组必须采用结构体的形式出现。结构类型的层次结构如下:图2-1结构体示意图物品的编号num物品的名称name物品白的尺寸size时间time数量amount结构体的具体形式:struct product char num100; char name15; char size4; char time10; char amount20; productn(2)文件结构程序运行产生文件pro.txt,它是用来存储物品的个关信息方便后面调用。(3)基本思想利用数据结构体将每个物品的信息放在一个结构体中,方便后面的调用和管理。将程序中的各个功能需要多次使用的操作(比如表头的输出、数据的输出)都采用子函数的形式,使程序更简洁。程序中的每个功能都分别建立模块,在主程序中能方便的对各个模块进行调用,同时在各个模块之间互相调用。采用简单易用的界面,方便便用。2.2 模块设计2.2.1过程或函数调用关系图(流程图)对系统进行分析,给出结构图开始主程序物资查询模块数据修改模块数据录入模块数据浏览模块数据添加模块退出图2-2程序结构图(2)各模块流程图, 函数之间相互调用的图示 主函数输入模块浏览函数更新函数查询函数插入函数删除函数修改函数按时间按名称结束结束结束结束添加函数结束图2-3 函数调用图2.2.2模块接口说明为了使程序易读方便修改,程序的各种功能是通过模块来实现;同时对不只一次用到的操作采用子函数避免同一个操作的代码反复的出现,各个模块和子函数的作用如下:enter ()用于录入物品的信息到指定文件browse()用于浏览物品信息add()用于新物品信息的增加search()用于从指定文件读取物品的信息modify()用于修改某个已有物品的信息save()用于对物品信息的存档load()用于对也已有物品信息的载入input()用于对物品信息的录入modify_data()用于对物品信息的具体修改no_input()用于对物品信息缟号printf_face()用于输出物品信息的表头printf_one()用于输出物品的具体的信息printf_back()用于提示操作成功后的操作选择2.3程序算法及函数的功能实现程序的各个功能的实现的算法可以采用用以下的流程图表示:(1)数据录入模块的流程图输入要录入的物品的数量调用input函数i=0?开始调用save函数调用save函数调用printf_back函数图2-4 数据录入流程图(2)数据添加模块的流程图调用返回函数printf_back开始调用录入函数input输入要添加的数量mm=0?图2-5 物品信息添加流程图(3)物品信息查找模块的流程图开始输入m值m=1或m=2?输入时间输入名称存在?存在?选择操作输出函数输出函数图2-6物品信息查询流程图(4)物品信息修改模块开始输入物品号曲物品存在?输出原数据保存主函数修改函数继续?图2-7 物品信息修改流程图(5)物品信息浏览模块开始调用数据函数printf_one调用读取函数load调用表头函数printf_face结束图2-8 物品信息浏览流程图2.4, 算法设计 程序源代码#include void menu() int n,w1; do /程序功能的选择/ printf(tt * choose function *nn); printf(tt * 1 enter new data *nn); printf(tt * 2 modify data *nn); printf(tt * 3 search by pro.date and namenn); printf(tt * 4 browse data *nn); printf(tt * 5 add data *nn); printf(tt * 6 exit *nn); printf(choose your number(1-6): bb); scanf(%d,&n); if(n6) w1=1; else w1=0; while(w1=1); switch(n) case 1:enter();break; /调用数据录入函数/ case 2:modify();break; /调用数据修改函数/ case 3:search();break; /调用数据查找函数/ case 4:browse();break; /调用数据浏览函数/ case 5:add();break; /调用数据添加函数/ case 6:exit(0); main() menu(); #define n 100 /定义数据结构体/ struct product char num100; char name15; char size4; char time10; char amount20; productn; # include enter() /物质的信息的录入模块/ int i,n; printf(how many products(0-%d)?:,n-1); scanf(%d,&n); printf(n enter data nownn); for(i=0;in;i+) printf(n input %dth product record.n,i+1); input(i); /调用数据的录入函数/ if(i!=0)save(n); /调用数据写入函数将建立的物品信息写入指定的文件/ printf_back(); browse() /物质的信息的浏览模块/ int i,j,n; n=load(); printf_face(); /调用表头函数/ for(i=0;in;i+) if(i!=0)&(i%10=0) printf(nnpass any key to continue .); getch(); puts(nn); printf_one(i) ; /调用数据函数/ printf(tthere are %d record.n,n); printf(npass any key to back .); getch(); menu(); add() /新物质的信息的建立模块/ int i,n,m,k; file*fp; n=load(); printf(how many products are you want to add(0-%d)?:,n-1-n); scanf(%d,&m); k=m+n; for(i=n;ik;i+) printf(ninput %dth product record.n,i-n+1 ); input(i); /数据的录入函数/ if(fp=fopen(pro.txt,ab)=null) printf(cannot open filen); for(i=n;ik;i+) if(fwrite(&producti,sizeof(struct product),1,fp)!=1) printf(file write errorn); fclose(fp); printf_back(); /调用返回函数/ search() /物质的信息的查询模块/ int i,n,k,w1=1,w2,w3,w4,m,a; struct product p; n=load(); do printf(nnwhich way do you want to choose? nt1).by time 2).by name bb); scanf(%d,&m); switch(m) case 1: do k=-1; printf(nnenter time that you want to search! time.); scanf(%s,p.time); printf_face(); for(i=0;in;i+) if(strcmp(p.time,producti.time)=0) k=i; printf_one(k);break; if(k=-1) printf(nnno exist!please); printf(nnare you again?nt1).again 2).no and back bb); scanf(%d,&w1); if(w1=2) printf_back(); while(k=-1&w1=1);break; case 2: do k=-1; printf(nnenter name that you want to search! name.); scanf(%s,); printf_face(); /输出表头/ for(i=0;in;i+) if(strcmp(,p)=0) k=i; printf_one(k);break; if(k=-1) printf(nnno exist!please); printf(nnare you again?nt1).again 2).no and back bb); scanf(%d,&w1); if(w1=2) printf_back(); while(k=-1&w1=1);break; w4=0;w3=0; if(k!=-1) printf(nnwhat do you want to do?nt 1).search 2).modify 3).delete 4).back menu bb); /对查找的数组操作/ scanf(%d,&w2); switch(w2) case 2:w3=modify_data(k,n);break; case 3:printf(nare you sure?nt 1).sure 2).no and back bb); scanf(%d,&w4); if(w4=1) for(a=k;an;a+) strcpy(producta.num,producta+1.num); strcpy(p,producta+1.name); strcpy(producta.size,producta+1.size); strcpy(producta.time,producta+1.time); strcpy(producta.amount,producta+1.amount); break; if(w3=1|w4=1) save(n); printf(nnsuccessful._.); printf(nnwhant do you want to do? nt 1).search another 2).back bb ); scanf(%d,&w2); while(w2=1); /回到主程序/ menu(); modify() /物质的信息的修改模块/ struct product p; file *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do k=-1; printf_face(); for(i=0;in;i+) if(i!=0)&(i%10=0) printf(nnremember no.which needed modify.pass any key to contiune .); getch(); puts(nn); printf_one(i); do printf(nnenter no.that you want to modify! no.:); scanf(%s,p.num); for(i=0;in;i+) if(strcmp(p.num,producti.num)=0) k=i; p=producti; if(k=-1)printf(nnno exist!please again); while(k=-1); printf_face(); /调用表头函数输出表头/ printf_one(k); /调用数据输出函数输出对应的数据/ w1=modify_data(k,n); /调用数据的修改的函数/ if(w1=1) printf(nsuccessful .nnare you modify another ?nnt 1).yes 2).back with savet bb); /继续修改或保存返回/ scanf(%d,&w0); w2=1; else w0=0; if(w2=1) productk=p; if(w0!=1&w2=1) save(n); /对修改的信息保存/ while(w0=1); /回到主程序/ menu(); save(int n) /保存函数/ file *fp; int i; if(fp=fopen(pro.txt,wb)=null) printf(ncannot open filen); return null; for(i=0;inn 1).num 2).name 3).size 4).time 5).amount ); printf(which you needed?: bb); scanf(%d,&c); if(c5|c5|c9) puts(input error!only be made up of(0-9).please reinput!n); w1=1;break; if(w1!=1) for(k=0;kn;k+) if(k!=i&strcmp(productk.num,producti.num)=0) puts(this record is exist.please reinput!n); while(w1=1); printf_face() /输出物品数据的表头函数/ printf(nnum name size time amount n); printf_one(int i) /输出物品数据的数值函数/ int j; printf(%7s%7s%7s%10s%12sn,producti.num,p,producti.size,producti.time,producti.amount); printf_back() /操作成功后的操作的动作选择函数/ int j,w; printf(nntsuccessful._nn); printf(what do you want to do?nnt1).browse all nowt2).back: bb); scanf(%d,&w); if(w=1) browse(); else menu(); 3调试分析(1)优点分析(a)程序的设计主要采用了模块化的设计,使个各个功能部分的功能比较容易区分。(b)本程序的各个模块之间可以相互的调用使程序的各个部分功能之间可以快速的转换。(c)程序采用简单易用的用户界面,方便使用。(2)缺点分析(a)开始的时程序较少的采用子函数,造成了同一个操作段的代码在各个模块中使用时反复的出现,使程序的易读性不够。(c)程序也不够简洁,程序本身很长。(3)改进的方法对反复出现的操作将其采用子函数的形式,在要进行所对应的操作的时候直接调用子函数就可以了。4.使用手册(1)数据的输入 运行程序进入选择菜单在数字键盘中输入16中的一个数字,当在进行物资录入时其no,num,等需要录入数字信息,mane,size, amount等可以录入数字字母等,其他按提示给出的操作。(2)各个功能及用法 先将程序运行,方框内有6个选项,首先选择1或5选项录入要储存的物资信息,按照要求将物资信息输入程序。输入完成后会出现“what do you want to do?:1)browse all now, 2).back”再选择你所需的功能选项,选择2可以进入初始时的页面。选项2可以对需要修改的信息进行修改;选项3可以进行查询:1按时间查询,2按名字查询;选项4为浏览功能,能够对所有的物资进行查看;选项5为增加物资栏,按提示进行物品添加。5测试结果5.1主函数的调试图5-1 主函数的调试5.2数据录入函数的调试图5-2 物品信息的录入5.3物品信息的修改图5-3 物品信息的修改5.3.1按时间查找图5-4

温馨提示

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

评论

0/150

提交评论