当前位置:网站首页>如何用C语言代码实现商品管理系统开发
如何用C语言代码实现商品管理系统开发
2022-08-04 00:52:00 【亿速云】
如何用C语言代码实现商品管理系统开发
这篇文章主要讲解了“如何用C语言代码实现商品管理系统开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用C语言代码实现商品管理系统开发”吧!
程序介绍
商品管理系统主要是对商品的基本信息进行增、删、改、查以及商品的插入的操作,以便用户可以快速地对这些信息进行管理。
操作流程
用户在编译完成后会产生一个系统的可执行文件,用户只要双击可执行文件就可以进入系统,如图所示,用户根据自己需要的操作选择相应的功能。
代码
#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#define LEN sizeof(struct commdity)#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf\n"#define DATA comm[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].totalstruct commdity/*定义商品信息结构体*/{ int num;/*编号*/ char name[15];/*商品名称*/ double price;/*单价*/ double count;/*数量*/ double total;/*总金额*/};struct commdity comm[50];/*定义结构体数组*/void in();/*录入商品信息*/void show();/*显示商品信息*/void order();/*按总金额排序*/void del();/*删除商品信息*/void modify();/*修改商品息*/void menu();/*主菜单*/void insert();/*插入商品信息*/void total();/*计算总商品数*/void search();/*查找商品信息*//** * 主 函 数*/int main(int argc,char *argv[]){ system("color f0\n"); //白底黑字 int n = 0; menu(); scanf("%d",&n);/*输入选择功能的编号*/ while(n) { switch(n) { case 1: in(); /*调用录入商品信息过程*/ break; case 2: search(); /*查找商品信息过程*/ break; case 3: del(); /*调用删除商品信息的过程*/ break; case 4: modify(); /*调用修改商品信息的过程*/ break; case 5: insert(); /*调用插入数据的过程*/ break; case 6: order(); /*调用排序过程*/ break; case 7: total(); /*计算总数*/ break; default:break; } getch(); menu(); /*执行完功能再次显示菜单界面*/ scanf("%d",&n); } return 0; }void in()/*录入商品信息*/{ int i,m=0;/*m是记录的条数*/ char ch[2]; FILE *fp;/*定义文件指针*/ if((fp=fopen("data","ab+"))==NULL)/*打开指定文件*/ { printf("不能打开文件!\n"); return; } while(!feof(fp)) { if(fread(&comm[m] ,LEN,1,fp)==1) m++;/*统计当前记录条数*/ } fclose(fp); if(m==0) printf("没有找到!\n"); else { system("cls"); show();/*调用show函数,显示原有信息*/ } if((fp=fopen("data","wb"))==NULL) { printf("不能打开文件!\n"); return; } for(i=0;i<m;i++) fwrite(&comm[i] ,LEN,1,fp);/*向指定的磁盘文件写入信息*/ printf("是否输入?(y/n):"); scanf("%s",ch); while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/ { printf("编号:"); scanf("%d",&comm[m].num);/*输入学生学号*/ for(i=0;i<m;i++) if(comm[i].num == comm[m].num) { printf("该记录已经存在,按任意键继续!"); getch(); fclose(fp); return; } printf("商品名:"); scanf("%s",comm[m].name); /*输入学生姓名*/ printf("单价:"); scanf("%lf",&comm[m].price); /*输入商品单价*/ printf("数量:"); scanf("%lf",&comm[m].count); /*输入商品数量*/ comm[m].total=comm[m].price * comm[m].count; /*计算出总金额*/ if(fwrite(&comm[m],LEN,1,fp)!=1) /*将新录入的信息写入指定的磁盘文件*/ { printf("不能保存!"); getch(); } else { printf("%s 已经保存!\n",comm[m].name); m++; } printf("是否继续?(y/n):");/*询问是否继续*/ scanf("%s",ch); } fclose(fp); printf("OK!\n");}void show() /*显示商品信息*/{ FILE *fp; int i,m=0; fp=fopen("data","ab+"); while(!feof(fp)) { if(fread(&comm[m] ,LEN,1,fp)==1) m++; } fclose(fp); printf("编号 商品名称 单价 数量 总金额\t\n"); for(i=0;i<m;i++) { printf(FORMAT,DATA);/*将信息按指定格式打印*/ }}void menu() /*自定义函数实现菜单功能*/{ system("cls"); printf("\n\n\n\n\n"); printf("\t\t|-------------------商品管理系统-----------------|\n"); printf("\t\t|\t\t\t\t\t\t |\n"); printf("\t\t|\t\t 1. 录入记录 |\n"); printf("\t\t|\t\t 2. 查找记录 |\n"); printf("\t\t|\t\t 3. 删除记录 |\n"); printf("\t\t|\t\t 4. 修改记录 |\n"); printf("\t\t|\t\t 5. 插入记录 |\n"); printf("\t\t|\t\t 6. 排序记录 |\n"); printf("\t\t|\t\t 7. 统计记录 |\n"); printf("\t\t|\t\t 0. 退出 |\n"); printf("\t\t|\t\t\t\t\t\t |\n"); printf("\t\t|------------------------------------------------|\n\n"); printf("\t\t\t选择(0-7):");}void order() /*自定义排序函数*/{ FILE *fp; struct commdity t; int i=0,j=0,m=0; if((fp=fopen("data","ab+"))==NULL) { printf("不能打开文件!\n"); return; } while(!feof(fp)) if(fread(&comm[m] ,LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("没有记录!\n"); return; } for(i=0;i<m-1;i++) for(j=i+1;j<m;j++) /*双重循环实现总金额比较并交换*/ if(comm[i].total < comm[j].total) { t=comm[i]; comm[i]=comm[j]; comm[j]=t; } if((fp=fopen("data","wb"))==NULL) { printf("不能打开\n"); return; } for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/ if(fwrite(&comm[i] ,LEN,1,fp)!=1) { printf("%s 不能保存!\n"); getch(); } fclose(fp); printf("保存成功\n");}/*自定义删除函数*/void del() { FILE *fp; int snum,i,j,m=0; char ch[2]; if((fp=fopen("data","ab+"))==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("请输入编号:"); scanf("%d",&snum); for(i=0;i<m;i++) if(snum==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<m;j++) comm[j] = comm[j+1]; /*将后一个记录移到前一个记录的位置*/ m--; /*记录的总个数减1*/ printf("成功删除!\n"); } if((fp=fopen("data","wb"))==NULL) { printf("不能打开!\n"); return; } for(j=0;j<m;j++) /*将更改后的记录重新写入指定的磁盘文件中*/ if(fwrite(&comm[j] ,LEN,1,fp)!=1) { printf("不能保存!\n"); getch(); } fclose(fp); }void search()/*自定义查找函数*/{ FILE *fp; int snum,i,m=0; char ch[2]; if((fp=fopen("data","ab+"))==NULL) { printf("不能打开文件\n"); return; } if(fread(&comm[m],LEN,1,fp)==1) { m++; } fclose(fp); if(m==0) { printf("没有记录!\n"); return; } printf("请输入编号:"); scanf("%d",&snum); for(i=0;i<=m;i++) { if(snum == 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; } } else { printf("没有这条记录!\n"); return; } } }void modify()/*自定义修改函数*/{ FILE *fp; int i,j,m=0,snum; char ch[2]; if((fp=fopen("data","ab+"))==NULL) { printf("不能打开文件!\n"); return; } if(fread(&comm[m],LEN,1,fp)==1) { m++; } if(m==0) { printf("没有记录!\n"); fclose(fp); return; } printf("请输入要修改的记录信息的编号!\n"); scanf("%d",&snum); for(i=0;i<m;i++) if(snum==comm[i].num)/*检索记录中是否有要修改的信息*/ { break; } if(i<m) { printf("已经找到该记录,是否修改?(y/n)\n"); scanf("%s",ch); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) { printf("商品名:\n"); scanf("%s",comm[i].name);/*输入名字*/ printf("\n单价:"); scanf("%lf",&comm[i].price);/*输入商品单价*/ printf("\n数量:"); scanf("%lf",&comm[i].count);/*输入商品数量*/ comm[i].total = comm[i].price * comm[i].count; printf("保存成功!"); } else { return; } } else { printf("没有找到!"); getchar(); return; } if((fp=fopen("data","wb"))==NULL) { printf("不能打开文件!\n"); return; } for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/ { if(fwrite(&comm[j] ,LEN,1,fp)!=1) { printf("不能保存!"); getch(); } } fclose(fp);}void insert() /*自定义插入函数*/{ FILE *fp; int i,j,k,m=0,snum; if((fp=fopen("data","ab+"))==NULL) { printf("不能打开文件!\n"); return; } while(!feof(fp)) if(fread(&comm[m],LEN,1,fp)==1) m++; if(m==0) { printf("没有记录!\n"); fclose(fp); return; } printf("请输入要插入记录的位置!\n"); scanf("%d",&snum); /*输入要插入的位置*/ for(i=0;i<m;i++) if(snum == comm[i].num) break; for(j=m-1;j>i;j--) comm[j+1] = comm[j]; /*从最后一条记录开始均向后移一位*/ printf("now please input the new information.\n"); printf("编号:"); scanf("%d",&comm[i+1].num); for(k=0;k<m;k++) if(comm[k].num == comm[i+1].num&&k!=i+1) { printf("该编号已经存在,按任意键继续!"); getch(); fclose(fp); return; } printf("商品名:\n"); scanf("%s",comm[i+1].name); printf("\n单价:"); scanf("%lf",&comm[i+1].price); printf("\n数量:"); scanf("%lf",&comm[i+1].count); comm[i+1].total = comm[i+1].price * comm[i+1].count ; if((fp=fopen("data","wb"))==NULL) { printf("不能打开文件!\n"); return; } for(k=0;k<=m;k++) if(fwrite(&comm[k] ,LEN,1,fp)!=1) /*将修改后的记录写入磁盘文件中*/ { printf("不能保存!"); getch(); } fclose(fp);}void total() /* 统计*/{ FILE *fp; int m=0; if((fp=fopen("data","ab+"))==NULL) { printf("不能打开记录!\n"); return; } while(!feof(fp)) if(fread(&comm[m],LEN,1,fp)==1) m++;/*统计记录个数即记录个数*/ if(m==0) { printf("没有记录!\n"); fclose(fp); return; } printf("一共有 %d 条记录!\n",m);/*将统计的个数输出*/ fclose(fp);}
感谢各位的阅读,以上就是“如何用C语言代码实现商品管理系统开发”的内容了,经过本文的学习后,相信大家对如何用C语言代码实现商品管理系统开发这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
边栏推荐
- 求解同余方程 数论 扩展欧几里得
- 2022年8月份DAMA-CDGA/CDGP数据治理认证招生简章
- LeetCode 19:删除链表的倒数第 N 个结点
- .NET静态代码织入——肉夹馍(Rougamo) 发布1.1.0
- Shell编程之循环语句(for、while)
- typescript58-泛型类
- 共享新能源充电桩充电站建设需要些什么流程及资料?
- Analysis of usage scenarios of mutex, read-write lock, spin lock, and atomic operation instructions xaddl and cmpxchg
- 七夕佳节即将来到,VR全景云游为你神助攻
- 米哈游--测试开发提前批
猜你喜欢
随机推荐
Web3 安全风险令人生畏?应该如何应对?
typescript57-数组泛型接口
取模运算(MOD)
如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因试读版
LYVE1抗体丨Relia Tech LYVE1抗体解决方案
【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘
因为一次bug的教训,我决定手撕Nacos源码(先撕客户端源码)
Eight things to pay attention to in spot silver
c语言分层理解(c语言操作符)
Talking about the future development direction of my country's industrial parks
【超详细教程】LVS+KeepAlived高可用部署实战应用
Google Earth Engine - Calculates the effective width of rivers using publicly available river data
扩展卡尔曼滤波EKF
C语言 函数递归
114. 如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因
分布式事务框架 seata
XSS-绕过for循环过滤
GeoAO:一种快速的环境光遮蔽方案
BGP实验(含MPLS)
Analysis: What makes the Nomad Bridge hack unique