cC语言物品管理设计报告.docx
- 文档编号:11707976
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:39
- 大小:579.61KB
cC语言物品管理设计报告.docx
《cC语言物品管理设计报告.docx》由会员分享,可在线阅读,更多相关《cC语言物品管理设计报告.docx(39页珍藏版)》请在冰点文库上搜索。
cC语言物品管理设计报告
学号
2016-2017学年第2学期
1608220203
《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 总体程序框图 ............................................................... 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按照物品总价进行递增排序函数................................. 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)①主函数程序(N-S)流程图及运行界面................... 12
2)①输入物品记录信息的(N-S)流程图及程序运行界面.......... ...................................................................................13
5设计心得 .............................................................................. 21
6参考文献 ...............................................................................22
7源程序代码(物品管理系统) ........................................... 23
1.设计内容及要求
1.1概述
《物品管理系统》主要根据课程设计要求进行设计,从对物品的简单处理着手设计一份物品管理系统。
1.2主要功能
物品管理系统是一个针对物品管理的系统。
该系统功能主要包括八大模块:
1)插入物品记录:
输入物品个数,根据物品个数依次输入每个物品记录的详细信息。
例如物品编号、名字、单价、数量。
2)输出物品记录:
对已经写入磁盘的记录信息的显示。
如无数据,则显示无数据!
3)将物品记录写入文件。
4)插入一个物品记录。
5)删除一个物品记录。
6)对物品记录进行排序。
7)对物品记录进行查找。
8)退出系统。
1.3设计目的及具体要求
主要利用C语言的文件操作能力设计开发一个小型的信息系统,至少具有如下功能:
物品的读和写、物品信息的增删改、物品信息的排序、查找。
操作界面要符合用户的一般习惯,图形或文本界面都可以。
要求:
系统以菜单方式工作,根据菜单项序号提示进行工作。
物品信息包括编号看、名称、单价、数量、总价。
系统以菜单方式工作,实现对物品信息的录入、修改、统计、排序、查询、输出等功能。
2概要设计
2.1系统的功能简介
该系统的主要功能是系统以菜单方式工作,实现对物品信息的录入,修改,统计,排序,查询,输出等功能。
2.2总体程序框图
物品管理系统操作主要流程如下,各个函数分别实现不一样的功能。
2.3各个模块之间的主要关系
该程序的功能主要是实现物品信息的录入,并对物品的相应信息进行进本的增删该的计算。
各个模块之间的关系是相互联系的。
首先,主函数包含了所有的子函数。
主函数是整个程序的核心。
子函数之间也是有联系的,对物品读取,插入删除,检索排序必须是在主函数的情况下进行的。
因此在第一步选择菜单项是非常重要的。
第一步菜单项的选择决定用户所要实现的操作功能。
3设计过程及程序代码
整个系统除了主函数外,另外还有8个函数,实现7人功能:
输入功能、输出功能、写入磁盘功能、插入并显示功能、分类查找并显示功能、分类排序并显示功能。
各个函数的详细设计说明分别如下:
3.1定义结构体及宏定义
#include"stdio.h"
#include"string.h"
#defineNAME_MAX_LEN20
#defineProd_MAX_NUM50
typedefstruct{
intnum;
charname[NAME_MAX_LEN];
doubleunitprice;
intamount;
doubletotalprice;
}prodNode;
typedefstructsequence
{
prodNodedata[Prod_MAX_NUM];
intlen;
}seq;
seqproduct;
3.2主函数main()
voidmain()
{intmenuItemCode=1;
product.len=0;
while(menuItemCode!
=0)
{
printf("\n\n");
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("请输入所选项菜单项序号:
");
scanf("%d",&menuItemCode);
switch(menuItemCode)
{case1:
inputGoods();break;
case2:
outputGoods();break;
case3:
saveGoods();break;
case4:
insertOneGoods();break;
case5:
deleteOneGoods();break;
case6:
sortGoods();break;
case7:
searchGoods();break;
case0:
break;
default:
printf("输入超出范围!
\n");break;
}
}
}
3.3输入物品信息函数
voidinputGoods(){
inti,n;
printf("请输入物品个数:
\n");
scanf("%d",&n);
if(n<0)
return;
for(i=0;i { printf("输入物品的编号: \n"); scanf("%d",&product.data[i].num); printf("输入物品的名字: \n"); scanf("%s",product.data[i].name); printf("输入物品的单价: \n"); scanf("%lf",&product.data[i].unitprice); printf("输入物品的数量: \n"); scanf("%d",&product.data[i].amount); product.data[i].totalprice=product.data[i].unitprice*product.data[i].amount; } product.len=n; } 3.4输出显示物品函数 voidoutputGoods(){ inti; if(product.len==0) {printf("\n无数据! \n"); return; } printf("\n物品的记录为: \n"); printf("编号\t名字\t单价\t数量\t总价\n"); for(i=0;i {printf("%d\t%s\t%lf\t%d\t%.2lf",product.data[i].num,product.data[i].name,product.data[i].unitprice,product.data[i].amount,product.data[i].totalprice); printf("\n"); } } 3.5将物品写入磁盘 voidsaveGoods() {inti; FILE*fp; if(product.len==0) {printf("\n无数据! \n"); return; } fp=fopen("D: \\goods.txt","w"); if(fp==NULL) { printf("文件打开失败! \n"); return; } fprintf(fp,"%s\t","编号"); fprintf(fp,"%s\t","名称"); fprintf(fp,"%s\t","单价"); fprintf(fp,"%s\t","数量"); fprintf(fp,"%s","总价"); for(i=0;i {fprintf(fp,"\n"); fprintf(fp,"%d\t",product.data[i].num); fprintf(fp,"%s\t",product.data[i].name); fprintf(fp,"%lf\t",product.data[i].unitprice); fprintf(fp,"%d\t",product.data[i].amount); fprintf(fp,"%.2lf",product.data[i].totalprice); } fclose(fp); printf("已成功存盘! \n"); } 3.6插入物品记录函数 voidinsertOneGoods() {prodNodeG; inti,pos; if(product.len==Prod_MAX_NUM) { printf("表已满! \n"); return; } printf("请输入插入位置: "); scanf("%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"); 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.data[i+1]=product.data[i]; product.data[pos]=G; product.len=product.len+1; printf("插入成功! "); } 3.7删除一个物品记录函数 voiddeleteOneGoods() { inti,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[i-1]=product.data[i]; product.len=product.len-1; printf("删除成功! \n"); } 3.8按照物品编号进行递增排序函数 voidbubbleSortByNum() {inti,j,n;prodNodetemp; inttag;n=product.len; for(tag=1,i=0;i { tag=0; for(j=n-1;j>i;j--) if(product.data[j].num { temp=product.data[j]; product.data[j]=product.data[j-1]; product.data[j-1]=temp; tag=1; } } } 3.9按照物品总价进行递增排序函数 voidbubbleSortByTotal() {inti,j,n; prodNodetemp; inttag;n=product.len; for(tag=1,i=0;i {tag=0; for(j=n-1;j>i;j--) if(product.data[j].totalprice {temp=product.data[j]; product.data[j]=product.data[j-1]; product.data[j-1]=temp; tag=1; } } } 3.10对物品记录进行排序函数 voidsortGoods() {intsubMenuItem=1; while(subMenuItem! =0) { printf("\n\n"); printf("******************排序子菜单***********************\n"); printf("*1.按照物品编号进行递增排序*\n"); printf("*2.按照物品总价进行递增排序*\n"); printf("*0.退出子菜单*\n"); printf("***************************************************\n"); printf("请输入所选子菜单项序号: ");scanf("%d",&subMenuItem); switch(subMenuItem) { case1: bubbleSortByNum(); printf("已按照物品的编号进行递增排序。 排序后的结果为: \n"); outputGoods(); break; case2: bubbleSortByTotal(); printf("已按照物品的总价进行递增排序。 排序后的结果为: \n"); outputGoods(); break; case0: break; default: printf("输入超出范围! \n"); break; } } } 3.11输出头部信息函数 voidoutputHead() { printf("编号\t名字\t单价\t数量\t总价\n"); } 3.12输出一条物品信息函数 voidoutputOneGoods(prodNodes) {printf("%d\t%s\t%lf\t%d\t%.2lf",s.num,s.name,s.unitprice,s.amount,s.totalprice); printf("\n"); } 3.13判断该编号物品是否存在函数 intisNumberExist(intnumber) {intn,i=0; n=product.len; while(i =number) i++; if(i returni; else return-1; } 3.14根据物品编号进行查找函数 voidseqSearchByNumber(intnumber) {intpos; pos=isNumberExist(number); if(pos! =-1) {printf("查找成功! 查找结果如下: \n"); outputHead(); outputOneGoods(product.data[pos]); } else printf("查找失败! 编号为%d的物品不存在。 \n",number); } 3.15根据物品名字进行查找函数 voidseqSearchByName(charname[]) {intflag=0; intn,i; n=product.len; i=0; while(i { if(strcmp(product.data[i].name,name)==0) { if(flag==0) { flag=1; printf("查找成功! 查找结果如下: \n"); outputHead(); } outputOneGoods(product.data[i]); } i++; } if(flag==0) printf("查找失败! 名字为%s的物品不存在。 \n",name); } 3.16对物品记录进行查找函数 voidsearchGoods() {intnumber; charname[NAME_MAX_LEN]; intsubMenuItem=1; while(subMenuItem! =0) { printf("\n\n"); printf("*********************查找子菜单********************\n"); printf("*1.根据物品编号进行查找*\n"); printf("*2.根据物品名字进行查找*\n"); printf("*0.退出系统*\n"); printf("***************************************************\n"); printf("请输入所选子菜单项序号: ");scanf("%d",&subMenuItem); switch(subMenuItem) { case1: printf("请输入要查找的物品编号: "); scanf("%d",&number); seqSearchByNumb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cC 语言 物品 管理 设计 报告