商品管理系统开发

商品管理系统开发

  • 程序介绍
    • 代码

程序介绍

商品管理系统主要是对商品的基本信息进行增、删、改、查以及商品的插入的操作,以便用户可以快速地对这些信息进行管理。
操作流程
用户在编译完成后会产生一个系统的可执行文件,用户只要双击可执行文件就可以进入系统,如图所示,用户根据自己需要的操作选择相应的功能。
在这里插入图片描述

代码

#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);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620084.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

商品管理系统——商品库存和采购需求检索功能

一 商品库存 1 控制器 /*** 功能描述&#xff1a;商品库存分页查询** param params 过滤条件* return R 返回给前端的数据* author cakin* date 2020/11/8*/RequestMapping("/list")public R list(RequestParam Map<String, Object> params) {PageUtils page …

DevOps系列文章之 Python基础

列表 Python中的列表类似于C语言中的数组的概念&#xff0c;列表由内部的元素组成&#xff0c;元素可以是任何对象 Python中的列表是可变的 简单的理解就是&#xff1a;被初始化的列表&#xff0c;可以通过列表的API接口对列表的元素进行增删改查 1、定义列表 1.可以将列表当成…

商品管理

淘淘商品管理 服务搭建(详细) 工程结构 taotao-parent&#xff1a;父工程&#xff0c;打包方式pom&#xff0c;管理jar包的版本号。 ​ | (项目中所有工程都应该继承父工程。) ​ |–taotao-common&#xff1a;通用的工具类通用的pojo,util。打包方式jar ​ |–taotao-man…

基于hadoop的商品推荐系统_更好用的商品管理软件推荐,免费的维格表进销存系统...

概述 维格表是集商品进、销、存和财务管理一体化的数据平台&#xff1a;即将物流与钱流、业务数据与财务数据自动集成&#xff0c;实现商品库存、往来账项、资金流动、费用收支及利润浑然联结。 它提供了全面的业务解决&#xff0c;包括&#xff1a;订货管理、采购管理、销售管…

大宗商品进口管理软件可以帮助企业解决哪些?

什么是大宗商品贸易&#xff1f;简单讲就是大宗商品在国际上自由流通。以贸易的形式&#xff0c;把商品从价格低的地方拉到价格高的地方出售。大宗商品是指可进入流通领域&#xff0c;可在工农业领域生产与消费使用的大批量买卖的。主要包括的类别有&#xff1a;能源商品、基础…

复习之docker部署--项目实战

一、实验环境 1.安装7.6虚拟机 最小化安装&#xff0c;不安装图形&#xff01; 2.封装虚拟机 关闭selinux关闭防火墙关闭networkmanager配置网络&#xff0c;保证可以ssh修改主机名添加双向解析配置7.6网络仓库--安装常用的工具 配置完成后&#xff0c;在真机ssh虚拟机 如果…

小马的免杀

一般的php一句话后门很容易被网站防火墙waf拦截&#xff0c;而waf通常通过判断关键字来辨别一句话木马&#xff0c;要想绕过waf就需要对木马进行一些变形。(仅供分享经验&#xff0c;不可用作非法用途) 图片来源 一句话木马 <?php eval($_POST[attack]);?>一.先看一只有…

算法通关村——解析堆在数组和链表的应用

1. 堆 1.1 什么是堆&#xff1f; 堆是将一组数据以完全二叉树的形式存储在数组里面。一般有大根堆和小根堆。 小根堆&#xff1a;任意节点的值小于等于它的左右孩子&#xff0c;最小值在堆顶。 大根堆&#xff1a;任意节点的值大于等于它的左右还是&#xff0c;最大值在堆顶。…

JavaSE 集合框架及背后的数据结构

目录 1 介绍2 学习的意义2.1 Java 集合框架的优点及作用2.2 笔试及面试题 3 接口 interfaces3.1 基本关系说明3.2 Collection 常用方法说明3.3 Collection 示例3.4 Map 常用方法说明3.5 Map 示例 4 实现 classes5 Java数据结构知识体系5.1 目标5.2 知识点 1 介绍 集合&#xf…

贝佐斯前妻签署捐赠誓言:承诺捐出半数财产 目前价值接近180亿美元

【TechWeb】5月28日消息&#xff0c;据国外媒体报道&#xff0c;在今年1月份宣布同贝佐斯离婚、并在4月份完成程序、公布财产分配方案后&#xff0c;麦肯齐贝佐斯也成为全球最富有的女性之一&#xff0c;资产超过了300亿美元。 而在处理完离婚程序之后还不到两个月&#xff0c;…

走着走着,就剩下了沉默

从前&#xff0c;车马很慢&#xff0c;一生只够爱一人。如今&#xff0c;万物很快&#xff0c;一生却难得一人心。 这段话看起来很伤感&#xff0c;却有几分真实。 如今的社会&#xff0c;能够深情共白首的伴侣少之又少&#xff0c;更多的是感情变质&#xff0c;互相辜负。 想…

“是不是不能找程序员做男朋友?” 来听听程序员们怎么回答!

Time will tell. 今日在吃瓜又看到了一条有意思的话题: 尽管35岁之后失业的程序员确实不少,但是这样说是不是太真实、冷血了一些… 毕竟,我以为,两个人是既然会在一起,那应该就是想要一起过一辈子的!而大部分人在一起也都是因为相互喜欢吧! 所以咱们都这么现实的吗?这…

Cesium 显示经纬高

文章目录 需求分析 需求 页面展示经、纬度和高 分析 html <div id"latlng_show" style"width:340px;height:30px;position:absolute;bottom:40px;right:200px;z-index:1;font-size:15px;"><div style"width:100px;height:30px;float:left;…

性能测试面试问题,一周拿3个offer不嫌多

性能测试的三个核心原理是什么&#xff1f; 1.基于协议。性能测试的对象是网络分布式架构的软件&#xff0c;而网络分布式架构的核心是网络协议 2.多线程。人的大脑是单线程的&#xff0c;电脑的cpu是多线程的。性能测试就是利用多线程的技术模拟多用户去负载 3.模拟真实场景。…

检测链表中是否存在环

题目、解析和代码 题目&#xff1a;给定一个单链表&#xff0c;判断其中是否有环的存在 解析&#xff1a;这里使用两个遍历速度不一样的结点进行判断&#xff0c;一个慢结点从首结点开始遍历&#xff0c;这个结点每次只遍历一个结点&#xff1b;一个快结点从第二个结点进行遍历…

连接器信号完整性仿真教程 七

本将介绍微带线及差分微带线仿真。做连接器信号完整性仿真时&#xff0c;有时后没法将激励端口直接设置到连接器端子上&#xff0c;这就需画出连接器PCB PAD&#xff0c;将激励端口设置在PAD的端面上&#xff0c;或者用引线连接PAD&#xff0c;将引线引出到适当的位置&#xff…

登录校验-Filter-登录校验过滤器

目录 思路 登录校验Filter-流程 步骤 流程图 登录校验Filter-代码 过滤器类 工具类 测试登录 登录接口功能请求 其他接口功能请求 前后端联调 思路 前端访问登录接口&#xff0c;登陆成功后&#xff0c;服务端会生成一个JWT令牌&#xff0c;并返回给前端&#xff0…

谷歌相册明年取消无限空间储存政策

简单介绍 据可靠消息称谷歌相册将从明年夏季也就是 2021年6月1日 开始取消无限存储容量政策。从明年夏季开始继续上传照片和视频将占用谷歌分配给用户的15 GB免费空间。 原文转载自浅行浅醉博客 原文阅读&#xff1a;点击阅读

黑客盯上了Google相册漏洞

2019独角兽企业重金招聘Python工程师标准>>> 研究人员在Google相册应用上发现了一个已修复的漏洞。有了这个漏洞&#xff0c;黑客可以使用Google相册来跟踪他们的位置历史记录。 来自互联网安全公司Imperva的Ron Masas在博客文章中解释说&#xff0c;Google相册最近…

笔记本电脑与台式机同步连接_如何将台式机与Google云端硬盘(和Google相册)同步...

笔记本电脑与台式机同步连接 Google has been doing its part to make sure everyone has a backup of important data, and it recently released a new tool for Windows and Mac users to take that redundancy to the next level. Appropriately named Backup and Sync, it…