收藏 分销(赏)

物品管理系统课程设计-毕业论文.doc

上传人:可**** 文档编号:2145755 上传时间:2024-05-20 格式:DOC 页数:32 大小:362KB
下载 相关 举报
物品管理系统课程设计-毕业论文.doc_第1页
第1页 / 共32页
物品管理系统课程设计-毕业论文.doc_第2页
第2页 / 共32页
物品管理系统课程设计-毕业论文.doc_第3页
第3页 / 共32页
物品管理系统课程设计-毕业论文.doc_第4页
第4页 / 共32页
物品管理系统课程设计-毕业论文.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、计算机学院 高级语言程序设计课程设计报告学号2014-2015学年 第二学期1308210123高级语言程序设计课程设计报告题目:物品管理系统专业:计算机科学与技术班级:姓名:指导教师:成绩:计算机学院2015 年 4月 29 日 目录1设计内容及要求21.1概述21.2主要功能21.3设计目的及具体要求22 概要设计22.1系统的功能简介22.2 总体程序框图32.3各个模块之间的主要关系33设计过程及程序代码33.1定义结构体及宏定义43.2主函数 main()43.3输入物品信息函数53.4输出显示物品函数53.5将物品写入磁盘63.6插入物品记录函数73.7 删除一个物品记录函数73.

2、8按照物品编号进行递增排序函数83.9按照物品总价进行递增排序函数83.10对物品记录进行排序函数93.11输出头部信息函数103.12输出一条物品信息函数103.13判断该编号物品是否存在函数103.14根据物品编号进行查找函数103.15根据物品名字进行查找函数103.16对物品记录进行查找函数114设计结果与分析124.1各个模块的程序流程图121)主函数程序(N-S)流程图及运行界面122)输入物品记录信息的(N-S)流程图及程序运行界面135设计心得216参考文献227源程序代码(物品管理系统)231 1设计内容及要求1.1概述物品管理系统主要根据课程设计要求进行设计,从对物品的简单

3、处理着手设计的一份物品管理系统。1.2主要功能物品管理系统是一个针对物品管理的系统。该系统功能主要包括八大模块:1) 输入物品记录:输入物品个数,根据物品个数依次输入每个物品记录的详细信息。例如物品编号、 名字、单价、数量。 2)输出物品记录:对已经写入磁盘的记录信息的显示。若无数据,则显示无数据! 3) 将物品记录写入文件。4) 插入一个物品记录。5) 删除一个物品记录。6)对物品记录进行排序。7)对物品记录进行查找。8) 退出系统。1.3设计目的及具体要求主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:物品的读和写、物品信息的增删改、物品信息的排序、查找。操作

4、界面要符合用户的一般习惯,图形或文本界面都可以。要求:系统以菜单方式工作,根据菜单项序号提示进行工作。物品信息包括编号、名称、单价、 数量、总价。系统以菜单方式工作,实现对物品信息的录入、修改、统计、排序、查询、输出等功能。2 概要设计2.1系统的功能简介该系统的主要功能是系统以菜单方式工作,实现对物品信息的录入,修改,统计,排序,查询,输出等功能。2.2 总体程序框图物品管理系统操作主要流程如下,各个函数分别实现不一样的功能。物品管理系统输入物品记录输出物品记录将物品记录写入文件输入所选项菜单项序号插入一个物品记录删除一个物品记录对物品记录进行排序对物品记录进行查找退出系统图3-A总体程序流

5、程图2.3各个模块之间的主要关系该程序的功能主要是实现物品信息的录入,并对物品的相应信息进行进本的增删改的计算。各个模块之间的关系是相互联系的。首先,主函数包含了所有的子函数。主函数是整个程序的核心。子函数之间也是有联系的,对物品读取,插入删除,检索排序必须是在主函数的情况下进行的。因此在第一步选择菜单项的 是非常重要的。第一步菜单项的选择决定用户所要实现的操作功能。3设计过程及程序代码整个系统除了主函数外,另外还有8个函数,实现7大功能:输入功能、输出功能、写入磁盘功能、插入并显示功能、删除并显示功能、分类查找并显示功能、分类排序并显示功能。各个函数的详细设计说明分别如下:3.1定义结构体及

6、宏定义#include stdio.h#include string.h#define NAME_MAX_LEN 20#define Prod_MAX_NUM 50typedef struct int num; char nameNAME_MAX_LEN; double unitprice; int amount; double totalprice;prodNode;typedef struct sequence prodNode dataProd_MAX_NUM; int len;seq;seq product;3.2主函数 main() void main() int menuItemC

