




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上学号2016-2017学年 第2学期C语言物品管理课程设计报告题目:C语言物品管理专业:网络工程班级:16级(3)班姓名:代应豪指导教师:代美丽成绩: 计算机学院 2017 年 4月 27 日专心-专注-专业 目录 1设计内容及要求 . 2 1.1概述. 2 1.2主要功能. 2 1.3设计目的及具体要求. 2 2 概要设计. 2 2.1系统的功能简介. 2 2.2 总体程序框图 .
2、60;3 2.3各个模块之间的主要关系. 3 3设计过程及程序代码 . 3 3.1定义结构体及宏定义. 4 3.2主函数 main().4 3.3输入物品信息函数. .5 3.4输出显示物品函数. 5 3.5将物品写入磁盘. 6 3.6插入物品记录函数. 7 3.7 删除一个物品记录函数 . 7 3.8按照物品编号进行递增排序函数. 8 3.9按照物品总价进
3、行递增排序函数. 8 3.10对物品记录进行排序函数. 9 3.11输出头部信息函数. 10 3.12输出一条物品信息函数. .10 3.13判断该编号物品是否存在函数. 10 3.14根据物品编号进行查找函数. 10 3.15根据物品名字进行查找函数. 10 3.16对物品记录进行查找函数. 11 4设计结果与分析 . 12 4.1各个模块的程序流程图 . 12 1) 主函数
4、程序(N-S)流程图及运行界面. 12 2) 输入物品记录信息的(N-S)流程图及程序运行界面. .13 5设计心得 . 21 6参考文献 .22 7源程序代码(物品管理系统) . 231. 设计内容及要求1.1概述 物品管理系统主要根据课程设计要求进行设计,从对物品的简单处理着手设计一份物品管理系统。1.2主要功能物品管理系统是一个针对物品管理的系统。该系统功能主要包括八大模块: 1)插入物品记录:输入物品个数,根据物品个数依次输入每个物品记录的详细信息。例如物品编号、名字、单价、数
5、量。 2)输出物品记录:对已经写入磁盘的记录信息的显示。如无数据,则显示无数据!3) 将物品记录写入文件。4) 插入一个物品记录。5) 删除一个物品记录。6) 对物品记录进行排序。7) 对物品记录进行查找。8) 退出系统。1.3设计目的及具体要求主要利用C语言的文件操作能力设计开发一个小型的信息系统,至少具有如下功能:物品的读和写、物品信息的增删改、物品信息的排序、查找。操作界面要符合用户的一般习惯,图形或文本界面都可以。要求:系统以菜单方式工作,根据菜单项序号提示进行工作。物品信息包括编号看、名称、单价、数量、总价。系统以菜单方式工作,实现对物品信息的录入、修改、统计、排序、查询、输出等功能
6、。2概要设计2.1系统的功能简介该系统的主要功能是系统以菜单方式工作,实现对物品信息的录入,修改,统计,排序,查询,输出等功能。2.2总体程序框图物品管理系统操作主要流程如下,各个函数分别实现不一样的功能。2.3各个模块之间的主要关系该程序的功能主要是实现物品信息的录入,并对物品的相应信息进行进本的增删该的计算。各个模块之间的关系是相互联系的。首先,主函数包含了所有的子函数。主函数是整个程序的核心。子函数之间也是有联系的,对物品读取,插入删除,检索排序必须是在主函数的情况下进行的。因此在第一步选择菜单项是非常重要的。第一步菜单项的选择决定用户所要实现的操作功能。3设计过程及程序代码整个系统除了
7、主函数外,另外还有8个函数,实现7人功能:输入功能、输出功能、写入磁盘功能、插入并显示功能、分类查找并显示功能、分类排序并显示功能。各个函数的详细设计说明分别如下:3.1定义结构体及宏定义#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; prodNo
8、de; typedef struct sequenceprodNode dataProd_MAX_NUM; int len; seq; seq product;3.2主函数main()void main() int menuItemCode=1; product.len=0; while (menuItemCode!=0)printf("nn"); printf("*物品管理系统*n"); printf("* 1.输入物品记录 *n"); printf("* 2.输出物品记录 *n"); printf("
9、* 3.将物品记录写入文件 *n");printf("* 4.插入一个物品记录 *n"); printf("* 5.删除一个物品记录 *n");printf("* 6.对物品记录进行排序 *n"); printf("* 7.对物品记录进行查找 *n"); printf("* 0.退出系统 *n"); printf("*n"); printf("请输入所选项菜单项序号:"); scanf("%d",&menuItemCo
10、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; default:printf("输入超出范围!n"); break;3.3输入物品信息函数vo
11、id inputGoods() int i,n; printf("请输入物品个数:n"); scanf("%d",&n); if (n<0) return; for (i=0;i<n;i+)printf("输入物品的编号:n"); scanf("%d",&product.datai.num); printf("输入物品的名字:n"); scanf("%s",); printf("输入物品的单价:n&qu
12、ot;); scanf("%lf",&product.datai.unitprice); printf("输入物品的数量: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&q
13、uot;); return; printf("n物品的记录为:n"); printf("编号t名字t单价 t数量t总价n");for (i=0;i<product.len;i+)printf("%dt%st%lft%dt%.2lf",product.datai.num,,product.datai.unitprice,product.datai.amount,product.datai.totalprice); printf("n"); 3.5将物品写入磁盘void sav
14、eGoods() 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 ","单
15、价"); fprintf(fp,"%st","数量");fprintf(fp,"%s","总价"); for (i=0;i<product.len;i+) fprintf(fp,"n"); fprintf(fp,"%dt",product.datai.num); fprintf(fp,"%st",); fprintf(fp,"%lft",product.datai.unitprice)
16、; fprintf(fp,"%dt",product.datai.amount); fprintf(fp,"%.2lf",product.datai.totalprice); fclose(fp); printf("已成功存盘!n");3.6插入物品记录函数void insertOneGoods() prodNode G; int i,pos; if(product.len=Prod_MAX_NUM) printf("表已满!n"); return;printf("请输入插入位置:"); sca
17、nf("%d",&pos); if (pos<0|pos>product.len) printf("插入位置出错!n");return;printf("请输入要插入的物品记录:n"); printf("请输入编号:"); do scanf("%d",&G.num); if (G.num<=0) printf("输入的编号不合理,请重新输入。n"); while (G.num<=0); printf("输入物品的名字:n&quo
18、t;); scanf("%s",G.name);printf("输入物品的单价:n"); scanf("%lf",&G.unitprice); printf("输入物品的数量:n"); scanf("%d",&G.amount); G.totalprice=G.unitprice*G.amount; for (i=product.len-1;i>=pos;i-)product.datai+1=product.datai; product.datapos=G; product
19、.len=product.len+1; printf("插入成功!");3.7删除一个物品记录函数void deleteOneGoods() int i,pos; if (product.len=0)printf("表空!n"); return;printf("请输入要删除的物品记录的位置:"); scanf("%d",&pos); if (pos<0|pos>product.len-1) printf("删除的位置出错!n"); return; for(i=pos+1;i&
20、lt;=product.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;i<n-1 && tag=1;i+)tag=0; for (j=n-1;j>i;j-) if (product.dataj.num<product
21、.dataj-1.num) temp=product.dataj; product.dataj=product.dataj-1; product.dataj-1=temp;tag=1; 3.9按照物品总价进行递增排序函数void bubbleSortByTotal() int i,j,n; prodNode temp; int tag; n=product.len;for (tag=1,i=0;i<n-1 && tag=1;i+) tag=0; for (j=n-1;j>i;j-)if (product.dataj.totalprice<product.dat
22、aj-1.totalprice) temp=product.dataj; product.dataj=product.dataj-1; product.dataj-1=temp;tag=1;3.10对物品记录进行排序函数void sortGoods() int subMenuItem=1; while (subMenuItem!=0)printf("nn"); printf("*排序子菜单*n"); printf("* 1.按照物品编号进行递增排序 *n"); printf("* 2.按照物品总价进行递增排序 *n"
23、;); printf("* 0.退出子菜单 *n"); printf("*n"); printf("请输入所选子菜单项序号:"); scanf("%d",&subMenuItem); switch (subMenuItem)case 1:bubbleSortByNum(); printf("已按照物品的编号进行递增排序。排序后的结果为:n"); outputGoods(); break;case 2: bubbleSortByTotal(); printf("已按照物品的总价进
24、行递增排序。排序后的结果为: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.unitprice,s.amount,s.totalpric
25、e);printf("n"); 3.13判断该编号物品是否存在函数int isNumberExist (int number) int n,i=0; n=product.len; while (i<n && product.datai.num!=number)i+; if (i<n) return i; else return -1;3.14根据物品编号进行查找函数void seqSearchByNumber (int number) int pos; pos=isNumberExist(number); if (pos !=-1) printf
26、("查找成功!查找结果如下:n"); outputHead(); outputOneGoods(product.datapos); elseprintf("查找失败!编号为%d的物品不存在。n",number); 3.15根据物品名字进行查找函数void seqSearchByName(char name) int flag=0; int n,i; n=product.len; i=0; while (i<n)if (strcmp(,name)=0) if (flag=0) flag=1; printf(&quo
27、t;查找成功!查找结果如下:n"); outputHead(); outputOneGoods(product.datai);i+;if (flag=0) printf("查找失败!名字为%s的物品不存在。n",name); 3.16对物品记录进行查找函数void searchGoods() int number; char nameNAME_MAX_LEN; int subMenuItem=1;while (subMenuItem!=0)printf("nn"); printf("*查找子菜单*n"); printf(&q
28、uot;* 1.根据物品编号进行查找 *n"); printf("* 2.根据物品名字进行查找 *n"); printf("* 0.退出系统 *n"); printf("*n"); printf("请输入所选子菜单项序号:"); scanf("%d",&subMenuItem); switch (subMenuItem)case 1: printf("请输入要查找的物品编号:"); scanf("%d",&number); seq
29、SearchByNumber(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)流程图简单说明:该功能主要显示给用户一个进入界面,它主要的是显示该程序主要能够执行哪些功能。根据用户输入的不同的菜单项对
30、应不同的功能。 主菜单2)输入物品记录信息的(N-S)流程图及程序运行界面物品记录信息的(N-S)流程定义变量 int menuItemCode=1;product;len=0 While(menuItemCode); Scanf(“%d”,&menuItemCode); Switch(menuItemCode); Case 1:inputGods(); break; 请输入物品信息 Case 2:outputGods(); break; 显示物品信息 Case 3:saveGoods(); break; 将物品记录存盘 Case 4:insertOneGoods(); break;
31、插入一个物品信息 Case 5 :deleteOneGoods(); break; 删除一个物品记录 Case 6:sortGoods(); break; 将物品记录排序 Case 7:searchGoods(); break; 查找物品记录 Case 0: 退出系统 break; 返回程序主界面该模块主要是对物品信息进行录入,录入的主要有物品记录的编号、名字、单价、数量等信息然后在存盘。 物品录入信息 物品记录信息存盘物品记录存盘详细信息 输出物品记录插入物品记录 插入物品之显示结果 删除物品记录 删除物品记录之显示结果 对物品记录按编号递增排序 对物品记录按总价递增排序查找子菜单界面根据物
32、品编号查找根据物品名字查找退出系统源程序如下:#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 sequenceprodNode dataProd_MAX_NUM; int len; seq; seq
33、 product;void inputGoods() int i,n; printf("请输入物品个数:n"); scanf("%d",&n); if (n<0) return; for (i=0;i<n;i+)printf("输入物品的编号:n"); scanf("%d",&product.datai.num); printf("输入物品的名字:n"); scanf("%s",); printf("输
34、入物品的单价:n"); scanf("%lf",&product.datai.unitprice); printf("输入物品的数量:n"); scanf("%d",&product.datai.amount); product.datai.totalprice=product.datai.unitprice*product.datai.amount;product.len=n;void outputGoods() int i; if (product.len=0) printf("n无数据!n&q
35、uot;); return; printf("n物品的记录为:n"); printf("编号t名字t单价 t数量t总价n");for (i=0;i<product.len;i+)printf("%dt%st%lft%dt%.2lf",product.datai.num,,product.datai.unitprice,product.datai.amount,product.datai.totalprice); printf("n"); void saveGoods() i
36、nt 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 ","单价");
37、fprintf(fp,"%st","数量");fprintf(fp,"%s","总价"); for (i=0;i<product.len;i+) fprintf(fp,"n"); fprintf(fp,"%dt",product.datai.num); fprintf(fp,"%st",); fprintf(fp,"%lft",product.datai.unitprice); fprintf(
38、fp,"%dt",product.datai.amount); fprintf(fp,"%.2lf",product.datai.totalprice); fclose(fp); printf("已成功存盘!n");void insertOneGoods() prodNode G; int i,pos; if(product.len=Prod_MAX_NUM) printf("表已满!n"); return;printf("请输入插入位置:"); scanf("%d",&am
39、p;pos); if (pos<0|pos>product.len) printf("插入位置出错!n");return;printf("请输入要插入的物品记录:n"); printf("请输入编号:"); do scanf("%d",&G.num); if (G.num<=0) printf("输入的编号不合理,请重新输入。n"); while (G.num<=0); printf("输入物品的名字:n"); scanf("%s&q
40、uot;,G.name);printf("输入物品的单价:n"); scanf("%lf",&G.unitprice); printf("输入物品的数量:n"); scanf("%d",&G.amount); G.totalprice=G.unitprice*G.amount; for (i=product.len-1;i>=pos;i-)product.datai+1=product.datai; product.datapos=G; product.len=product.len+1; p
41、rintf("插入成功!");void deleteOneGoods() int i,pos; if (product.len=0)printf("表空!n"); return;printf("请输入要删除的物品记录的位置:"); scanf("%d",&pos); if (pos<0|pos>product.len-1) printf("删除的位置出错!n"); return; for(i=pos+1;i<=product.len-1;i+) product.data
42、i-1=product.datai;product.len=product.len-1; printf("删除成功!n");void bubbleSortByNum() int i,j,n; prodNode temp; int tag; n=product.len; for(tag=1,i=0;i<n-1 && tag=1;i+)tag=0; for (j=n-1;j>i;j-) if (product.dataj.num<product.dataj-1.num) temp=product.dataj; product.dataj=pro
43、duct.dataj-1; product.dataj-1=temp;tag=1; void bubbleSortByTotal() int i,j,n; prodNode temp; int tag; n=product.len;for (tag=1,i=0;i<n-1 && tag=1;i+) tag=0; for (j=n-1;j>i;j-)if (product.dataj.totalprice<product.dataj-1.totalprice) temp=product.dataj; product.dataj=product.dataj-1;
44、product.dataj-1=temp;tag=1;void sortGoods() int subMenuItem=1; while (subMenuItem!=0)printf("nn"); printf("*排序子菜单*n"); printf("* 1.按照物品编号进行递增排序 *n"); printf("* 2.按照物品总价进行递增排序 *n"); printf("* 0.退出子菜单 *n"); printf("*n"); printf("请输入所选子菜单
45、项序号:"); scanf("%d",&subMenuItem); switch (subMenuItem)case 1:bubbleSortByNum(); printf("已按照物品的编号进行递增排序。排序后的结果为:n"); outputGoods(); break;case 2: bubbleSortByTotal(); printf("已按照物品的总价进行递增排序。排序后的结果为:n"); outputGoods(); break;case 0:break; default:printf("输入超
46、出范围!n"); break;void outputHead() printf("编号t名字t单价 t数量t总价n");void outputOneGoods(prodNode s) printf("%dt%st%lf t%dt%.2lf",s.num,,s.unitprice,s.amount,s.totalprice);printf("n"); int isNumberExist (int number) int n,i=0; n=product.len; while (i<n && p
47、roduct.datai.num!=number)i+; if (i<n) return i; else return -1;void seqSearchByNumber (int number) int pos; pos=isNumberExist(number); if (pos !=-1) printf("查找成功!查找结果如下:n"); outputHead(); outputOneGoods(product.datapos); elseprintf("查找失败!编号为%d的物品不存在。n",number); void seqSearchByName(char name) int flag=0; int n,i; n=product.len; i=0; while (i<n)if (strcmp(,name)=0) if (flag=0) flag=1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 7037-2025载重汽车翻新轮胎
- 公司房屋装修合同正式合同范本
- 全新人身意外伤害保险合同范本
- 外币贷款合同书标准格式
- 有关终止合作合同的通知书
- Module 3 unit 3 language in use教学设计2024-2025学年外研版八年级英语上册
- 杭州市房地产买卖居间合同
- 酒店股份转让合同
- 企业与个人投资合作合同范本
- 拆迁项目旧房拆除合同书模板
- 写作必备制造悬念的145个方法
- 一年级下册劳动教案
- 付款申请英文模板
- 大同大学综测细则
- 生活会前谈心谈话提纲
- 比较思想政治教育(第二版)第十二章课件
- 普通外科常见疾病临床路径
- 人教版九年级下册初中英语全册作业设计一课一练(课时练)
- 2021新版GJB9001C-2017体系文件内审检查表
- 风筛式清选机的使用与维护
- 《计算流体力学CFD》
评论
0/150
提交评论