C语言商品订购系统(跟购物系统有些差别)
要求
1.输入商品信息并保存至文件(包括商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量等,至少包括10种产品供顾客选择)。
2.使用链表实现商品的增、删、改功能,并把更新后的信息保存至文件。
3.查询商品功能,如输入商品名称、商品型号等。
4.选购流程:所选商品编号—列出对应商品的信息—要求顾客输入邮寄地址信息—确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。
5.订购信息保存至文件。
6.每天订购统计功能,并能根据输入的数据显示低于或高于此数据的商品信息。
(这里没有计算购买所需的钱数,后续补充上)
代码
shangpin.txt文件(各字段用空格分隔)
100 哇哈哈 矿泉水 1.00 崂山 9996 4
101 农夫山泉 矿泉水 2.00 崂山 10000 0
102 可比克 零食 5.00 福建 9998 2
103 可比克2 零食 5.00 福建 9998 2
104 可比克3 零食 5.00 福建 9998 2
105 可比克 零食 5.00 福建 9998 2
106 牛肉粒 零食 32.00 内蒙古 2000 0
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义商品结构体
typedef struct _shangping
{int bh; //编号char name[30]; //名称char xh[20]; //型号float price; //价格char chandi[10]; //产地int kc; //库存int ydg; //已订购数量
}ShangpinInfo;//定义链表节点
typedef struct _stNode
{ShangpinInfo product;struct _stNode* next;
}LinkNode;//保存订购信息
typedef struct _dginfo
{int bh[20]; //商品编号int cnt[20]; //商品订购数量int nmb; //实际订购商品的种类数量char addr[40]; //订购人地址char phone[12];//订购人电话}Dginfo;Dginfo g_dginfo[100]; //定义全局变量保存订购信息
int g_dgNmb = 0; //定义全局变量,保存订购信息数量//从文件中读取商品信息
LinkNode* ReadFile(const char* name)
{LinkNode* head,*p,*t;FILE* fp = 0;if ((fp=fopen(name,"r"))==0){printf("读取商品信息失败...\n");return 0;}head = (LinkNode*)malloc(sizeof(LinkNode));head->next = NULL;p = head;//读取文件while(!feof(fp)){//逐行读取文件t = (LinkNode*)malloc(sizeof(LinkNode));t->next = NULL;fscanf(fp,"%d %s %s %f %s %d %d\n",&t->product.bh,t->product.name,t->product.xh,&t->product.price,t->product.chandi,&t->product.kc,&t->product.ydg);if(t->product.bh > 0) //避免读取到空行{p->next = t;p = t;}else{free(t); //空行,读取错误,释放空间t = 0;}}return head; //返回链表头
}//更新商品信息文件
void UpdateFile(const char* name,LinkNode* head)
{LinkNode*t;FILE* fp = 0;if(head == 0) return;if ((fp=fopen(name,"w"))==0){printf("读取商品信息失败...\n");return ;}t = head->next;while(t){if(t->next)fprintf(fp,"%d %s %s %.2f %s %d %d\n",t->product.bh,t->product.name,t->product.xh,t->product.price,t->product.chandi,t->product.kc,t->product.ydg);else //最后一行不写入回车符fprintf(fp,"%d %s %s %.2f %s %d %d",t->product.bh,t->product.name,t->product.xh,t->product.price,t->product.chandi,t->product.kc,t->product.ydg);t = t->next;}fclose(fp);
}//添加商品
LinkNode* Addshangpin(LinkNode* head)
{LinkNode* p,*t;system("cls");//如果头为空,则创建if (head == 0){head = (LinkNode*)malloc(sizeof(LinkNode));head->next = NULL;}p = head;while(p->next){p = p->next;}fflush(stdin);//尾插法t = (LinkNode*)malloc(sizeof(LinkNode));t->next = NULL;printf("请输入商品编号:");scanf("%d",&t->product.bh); getchar();printf("请输入商品名称:");scanf("%s",t->product.name); getchar();printf("请输入商品型号:");scanf("%s",t->product.xh); getchar();printf("请输入商品价格:");scanf("%f",&t->product.price); getchar();printf("请输入商品产地:");scanf("%s",t->product.chandi);printf("请输入商品库存:");scanf("%d",&t->product.kc);printf("请输入商品的已订购数量:");scanf("%d",&t->product.ydg);p->next = t;printf("商品添加成功\n");system("pause");return head;
}//删除商品
LinkNode* Delshangpin(LinkNode* head)
{LinkNode* p,*t;int id;system("cls");fflush(stdin);printf("请输入需要删除的商品编号:");scanf("%d",&id);p = head;while (p->next){if (p->next->product.bh == id){printf("商品已删除\n");system("pause");t = p->next;p->next = t->next;free(t);t = 0;return head;}p = p->next;}printf("未找到该商品\n");system("pause");return head;
}//修改商品信息
LinkNode* Modshangpin(LinkNode* head)
{LinkNode* p;int id;fflush(stdin);system("cls");printf("请输入需要修改的商品编号:");scanf("%d",&id);p = head->next;while (p){if (p->product.bh == id){printf("请输入商品名称:");scanf("%s",p->product.name); getchar();printf("请输入商品型号:");scanf("%s",p->product.xh); getchar();printf("请输入商品价格:");scanf("%f",&p->product.price); getchar();printf("请输入商品产地:");scanf("%s",p->product.chandi);printf("请输入商品库存:");scanf("%d",&p->product.kc);printf("请输入商品的已订购数量:");scanf("%d",&p->product.ydg);printf("商品信息已修改完成\n");system("pause");return head;}p = p->next;}printf("未找到该商品\n");system("pause");return head;
}//查询商品
LinkNode* Findshangpin(LinkNode* head)
{LinkNode* p;char buf[30]={0};fflush(stdin);system("cls");if (head == 0){printf("目前暂无商品\n");system("pause");return 0;}printf("请输入要查询的商品名称或者型号:");scanf("%s",buf);p = head->next;printf("编号 名称 型号 价格 产地 库存 已订购\n");while (p){if (strcmp(p->product.name,buf)==0 || strcmp(p->product.xh,buf)==0){printf("%4d %s %s %.2f %s %d %d\n",p->product.bh,p->product.name,p->product.xh,p->product.price,p->product.chandi,p->product.kc,p->product.ydg);system("pause");return p;}p = p->next;}printf("未找到该名称或者型号的商品\n");system("pause");return 0;
}//显示所有商品
void showAll(LinkNode* head)
{LinkNode* p;system("cls");if(head==0){printf("目前暂无商品\n");return;}p = head->next;printf("编号 名称 型号 价格 产地 库存 已订购\n");while (p){printf("%4d %s %s %.2f %s %d %d\n",p->product.bh,p->product.name,p->product.xh,p->product.price,p->product.chandi,p->product.kc,p->product.ydg);p = p->next;}system("pause");return ;
}//订购信息写入文件
void UpdateDginfo(const char* name)
{int i,j;FILE* fp;if((fp = fopen(name,"w")) == 0){printf("文件打开失败\n");return;}for (i=0;i<g_dgNmb;i++){//订购商品编号for(j=0;j<g_dginfo[i].nmb;j++){//订购商品编号if(j< g_dginfo[i].nmb-1)fprintf(fp,"%d,",g_dginfo[i].bh[j]);elsefprintf(fp,"%d ",g_dginfo[i].bh[j]);}//对应的数量for(j=0;j<g_dginfo[i].nmb;j++){if(j< g_dginfo[i].nmb-1)fprintf(fp,"%d,",g_dginfo[i].cnt[j]);elsefprintf(fp,"%d ",g_dginfo[i].cnt[j]);}//收件人信息fprintf(fp,"%s %s\n",g_dginfo[i].addr,g_dginfo[i].phone);}fclose(fp);
}//订购商品
void Shopping(LinkNode* head,const char* name)
{LinkNode* p;int id,cnt=0;char ch;char addr[30];Dginfo dg;dg.nmb = 0;fflush(stdin);system("cls");if(head==0){printf("目前暂无商品\n");return ;}while(1){printf("请输入需要订购的商品编号:");scanf("%d",&id);p = head->next;while(p && p->product.bh != id)p = p->next;if(p){printf("请输入订购数量:");scanf("%d",&cnt);p->product.ydg += cnt;//订购后是否需要从库存中减去?如果库存小于订购数量怎么处理?//这里暂时不考虑那么复杂,只是单纯的从库存中减去订购数量p->product.kc -= cnt; //减去订购数量dg.bh[dg.nmb] = id;dg.cnt[dg.nmb] = cnt;dg.nmb++;}elseprintf("未找到该商品,");printf("是否继续订购(Y/N):");fflush(stdin);ch = getchar();if(ch == 'Y' || ch == 'y')continue;elsebreak;}fflush(stdin);printf("请输入收件人地址:");scanf("%s",&dg.addr); getchar();printf("请输入收件人电话:");scanf("%s",&dg.phone);getchar();//接收回车符g_dginfo[g_dgNmb] = dg;g_dgNmb++;//更新订购信息UpdateFile(name,head); //更新库存文件//订购信息写入文件UpdateDginfo("dg.txt");
}//统计每天的订购信息,订购信息保存到了 g_dginfo全局变量中,可以考虑写入到文件
void Tongji()
{//按照产品编号统计int product[100][2] = {0};int nmb = 0;int i,j,k,id;int op,cnt=0;system("cls");fflush(stdin);//统计每种商品的订购信息for (i=0;i<g_dgNmb;i++){for (j=0;j<g_dginfo[i].nmb;j++){id = g_dginfo[i].bh[j];//查找编号是否已经存在for (k=0;k<nmb;k++){if(product[k][0] == id)break;}if (k == nmb){product[nmb][0] = id;product[nmb][1] = g_dginfo[i].cnt[j];nmb++;}elseproduct[k][1] += g_dginfo[i].cnt[j];}}//显示所有订购信息while(1){system("cls");printf("1.显示所有订购信息\n");printf("2.显示特定数量的订购信息\n");printf("3.退出统计\n");scanf("%d",&op);if(op == 3){//system("pause");return ;}else if(op == 2 || op == 1){cnt = 0;if(op == 2){printf("请输入指定数量:");scanf("%d",&cnt);}printf("编号 数量\n");for (i=0;i<nmb;i++){if(product[i][1] > cnt)printf("%d %d\n",product[i][0],product[i][1]);}system("pause");}}}//释放内存
void Release(LinkNode* head)
{LinkNode* p;while (head){p = head->next;free(head);head = p;}
}int main()
{int op;LinkNode* head = 0;head = ReadFile("shangpin.txt");while(1){system("cls");printf("1.显示所有商品信息\n");printf("2.新增商品\n");printf("3.修改商品信息\n");printf("4.删除商品\n");printf("5.订购商品\n");printf("6.统计订购商品\n");printf("7.查找商品\n");printf("0.退出程序\n");scanf("%d",&op);switch(op){case 0:printf("谢谢使用,再见\n");system("pause");return 0;case 1:showAll(head);break;case 2:head = Addshangpin(head);UpdateFile("shangpin.txt",head);break;case 3:head = Modshangpin(head);UpdateFile("shangpin.txt",head);break;case 4:head = Delshangpin(head);UpdateFile("shangpin.txt",head);break;case 5:Shopping(head,"shangpin.txt");break;case 6:Tongji();break;case 7:Findshangpin(head); //可以返回商品的指针break;}}//释放内存if(head){Release(head);head = 0;}return 0;
}
C语言商品订购系统(跟购物系统有些差别)相关推荐
- javaweb JAVA JSP购物系统购物商城系统源码(jsp电子商务系统)购物系统mvc
javaweb JAVA JSP购物系统购物商城系统源码(jsp电子商务系统)购物系统mvc protected void doGet(HttpServletRequest req, HttpServ ...
- javaweb JAVA JSP药品销售管理系统JSP医药销售管理系统JSP购物商城系统JSP电子商务系统JSP购物系统
javaweb JAVA JSP药品销售管理系统JSP医药销售管理系统JSP购物商城系统JSP电子商务系统JSP购物系统 protected void doGet(HttpServletRequest ...
- javaweb JAVA JSP手机销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上手机店在线销售
JSP手机销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上手机店在线销售 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租 ...
- javaweb JAVA JSP水果销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上水果店在线销售
javaweb JAVA JSP水果销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上水果店在线销售 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情 ...
- javaweb JAVA JSP书店销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上书店在线销售
JSP书店销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上书店在线销售 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租赁 ...
- javaweb JAVA JSP零食销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上零食在线销售
JSP零食销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上零食在线销售 大家好,很高兴和大家分享Java项目和经验.不管同学们是出于什么需求.都希望各位计算机专业的同学有一个提 ...
- JSP眼镜销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上眼镜在线销售
JSP眼镜销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上眼镜在线销售
- javaweb JAVA JSP婴幼儿用品销售系统jsp购物系统购物商城系统源码(电子商务系统)网上在线销售
javaweb JAVA JSP婴幼儿用品销售系统jsp购物系统购物商城系统源码(电子商务系统)网上在线销售 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线 ...
- javaweb JAVA JSP汽车销售系统商城购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上汽车
JSP汽车销售系统商城购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上汽车
- c语言商品订购系统总结报告,c语言课程设计报告-商业销售管理系统
c语言课程设计报告-商业销售管理系统 (14页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 C语言课程设计商业销售管理系统学号姓名班级软 ...
最新文章
- 【Qt】Q_PROPERTY():属性系统
- 史上最强最贵Mac Pro诞生,iPadOS和iOS分家!WWDC19全面总结
- 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程
- php读取excel类——PHP-ExcelReader
- 李开复:AlphaGo 若打败了世界冠军,意味着什么?
- python(numpy,pandas6)——pandas数据形式的简介,排序方式sort_index,sort_values
- 永不消逝的缓存数据:Adaptec 5445Z RAID卡评测(连载之一)
- kubernetes kubeadm init kube-apiserver.yaml already exists
- WPE实际经验和实例
- HTML页面乱码怎么解决?
- 微软office Excel 2013 2016 如何启用宏功能的图文教程
- 通过新版阿里ACE认证,实验操作题你来解一下
- 关于笔记本安装Deepin 或者ubuntu操作系统,无法进入界面。
- python+qqbot实现qq聊天机器人
- spring-test部分翻译
- 程序员增加收入的几种方法
- html双击变成可编辑状态,JS实现双击编辑可修改状态的方法
- 再续!一篇带你了解那些适合日常使用的开源工具和应用(设计篇)
- Github项目(克隆,上传)简单git命令流程使用记录
- 到底什么是5G LAN?
热门文章
- wordpress主题 Cosy主题3.X下载
- Ubuntu系统中清理DNS缓存
- 小米Max详细刷成开发版开启Root超级权限的经验
- 无法使用安全密码身份验证登录到服务器,使用安全密码验证登录(SPA)”后为什么登录失败...
- LWN:终于能够防护 straight-line 预测执行漏洞了!
- [MySQL系列] 使用STRAIGHT_JOIN 优化inner join查询排序索引问题
- Struts 官方下载地址
- c语言倒直角梯形,请问一下大佬们这段代码问题在哪里?
- 华为大数据客户端安装步骤
- 程序员都是段子手,注释都带魔性