7、ode=1; product.len=0; while (menuItemCode!=0) printf(nn); printf(*物品管理系统*n); printf(* 1.输入物品记录 *n); printf(* 2.输出物品记录 *n); printf(* 3.将物品记录写入文件 *n); printf(* 4.插入一个物品记录 *n); printf(* 5.删除一个物品记录 *n); printf(* 6.对物品记录进行排序 *n); printf(* 7.对物品记录进行查找 *n); printf(* 0.退出系统 *n); printf(*n); printf(请输入所选项菜单项

8、序号:); scanf(%d,&menuItemCode); switch (menuItemCode) case 1:inputGoods(); break; case 2:outputGoods(); break; case 3:saveGoods(); break; case 4:insertOneGoods(); break; case 5:deleteOneGoods(); break; case 6:sortGoods(); break; case 7:searchGoods(); break; case 0:break; default:printf(输入超出范围!n); bre

9、ak;3.3输入物品信息函数 void inputGoods() int i,n; printf(请输入物品个数:n);scanf(%d,&n); if (n0) return; for (i=0;in;i+) printf(请输入第%d个物品记录。n,i+1); printf(输入物品的编号:n);scanf(%d,&product.datai.num);printf(输入物品的名字:n); scanf(%s,product.datai.name); printf(输入物品的单价:n); scanf(%lf,&product.datai.unitprice); printf(输入物品的数量:

10、n); scanf(%d,&product.datai.amount); product.datai.totalprice=product.datai.unitprice*product.datai.amount; product.len=n;3.4输出显示物品函数void outputGoods() int i; if (product.len=0) printf(n无数据!n); return; printf(n物品的记录为:n);printf(编号t名字t单价 t数量t总价n); for (i=0;iproduct.len;i+) printf(%dt%st%lft%dt%.2lf,pr

11、oduct.datai.num,product.datai.name,product.datai.unitprice,product.datai.amount,product.datai.totalprice); printf(n); 3.5将物品写入磁盘void saveGoods() int i; FILE *fp; if (product.len=0) printf(n无数据!n); return;fp=fopen(D:goods.txt,w); if (fp=NULL) printf(文件打开失败!n); return; fprintf(fp,%st,编号); fprintf(fp,%

12、st,名称); fprintf(fp,%st ,单价); fprintf(fp,%st,数量); fprintf(fp,%s,总价); for (i=0;iproduct.len;i+) fprintf(fp,n); fprintf(fp,%dt,product.datai.num); fprintf(fp,%st,product.datai.name); fprintf(fp,%lft,product.datai.unitprice); fprintf(fp,%dt,product.datai.amount); fprintf(fp,%.2lf,product.datai.totalpric

13、e); fclose(fp); printf(已成功存盘!n);3.6插入物品记录函数void insertOneGoods()prodNode G;int i,pos;if (product.len=Prod_MAX_NUM)printf(表已满!n);return;printf(请输入插入位置:);scanf(%d,&pos);if (posproduct.len)printf(插入位置出错!n); return;printf(请输入要插入的物品记录:n);printf(请输入编号:);do scanf(%d,&G.num);if (G.num=0)printf(输入的编号不合理,请重新输

14、入。n);while (G.num=pos;i-)product.datai+1=product.datai;product.datapos=G;product.len=product.len+1;printf(插入成功!);3.7 删除一个物品记录函数void deleteOneGoods()int i,pos;if (product.len=0)printf(表空!n);return;printf(请输入要删除的物品记录的位置:);scanf(%d,&pos);if (posproduct.len-1)printf(删除的位置出错!n);return;for (i=pos+1;i=prod

15、uct.len-1;i+)product.datai-1=product.datai;product.len=product.len-1;printf(删除成功!n);3.8按照物品编号进行递增排序函数void bubbleSortByNum()int i,j,n;prodNode temp;int tag;n=product.len;for (tag=1,i=0;ii;j-)if (product.dataj.numproduct.dataj-1.num)temp=product.dataj;product.dataj=product.dataj-1;product.dataj-1=temp

16、;tag=1;3.9按照物品总价进行递增排序函数void bubbleSortByTotal()int i,j,n;prodNode temp;int tag;n=product.len;for (tag=1,i=0;ii;j-)if (product.dataj.totalpriceproduct.dataj-1.totalprice)temp=product.dataj;product.dataj=product.dataj-1;product.dataj-1=temp;tag=1;3.10对物品记录进行排序函数void sortGoods()int subMenuItem=1;while

