物资管理系统.doc

上传人:牧羊曲112 文档编号:2791353 上传时间:2023-02-25 格式:DOC 页数:32 大小:392KB
返回 下载 相关 举报
物资管理系统.doc_第1页
第1页 / 共32页
物资管理系统.doc_第2页
第2页 / 共32页
物资管理系统.doc_第3页
第3页 / 共32页
物资管理系统.doc_第4页
第4页 / 共32页
物资管理系统.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《物资管理系统.doc》由会员分享,可在线阅读,更多相关《物资管理系统.doc(32页珍藏版)》请在三一办公上搜索。

1、精选优质文档-倾情为你奉上青岛理工大学琴岛学院设 计 报 告课题名称:物资管理系统学 院:青岛理工大学琴岛学院专业班级:嵌入式技术与应用14-1班学 号:学 生: 指导教师: 青岛理工大学琴岛学院教务处 年 月 日学 生指导教师课题名称物资管理系统设计时间设计地点8-212设计目的1. 使学生加深对讲授知识的理解、能够综合应用数组、函数、结构体、指针、文件等知识解决实际问题;2. 培养学生独立调试程序的能力,团队协作的能力;3累积编程经验,书写设计报告的规范,为编写项目打下良好基础。指导教师评 语系部教研室意 见一、选题背景及意义物资管理是一般工业、商业企业生产管理环节中重要的一环,需要对物资

2、基本信息管理、物资调配信息等进行完整的监控。物资入库首先要登记物资的基本信息,包括物资的种类、名称、型号、单位、单价等;然后登记物资入库信息,包括物资基本信息、入库地点、入库人、经办人、数量等;根据物资的入库、出库过程的综合,得到各种物资的余额信息,方便进行后续工作。因此物资管理信息系统需要纪录物资流通的全过程。 加强物资管理,不但有算得出、看得到的效益,还可以大大提高管理队伍的素质,加强职工的增产节约意识、爱护财产意识和学习科技的意识,使科学管理形成共识,并可以减少物资设备各个环节上的矛盾。信息已成为继劳动力、土地、资本之后的又一大资源。谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各

3、方面的竞争中占有一席之地,谁就会有更多的优势。物资供应部门是企业与生产单位之间的桥梁、纽带,是企业正常生产的物资保障部门。正因为供应部门是关键的中转环节,建立一套物资管理信息系统对于如何有效的把本单位生产所需的生产资料及时、保质保量的供应上去,有着重要的意义。从微观上讲,建立一套物资管理信息系统能够加快物资的周转速度,提高生产效率,从而加强了管理的信息化手段,提高了本单位的经济效益。从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。目前存在的主要问题是:(一)根据各三级单位所报材料明细逐个与库存账本对照查阅,进行库平,即库中有其所需材料则开据料单从库中领取,若库中无,则

4、通知采购人员采购。库中物资种类繁多,查对繁琐,易出错。(二)从开据发料单到每月结帐、清册都是手工操作,计算器加算盘,效率低且准确率不高。单位配备的计算机仅局限于打字,做报表,不能开单据,计算机应有的功能没有充分发挥。所以想设计个系统来提高工作效率,为学校、企业节省大部分开支用来投资系统的开发,这样以来节省了人力物力,也节省了资源的消耗,实现了低碳发展。二、需求分析学校的计算机不仅可以安装Windows和UNIX的运行环境,而且有足够的空间可以安装运行平台JAVA虚拟机、数据库ORACLE、服务器TOMCAT和各类编程工具例如ECLIPSE,NETBEANS,在编程环境上提供了可靠的支持;我们编

5、程人员方面,可以运用以前所学的各种开发软件的计算机知识和管理知识,加上不断的学习,为系统的开发提供了必要的技术保障。我们就应用了JAVA EE企业级开发框架以及ORACLE 数据库系统软件。根据系统功能、性能及实现系统的各项约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术以较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发。系统的效益可以从经济效益和社会效益两方面考虑。对于物资管理系统则应着重分析其社会效益。例如,系统投

