物资管理系统设计报告含代码.docx
- 文档编号:15614312
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:41
- 大小:329.14KB
物资管理系统设计报告含代码.docx
《物资管理系统设计报告含代码.docx》由会员分享,可在线阅读,更多相关《物资管理系统设计报告含代码.docx(41页珍藏版)》请在冰点文库上搜索。
物资管理系统设计报告含代码
青岛理工大学琴岛学院
设计报告
课题名称:
物资管理系统
学院:
青岛理工大学琴岛学院
专业班级:
嵌入式技术与应用14-1班
学号:
学生:
指导教师:
青岛理工大学琴岛学院教务处
年月日
学生
指导教师
课题名称
物资管理系统
设计时间
设计地点
8-212
设计目的
1.使学生加深对讲授知识的理解、能够综合应用数组、函数、结构体、指针、文件等知识解决实际问题;
2.培养学生独立调试程序的能力,团队协作的能力;
3.累积编程经验,书写设计报告的规范,为编写项目打下良好基础。
指导教师
评语
系部教研室
意见
一、选题背景及意义
物资管理是一般工业、商业企业生产管理环节中重要的一环,需要对物资基本信息管理、物资调配信息等进行完整的监控。
物资入库首先要登记物资的基本信息,包括物资的种类、名称、型号、单位、单价等;然后登记物资入库信息,包括物资基本信息、入库地点、入库人、经办人、数量等;根据物资的入库、出库过程的综合,得到各种物资的余额信息,方便进行后续工作。
因此物资管理信息系统需要纪录物资流通的全过程。
加强物资管理,不但有算得出、看得到的效益,还可以大大提高管理队伍的素质,加强职工的增产节约意识、爱护财产意识和学习科技的意识,使科学管理形成共识,并可以减少物资设备各个环节上的矛盾。
信息已成为继劳动力、土地、资本之后的又一大资源。
谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各方面的竞争中占有一席之地,谁就会有更多的优势。
物资供应部门是企业与生产单位之间的桥梁、纽带,是企业正常生产的物资保障部门。
正因为供应部门是关键的中转环节,建立一套物资管理信息系统对于如何有效的把本单位生产所需的生产资料及时、保质保量的供应上去,有着重要的意义。
从微观上讲,建立一套物资管理信息系统能够加快物资的周转速度,提高生产效率,从而加强了管理的信息化手段,提高了本单位的经济效益。
从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。
目前存在的主要问题是:
(一)根据各三级单位所报材料明细逐个与库存账本对照查阅,进行库平,即库中有其所需材料则开据料单从库中领取,若库中无,则通知采购人员采购。
库中物资种类繁多,查对繁琐,易出错。
(二)从开据发料单到每月结帐、清册都是手工操作,计算器加算盘,效率低且准确率不高。
单位配备的计算机仅局限于打字,做报表,不能开单据,计算机应有的功能没有充分发挥。
所以想设计个系统来提高工作效率,为学校、企业节省大部分开支用来投资系统的开发,这样以来节省了人力物力,也节省了资源的消耗,实现了低碳发展。
二、需求分析
学校的计算机不仅可以安装Windows和UNIX的运行环境,而且有足够的空间可以安装运行平台JAVA虚拟机、数据库ORACLE、服务器TOMCAT和各类编程工具例如ECLIPSE,NETBEANS,在编程环境上提供了可靠的支持;我们编程人员方面,可以运用以前所学的各种开发软件的计算机知识和管理知识,加上不断的学习,为系统的开发提供了必要的技术保障。
我们就应用了JAVAEE企业级开发框架以及ORACLE数据库系统软件。
根据系统功能、性能及实现系统的各项约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术以较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。
同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发。
系统的效益可以从经济效益和社会效益两方面考虑。
对于物资管理系统则应着重分析其社会效益。
例如,系统投入运行后可以使物资管理实现科学化、规范化。
增强了工作人员对物资管理能力、提高了工作效率。
企业间的竞争说到底是人的竞争,但人力资源是企业中最难管理的资源,它涉及到企业的组织机构、企业文化、人的心理等方方面面;从强调对物的管理转向对人的管理,是企业管理的一个划时代的进步。
如何刻意挖掘蕴藏在员工当中的巨大能力,发掘充满活力和生机的人力资源,将"人"视为可以开发和增值的资源去投资和经营,是当前企业急需解决的课题。
传统的人事管理对人力资源的管理是非量化的,是人事部门最基础业务的信息管理;而真正的人力资源管理系统将人力资源管理过程数字化,并结合知识管理、办公自动化、项目管理等技术,将人力资源管理提升到战略级别的管理层次,是一个针对企业"人力资源"的"设计"系统。
通过以上从技术、经济、实践三方面的研究与调查,我们可以确定该物资管理系统是可行的。
三、概要设计
1、数据库设计
本系统中主要涉及数据表如下:
物资信息表:
主要包含编号、物资名称、单价、数量等字段。
其具体表结构如图所示:
物资信息表
字段名
字段类型
字段宽度
字段说明
num
字符型
10
编号
name
字符型
20
物资名称
price
数值型
5
单价
count
数值型
5
数量
total
数值型
20
总金额
2、系统功能模块概述
本系统能够实现一个人机交互,操作简单的物资管理系统,主要分为两个用户角色,用户和物资,主要功能如图所示:
系统功能模块图
各功能模块描述如下:
(1)输入记录:
本模块主要完成物资记录的输入,主要包含编号、名称、单价和数量,在输入过程中要注意各个字段的类型,并且要进行数据的合法性验证。
(2)查找记录:
主要用来查找物资的信息,该模块能够通过物资编号来查找物资记录信息。
(3)删除记录:
通过物资编号来进行删除物资信息。
(4)修改记录:
通过编号修改物资信息。
(5)排序记录:
按总金额进行排序。
(6)统计记录:
统计物资数量。
(0)退出系统。
四、详细设计
(一)主函数一般是设计简洁,只提供输入,处理和输出部分的函数调用。
(1)/**************************商品结构体************************/
structcommdity
{
intnum;//编号
charname[20];//商品名称
doubleprice;//单价
doublecount;//数量
doubletotal;//总金额
};
structcommditycomm[50];//定义结构体数组
(2)/*************************函数申明*****************************/
voidin();//输入物资信息函数
voidshow();//显示物资信息函数
voidorder();//按总金额排队函数
voiddel();//删除物资信息函数
voidmodify();//修改物资信息函数
voidmenu();//主菜单函数
voidtotal();//统计总物资数函数
voidsearch();//查找物资信息函数
(5)/************************主函数********************************/
voidmain()
{
intn;
menu();
scanf("%d",&n);
while(n)
{
数据类型
{
case1:
in();//输入物资信息
break;
case2:
search();//寻找物资信息
break;
case3:
del();//删除物资信息
break;
case4:
modify();//修改物资信息
break;
case5:
order();//排序物资
break;
case6:
total();//统计物资数量
break;
default:
break;
}
getch();
menu();//返回菜单界面
scanf("%d",&n);
}
return;
}
(二)各功能模块设计
(1)//菜单模块
voidmenu()
{
system("CLS");//清屏函数
printf("\n\n\n\n\n");
printf("\t\t|**********物资管理系统**************|\n");
printf("\t\t|\t1输入记录|\n");
printf("\t\t|\t2查找记录|\n");
printf("\t\t|\t3删除记录|\n");
printf("\t\t|\t4修改记录|\n");
printf("\t\t|\t5排序记录(按总金额)|\n");
printf("\t\t|\t6统计记录|\n");
printf("\t\t|\t0退出系统|\n");
printf("\t\t|************************************|\n");
printf("\t\t\t选择(0-6):
");
}
(2)//显示模块
//基本流程,先把文件中的数据依次读入到物资结构体中,
//并依次显示
voidshow()
{
FILE*fp;
inti,m=0;
fp=fopen("data.txt","a+");
while(!
feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
m++;
}
fclose(fp);
printf("编号物资名称单价数量总金额\t\n");
for(i=0;i { printf(FORMAT,DATA);//将信息按指定格式打印 } } (3)//查找记录模块 //本模块的流程是先打开文件并读取里面的数据到物资结构体数组缓冲区中 //用户输入编号与物资结构体中缓冲区的数据进行比较,如果有则显示,没有则输出提示信息 voidsearch() { FILE*fp; intnum,i,m=0; charch[2]; //以追加和写的方式打开文件 if((fp=fopen("data.txt","a+"))==NULL) { printf("不能打开文件! \n"); return; } //把文件中的数据依次读入到结构体中,并关闭文件 while(! feof(fp)) { if(fread(&comm[m],LEN,1,fp)==1) m++; } fclose(fp); //如果没有记录,则返回,否则执行显示操作 if(m==0) { printf("没有记录! \n"); return; } else {//用户输入编号 printf("请输入编号: "); scanf("%d",&num); //用循环语句来比较用户输入的编号是否存在 for(i=0;i { if(num==comm[i].num) { printf("已经找到该记录,是否显示? (y/n)"); scanf("%s",ch); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("编号物资名称单价数量总金额\t\n"); printf(FORMAT,DATA); break; } else return; } } //如果上面的循环语句执行完都没有找到,则会执行本判断语句 if(i==m) printf("没有找到相关记录! \n"); } } (4)//删除物资模块 //本模块的流程为先打开文件,并把数据写到物资结构体数组缓冲区中去 //用户输入相关编号与结构体数组中的数据相比较,如果存在则把结构体数组缓冲区进行修改 //把修改后的结构体数组缓冲区再次写入文件 voiddel() { FILE*fp; intnum,i,j,m=0; charch[2]; //以追加和读的方式打开文件 if((fp=fopen("data.txt","a+"))==NULL) { printf("不能打开文件\n"); return; } //把文件中的内容依次写到物资结构体数组中,并记录信息条数,最后关闭文件 while(! feof(fp)) { if(fread(&comm[m],LEN,1,fp)==1) m++; } fclose(fp); //根据物资信息条数进行相应的处理 if(m==0) { printf("没有记录! \n"); return; } else { //用户输入编号 printf("请输入编号: "); scanf("%d",&num); //用循环语句来比较是否有用户输入的记录 for(i=0;i { if(num==comm[i].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;j comm[j]=comm[j+1]; m--;//记录条数减一个 printf("成功删除! \n"); } //以写的方式打开文件 if((fp=fopen("data.txt","w"))==NULL) { printf("不能打开\n"); return; } //把物资结构体数组中的数据依次写入文件 for(j=0;j { if(fwrite(&comm[j],LEN,1,fp)! =1) { printf("保存出错! \n"); return; } } printf("保存成功! \n"); fclose(fp); } } (5)//统计模块 voidtotal() { FILE*fp; intm=0; //以追加和读的方式打开一个文件 if((fp=fopen("data.txt","a+"))==NULL) { printf("不能打开文件\n"); return; } //把文件中的内容依次写入缓冲区,统计记录条数,并关闭文件 while(! feof(fp)) { if(fread(&comm[m],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、忽略了变量的类型,进行了不合法的运算。 解决办法;%是求余运算,得到a/b的整余数。 4、在编写程序是,消耗内存较大。 解决方法: 编写程序是,打开一个文件夹后,编辑完一定要紧跟着关闭文件夹,否则打开的文件夹都会占用内存 5、在编程当中,由于要输入大量的程序,所以经常出现很多不让人注意的小错误。 例如大小写int写成Int. 总结 这个系统实现了,对简单的物资进行管理,例如: 输入物资信息,修改物资信息,删除物资信息,对物资信息进行排序等等,大大提高了我们的办公效率,节省了人力物力,向绿色经济的方向靠近。 对于这个系统还有很不不足之处,例如: 给有给系统设置开启密码、排序后无法显示排序后的物资列表等等,希望在以后的学习中,不断改进、完善这个系统。 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。 因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。 回顾起此次课程设计,至今我仍感慨颇多,的确从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。 同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢! 同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢 在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。 在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。 老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地? 在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。 没有了柳暗花明的一天,那么我怎么能说经受住了考验? 谢谢老师的那句话,她说: 人力有所不能及,然而,人的精神是不会败倒的。 我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。 不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。 谢谢给我指点迷津的老师。 我们的课程设计结束了,但是它留给我的印象是不可磨灭的。 无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。 参考书目: [1]谭浩强,《C语言程序设计》(第四版)[M],清华大学出版社,2008年 [2]赵克林,《C语言实例教程》重庆: 西南师范大学出版社,2006 [3]杨正校,《C语言程序设计》南京: 河海大学出版社,2008 [4]谢乐军,《C语言程序设计及应用》北京: 冶金工业出版社,2004 源代码 //库文件包含 #include #include #include #include #include //宏定义 #defineLENsizeof(structcommdity) #defineFORMAT"%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%\n" #defineDATAcomm[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total //物资结构体 structcommdity { intnum;//编号 charname[20];//物资名称 doubleprice;//单价 doublecount;//数量 doubletotal;//总金额 }; structcommditycomm[50];//定义结构体数组 //函数申明 voidin();//输入物资信息函数 voidshow();//显示物资信息函数 voidorder();//按总金额排队函数 voiddel();//删除物资信息函数 voidmodify();//修改物资信息函数 voidmenu();//主菜单函数 voidtotal();//统计总物资数函数 voidsearch();//查找物资信息函数 //主函数 voidmain() { intn; menu(); scanf("%d",&n); while(n) { switch(n)//问题switch()中的数据类型是什么? 答案: 是常量表达式,可以是任何数据类型 { case1: in();//输入物资信息 break; case2: search();//寻找物资信息 break; case3: del();//删除物资信息 break; case4: modify();//修改物资信息 break; case5: order();//排序物资 break; case6: total();//统计物资数量 break; default: break; } getch(); menu();//返回菜单界面 scanf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 物资 管理 系统 设计 报告 代码