17、 (subMenuItem!=0)printf(nn);printf(*排序子菜单*n);printf(* 1.按照物品编号进行递增排序 *n);printf(* 2.按照物品总价进行递增排序 *n);printf(* 0.退出子菜单 *n);printf(*n);printf(请输入所选子菜单项序号:);scanf(%d,&subMenuItem);switch (subMenuItem)case 1:bubbleSortByNum();printf(已按照物品的编号进行递增排序。排序后的结果为:n);outputGoods();break;case 2:bubbleSortByTotal(

18、);printf(已按照物品的总价进行递增排序。排序后的结果为:n);outputGoods();break;case 0:break;default:printf(输入超出范围!n); break;3.11输出头部信息函数void outputHead()printf(编号t名字t单价 t数量t总价n);3.12输出一条物品信息函数void outputOneGoods(prodNode s)printf(%dt%st%lf t%dt%.2lf,s.num,s.name,s.unitprice,s.amount,s.totalprice);printf(n);3.13判断该编号物品是否存在函

19、数int isNumberExist (int number)int n,i=0;n=product.len;while (in & product.datai.num!=number)i+;if (in)return i;elsereturn -1;3.14根据物品编号进行查找函数void seqSearchByNumber (int number)int pos;pos=isNumberExist(number);if (pos !=-1)printf(查找成功!查找结果如下:n);outputHead();outputOneGoods(product.datapos);elseprint

20、f(查找失败!编号为%d的物品不存在。n,number);3.15根据物品名字进行查找函数void seqSearchByName(char name)int flag=0;int n,i;n=product.len;i=0;while (in)if (strcmp(product.datai.name,name)=0)if (flag=0)flag=1;printf(查找成功!查找结果如下:n);outputHead();outputOneGoods(product.datai);i+;if (flag=0)printf(查找失败!名字为%s的物品不存在。n,name);3.16对物品记录进

21、行查找函数void searchGoods()int number;char nameNAME_MAX_LEN;int subMenuItem=1;while (subMenuItem!=0)printf(nn);printf(*查找子菜单*n);printf(* 1.根据物品编号进行查找 *n);printf(* 2.根据物品名字进行查找 *n);printf(* 0.退出系统 *n);printf(*n);printf(请输入所选子菜单项序号:);scanf(%d,&subMenuItem);switch (subMenuItem)case 1:printf(请输入要查找的物品编号:);s

22、canf(%d,&number);seqSearchByNumber(number);break;case 2:printf(请输入要查找的物品名字:);scanf(%s,name);seqSearchByName(name);break;case 0:break;default:printf(输入超出范围!n); break;4设计结果与分析4.1各个模块的程序流程图 1)主函数程序(N-S)流程图及运行界面主函数程序(N-S)流程图定义变量int menuItemCode=1;product.len=0; while(menuItemCode!=0)scanf(%d,&menuItemCo

23、de); switch (menuItemCode)case 1:inputGoods(); break;请输入物品记录 case 2:outputGoods(); break;显示物品记录 case 3:saveGoods(); break;将物品记录存盘case 4:insertOneGoods(); break;插入一个物品记录 case 5:deleteOneGoods();break;删除一个物品记录 case 6:sortGoods(); break;将物品记录排序 case 7:searchGoods(); break;查找物品记录 case 0: break; 退出系统返回程序

24、主界面 简单说明:该功能主要显示给用户一个进入界面,它主要的是显示该程序主要能够执行的有哪些功能。根据用户输入的不同的菜单项对应不同的功能。主菜单2)输入物品记录信息的(N-S)流程图及程序运行界面物品记录信息的(N-S)流程图选择菜单项第一项,输入1请输入物品个数请输入第一个物品记录请输入物品编号请输入物品名字请输入物品单价请输入物品数量请输入菜单项3将物品记录写入磁盘 该模块主要是对物品信息进行录入,录入的主要有物品记录的编号、名字、单价、数量等信息然后再存盘。物品信息录入 物品记录信息存盘物品记录存盘详细信息输出物品记录插入物品记录插入物品之显示结果删除物品记录删除物品记录之显示结果对物

25、品记录按编号递增排序对物品记录按总价递增排序查找子菜单界面根据物品编号查找根据物品名字查找退出系统5设计心得当把程序写好并进行调试时,并不是一帆风顺的,总会遇到很多在调试时遇到的错误。1. 首先在定义函数时,不能输入汉字。否则会程序会显示错误。2.前后定义变量要统一。3.如果要调用添加函数,修改函数,修改函数,查找函数,统计函数等要在主函数前面进行申明。否则会显示警告。4.对背景颜色设置的时候,当你输入的颜色在内存中不存在时,运行程序过后,系统会告诉你相应的颜色符号常数及数值。5.如果程序在运行的过程中,对于一个循环语句,如果你返回的值始终是真的,那么程序将进如死循环。6. 未注意int,fl