6、入运行后可以使物资管理实现科学化、规范化。增强了工作人员对物资管理能力、提高了工作效率。企业间的竞争说到底是人的竞争,但人力资源是企业中最难管理的资源,它涉及到企业的组织机构、企业文化、人的心理等方方面面;从强调对物的管理转向对人的管理,是企业管理的一个划时代的进步。如何刻意挖掘蕴藏在员工当中的巨大能力,发掘充满活力和生机的人力资源,将人视为可以开发和增值的资源去投资和经营,是当前企业急需解决的课题。 传统的人事管理对人力资源的管理是非量化的,是人事部门最基础业务的信息管理;而真正的人力资源管理系统将人力资源管理过程数字化,并结合知识管理、办公自动化、项目管理等技术,将人力资源管理提升到战略级

7、别的管理层次,是一个针对企业人力资源的设计系统。 通过以上从技术、经济、实践三方面的研究与调查,我们可以确定该物资管理系统是可行的。三、概要设计1、数据库设计本系统中主要涉及数据表如下:物资信息表:主要包含编号、物资名称、单价、数量等字段。其具体表结构如图所示:物资信息表字段名字段类型字段宽度字段说明num字符型10编号name字符型20物资名称price数值型5单价count数值型5数量total数值型20总金额2、系统功能模块概述本系统能够实现一个人机交互,操作简单的物资管理系统,主要分为两个用户角色,用户和物资,主要功能如图所示:输入指令06开始输入记录修改记录查找记录统计记录删除记录排

8、序记录退出系统 系统功能模块图各功能模块描述如下:(1)输入记录:本模块主要完成物资记录的输入,主要包含编号、名称、单价和数量,在输入过程中要注意各个字段的类型,并且要进行数据的合法性验证。(2)查找记录:主要用来查找物资的信息,该模块能够通过物资编号来查找物资记录信息。(3)删除记录:通过物资编号来进行删除物资信息。(4)修改记录:通过编号修改物资信息。(5)排序记录:按总金额进行排序。(6)统计记录:统计物资数量。(0)退出系统。四、详细设计 (一) 主函数一般是设计简洁,只提供输入,处理和输出部分的函数调用。 (1) /*商品结构体*/struct commdityint num; /编

9、号char name20;/商品名称double price;/单价double count;/数量double total;/总金额 ;struct commdity comm50;/定义结构体数组(2)/*函数申明*/void in();/输入物资信息函数void show();/显示物资信息函数void order();/按总金额排队函数void del();/删除物资信息函数void modify();/修改物资信息函数void menu();/主菜单函数void total();/统计总物资数函数void search();/查找物资信息函数(5)/*主函数*/void main()

10、 int n;menu();scanf(%d,&n);while(n)数据类型case 1:in();/输入物资信息break;case 2:search();/寻找物资信息break; case 3:del(); /删除物资信息break;case 4:modify();/修改物资信息break;case 5:order();/排序物资break;case 6:total();/统计物资数量break;default:break;getch();menu();/返回菜单界面scanf(%d,&n);return ;(二)各功能模块设计(1)/菜单模块void menu()system(CLS

11、);/清屏函数printf(nnnnn);printf(tt|*物资管理系统*|n);printf(tt|t 1 输入记录 |n);printf(tt|t 2 查找记录 |n);printf(tt|t 3 删除记录 |n);printf(tt|t 4 修改记录 |n);printf(tt|t 5 排序记录 (按总金额) |n);printf(tt|t 6 统计记录 |n);printf(tt|t 0 退出系统 |n);printf(tt|*|n);printf(ttt 选择(0-6):);(2)/显示模块/基本流程,先把文件中的数据依次读入到物资结构体中,/并依次显示void show() F

12、ILE *fp; int i,m=0; fp=fopen(data.txt,a+); while(!feof(fp)if(fread(&commm ,LEN,1,fp)=1) m+; fclose(fp); printf(编号 物资名称 单价 数量 总金额tn); for(i=0;im;i+) printf(FORMAT,DATA);/将信息按指定格式打印(3)/查找记录模块/本模块的流程是先打开文件并读取里面的数据到物资结构体数组缓冲区中/用户输入编号与物资结构体中缓冲区的数据进行比较,如果有则显示,没有则输出提示信息void search()FILE *fp;int num,i,m=0;c

13、har ch2;/以追加 和写的方式打开文件if(fp=fopen(data.txt,a+)=NULL)printf(不能打开文件!n);return ;/把文件中的数据依次读入到结构体中,并关闭文件while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/如果没有记录,则返回,否则执行显示操作if(m=0)printf( 没有记录!n);return;else/用户输入编号 printf(请输入编号:);scanf(%d,&num);/用循环语句来比较用户输入的编号是否存在for(i=0;im;i+)if(num=commi.num)

14、printf(已经找到该记录,是否显示?(y/n));scanf(%s,ch);if(strcmp(ch,y)=0|strcmp(ch,Y)=0)printf(编号 物资名称 单价 数量 总金额tn);printf(FORMAT,DATA);break;elsereturn;/如果上面的循环语句执行完都没有找到 ,则会执行本判断语句if(i=m)printf(没有找到相关记录!n);(4)/删除物资模块/本模块的流程为先打开文件,并把数据写到物资结构体数组缓冲区中去/用户输入相关编号与结构体数组中的数据相比较,如果存在则把结构体数组缓冲区进行修改/把修改后的结构体数组缓冲区再次写入文件void

15、 del()FILE *fp;int num,i,j,m=0;char ch2;/以追加和读的方式打开文件if(fp=fopen(data.txt,a+)=NULL)printf(不能打开文件n);return;/把文件中的内容依次写到物资结构体数组中,并记录信息条数,最后关闭文件while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/根据物资信息条数进行相应的处理if(m=0)printf(没有记录!n);return;else /用户输入编号printf(请输入编号:);scanf(%d,&num);/用循环语句来比较是否有用户输

16、入的记录for(i=0;im;i+)if(num=commi.num)break;/没找到用户需要的记录则返回if(i=m)printf(没有找到相关记录);getchar();return;/找到用户需要的记录,要求用户输入选择printf(该记录已经找到,是否删除?(y/n)); scanf(%s,ch);if(strcmp(ch,y)=0|strcmp(ch,Y)=0) for(j=i;jm;j+)/从找到的记录起,依次把他后面的数据覆盖前面的数据commj=commj+1;m-;/记录条数减一个printf(成功删除!n);/以写的方式打开文件if(fp=fopen(data.txt,

17、w)=NULL)printf(不能打开n);return;/把物资结构体数组中的数据依次写入文件for(j=0;jm;j+)if(fwrite(&commj,LEN,1,fp)!=1) printf(保存出错!n);return;printf(保存成功!n);fclose(fp);(5)/统计模块void total() FILE *fp;int m=0;/以追加和读的方式打开一个文件if(fp=fopen(data.txt,a+)=NULL)printf( 不能打开文件n);return;/把文件中的内容依次写入缓冲区,统计记录条数,并关闭文件while(!feof(fp) if(fread

18、(&commm,LEN,1,fp)=1)m+;fclose(fp);/根据记录条数做出相应选择if(m=0)printf(没有记录n);return;printf(共有%d条记录n,m);五、运行与测试1、系统主界面2、对物资信息的输入3、对物资信息的查找4对物资信息的删除5、对物资信息的修改6、对物资信息排序7、对物资信息统计六、遇到的问题及解决办法1、书写标识符时,忽略了大小写字母的区别。解决办法;编译程序把C和c认为是两个不同的变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同的字符。2、书写标识符时,忽略了中英文标点符号的不同,而显示错误。C语言不读取中文标点符号报错。3、

19、忽略了变量的类型,进行了不合法的运算。解决办法;%是求余运算,得到a/b的整余数。4、在编写程序是,消耗内存较大。解决方法:编写程序是,打开一个文件夹后,编辑完一定要紧跟着关闭文件夹,否则打开的文件夹都会占用内存5、在编程当中,由于要输入大量的程序,所以经常出现很多不让人注意的小错误。 例如大小写 int写成Int.总 结这个系统实现了,对简单的物资进行管理,例如:输入物资信息,修改物资信息,删除物资信息,对物资信息进行排序等等,大大提高了我们的办公效率,节省了人力物力,向绿色经济的方向靠近。对于这个系统还有很不不足之处,例如:给有给系统设置开启密码、排序后无法显示排序后的物资列表等等,希望在

20、以后的学习中,不断改进、完善这个系统。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。回顾起此次课程设计,至今我仍感慨颇多,的确从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学

21、的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢在课程设计过程中,我学到了很

22、多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?谢谢老师的那句话,她说:人力有所不能及,然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心

23、人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。谢谢给我指点迷津的老师。我们的课程设计结束了,但是它留给我的印象是不可磨灭的。无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。参考书目:1 谭浩强,C语言程序设计(第四版)M,清华大学出版社,2008年2 赵克林,C语言实例教程重庆:西南师范大学出版社,20063 杨正校,C语言程序设计南京:河海大学出版社,20084 谢乐军,C

24、语言程序设计及应用北京:冶金工业出版社,2004源代码/库文件包含#include/输入输出函数库#include/常用错误控制程序库#include/调用dos控制台i/o库#include/msdos和8086调用的一些常量和函数库#include/串操作和内存操作函数库/宏定义#define LEN sizeof(struct commdity)#define FORMAT %-8d%-15s%-12.1lf%-12.1lf%-12.1lf%n#define DATA commi.num,commi.name,commi.price,commi.count,commi.total/物资结

25、构体struct commdityint num; /编号char name20;/物资名称double price;/单价double count;/数量double total;/总金额 ;struct commdity comm50;/定义结构体数组/函数申明void in();/输入物资信息函数void show();/显示物资信息函数void order();/按总金额排队函数void del();/删除物资信息函数void modify();/修改物资信息函数void menu();/主菜单函数void total();/统计总物资数函数void search();/查找物资信息函

26、数/主函数void main() int n;menu();scanf(%d,&n);while(n)switch(n)/问题switch()中的数据类型是什么?答案:是常量表达式,可以是任何数据类型case 1:in();/输入物资信息break;case 2:search();/寻找物资信息break; case 3:del(); /删除物资信息break;case 4:modify();/修改物资信息break;case 5:order();/排序物资break;case 6:total();/统计物资数量break;default:break;getch();menu();/返回菜单界

27、面scanf(%d,&n);return ;/被调函数体/菜单模块void menu()system(CLS);/清屏函数printf(nnnnn);printf(tt|*物资管理系统*|n);printf(tt|t 1 输入记录 |n);printf(tt|t 2 查找记录 |n);printf(tt|t 3 删除记录 |n);printf(tt|t 4 修改记录 |n);printf(tt|t 5 排序记录 (按总金额) |n);printf(tt|t 6 统计记录 |n);printf(tt|t 0 退出系统 |n);printf(tt|*|n);printf(ttt 选择(0-6):)

28、;/输入信息模块/基本的流程为先判断是否存在记录,/若存在则读到物资结构体中,并显示之。/ 根据用户选择在文件后面输入记录void in()int i,m = 0;char ch2;FILE *fp;/以读写可追加的方式打开文件,如果不存在则新建文件if(fp = fopen(data.txt,a+)=NULL)printf(不能打开文件!n);return; /读取文件到物资结构体数组中,直到全部读取完毕while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/判断读取的数量,如果为0则表示没有相关记录,反之显示记录if(m = 0)

29、printf(没有找到记录!n);else system(CLS);show(); /以输入的方式打开 if(fp=fopen(data.txt,a)=NULL) printf(不能打开文件!n);return; printf(是否输入?(y/n):); scanf(%s,ch); while(strcmp(ch,Y)=0|strcmp(ch,y)=0)/判断是否要输入新信息printf(编号:);scanf(%d,&commm.num);/输入物资编号for(i=0;im;i+) if(commi.num = commm.num)printf(该记录已经存在,按任意键继续!);getch()

30、;fclose(fp);return;printf(物资名:);scanf(%s,commm.name); /输入物资名称printf(单价:);scanf(%lf,&commm.price); /输入物资单价printf(数量:);scanf(%lf,&commm.count); /输入物资数量commm.total=commm.price * commm.count; /计算出总金额if(fwrite(&commm,LEN,1,fp)!=1) /将新输入的信息写入指定的磁盘文件printf(不能保存!); getch(); else printf(%s 已经保存!n,commm.name)

31、;m+;printf(是否继续?(y/n):);/询问是否继续scanf(%s,ch); fclose(fp); printf(OK!n);/显示模块/基本流程,先把文件中的数据依次读入到物资结构体中,/并依次显示void show() FILE *fp; int i,m=0; fp=fopen(data.txt,a+); while(!feof(fp)if(fread(&commm ,LEN,1,fp)=1) m+; fclose(fp); printf(编号 物资名称 单价 数量 总金额tn); for(i=0;im;i+) printf(FORMAT,DATA);/将信息按指定格式打印/

32、排序模块/基本流程,先把文件中的数据读到物资结构体数组缓冲区中,/然后进行冒泡排序,/最后写入文件,/在关闭文件void order() FILE *fp; struct commdity t;/用来作为交换时的中间变量 int i=0,j=0,m=0;/以输入,读写的方式打开文件 if(fp=fopen(data.txt,a+)=NULL) printf(不能打开文件!n);return;/先把文件中的数据读到结构体数组中去。并得到文件中记录的个数,再关闭文件 while(!feof(fp) if(fread(&commm ,LEN,1,fp)=1) m+; fclose(fp); /根据记

33、录条数做出相应的选择,没记录则返回,有记录则排序 if(m=0) printf(没有记录!n);return;else /冒泡排序for(i=0;im-1;i+) for(j=i+1;jm;j+) if(commi.total commj.total) t=commi;commi=commj; commj=t;/以写的方式打开文件if(fp=fopen(data.txt,w)=NULL) printf(不能打开n);return; /将重新排好序的内容重新写入指定的磁盘文件中,并关闭文件for(i=0;im;i+)if(fwrite(&commi ,LEN,1,fp)!=1) printf(%

34、s 不能保存!n); getch();return;fclose(fp);printf(保存成功n);/查找记录模块/本模块的流程是先打开文件并读取里面的数据到物资结构体数组缓冲区中/用户输入编号与物资结构体中缓冲区的数据进行比较,如果有则显示,没有则输出提示信息void search()FILE *fp;int num,i,m=0;char ch2;/以追加 和写的方式打开文件if(fp=fopen(data.txt,a+)=NULL)printf(不能打开文件!n);return ;/把文件中的数据依次读入到结构体中,并关闭文件while(!feof(fp)if(fread(&commm,LEN,1,fp)=1)m+;fclose(fp);/如果没有记录,则返回,否则执行显示操作if(m=0)printf( 没有记录!n);return;else/用户输入编号 printf(请输入编号:);scanf(%d,&num);/用循环语句来比较用户输入的编号是否存在for(i=0;im;i+)if(num=commi.num)printf(已经找到该记录,是否显示?(y/n));scanf(%s

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号