26、oat型数据的数值范围,int型数据的数值范围(-3276832768)。对定义物品单价变量时,如果将物品单价定义为float型,将会出现警告。7.对应该有花括弧的复合语句,忘记加花括弧。8. 所调用的函数在调用语句之后才定义,而又在调用前未加说明。 物品管理系统对物品的基本操作有助于用户对数据表的监管及应用,在本课程设计的设计过程中,我刚开始感觉到有点头痛。要通过一学期C语言的学习后将所学知识运用起来有点困难,但回过头来再去看教课书,对于这些知识点有关的背景,概念和解决方案更进一步的理解,感觉也不是很难。另外我还体会了从事C语言课程设计工作需要特别谨慎认真地态度和作风,一点都不能马虎。每个细

27、微的细节都必须十分注意,如果不认真思考,就会出现或大或小的错误。如果把早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时会推倒很多前面做的工作。有时候,我自己觉得我写的程序非常正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间没有一点进展。这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙才向老师同学请教。经过几周的课程设计,我学到了很多东西:巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究

28、,分析问题、解决问题的能力。经过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。 在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师

29、和同学们表示感谢! 由于我的知识浅薄,经验不足及阅历颇浅,在该系统的设计方面还有很多不足,比如功能过少,界面不醒目等问题,我会在以后的学习过程中,根据具体要求不断的修改、完善,争取使系统慢慢趋于完美。 6参考文献1谭浩强著.C程序设计(第二版).北京:清华大学出版社,19992谭浩强,张基温,唐永炎编著.C语言程序设计.北京:高等教育出版社,19923谭浩强.C程序设计M.3版.北京:清华大学出版社,20054Herbert Schildt著.戴健鹏译.C语言大全(第二版).北京:电子工业出版社,19947源程序代码(物品管理系统)#include stdio.h#include string

30、.h#define NAME_MAX_LEN 20#define Prod_MAX_NUM 50typedef struct int num; char nameNAME_MAX_LEN; double unitprice; int amount; double totalprice;prodNode;typedef struct sequence prodNode dataProd_MAX_NUM; int len;seq;seq product;/*输入物品记录*/void inputGoods() int i,n; printf(请输入物品个数:n);scanf(%d,&n); if (

31、n0) return; for (i=0;in;i+) printf(请输入第%d个物品记录。n,i+1); printf(输入物品的编号:n);scanf(%d,&product.datai.num);printf(输入物品的名字:n); scanf(%s,product.datai.name); printf(输入物品的单价:n); scanf(%lf,&product.datai.unitprice); printf(输入物品的数量:n); scanf(%d,&product.datai.amount); product.datai.totalprice=product.datai.un

32、itprice*product.datai.amount; product.len=n;/*输出物品记录*/void outputGoods() int i; if (product.len=0) printf(n无数据!n); return; printf(n物品的记录为:n);printf(编号t名字t单价 t数量t总价n); for (i=0;iproduct.len;i+) printf(%dt%st%lft%dt%.2lf,product.datai.num,product.datai.name,product.datai.unitprice,product.datai.amount

33、,product.datai.totalprice); printf(n); /*将物品记录写入文件*/void saveGoods() int i; FILE *fp; if (product.len=0) printf(n无数据!n); return; fp=fopen(D:goods.txt,w); if (fp=NULL) printf(文件打开失败!n); return; fprintf(fp,%st,编号); fprintf(fp,%st,名称); fprintf(fp,%st ,单价); fprintf(fp,%st,数量); fprintf(fp,%s,总价); for (i=

34、0;iproduct.len;i+) fprintf(fp,n); fprintf(fp,%dt,product.datai.num); fprintf(fp,%st,product.datai.name); fprintf(fp,%lft,product.datai.unitprice); fprintf(fp,%dt,product.datai.amount); fprintf(fp,%.2lf,product.datai.totalprice); fclose(fp); printf(已成功存盘!n);/*插入一个物品记录*/void insertOneGoods()prodNode G

35、;int i,pos;if (product.len=Prod_MAX_NUM)printf(表已满!n);return;printf(请输入插入位置:);scanf(%d,&pos);if (posproduct.len)printf(插入位置出错!n); return;printf(请输入要插入的物品记录:n);printf(请输入编号:);do scanf(%d,&G.num);if (G.num=0)printf(输入的编号不合理,请重新输入。n);while (G.num=pos;i-)product.datai+1=product.datai;product.datapos=G;product.len=product.len+1;printf(插入成功!);/*删除一个物品记录*/void deleteOneGoods()in

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服