📄 shopon.c
字号:
// shop.cpp : 定义控制台应用程序的入口点。
//
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*文件名:shop.c
*文件描述:售货管理系统
*版本号:1.0
参数记录:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NUM_NAME 30
#define true 1
#define false 0
struct commodity //commodity farme
{
char name[MAX_NUM_NAME];
unsigned int id;
float price;
int quantity;
int outquan;
int nowquan;
struct commodity * later;
struct commodity * front;
};
typedef struct commodity * pcomd;
typedef struct commodity comd;
int cmna=true;
int cmid=true;
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: keycle
*参 数: 无
*type name[IN]:
*功能描述: 清键盘缓存
*返回值: 无返回
*抛出异常:
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
void keycle()
{
int c;
while((c=getchar())!='\n' && c!=EOF)
;
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: serachname
*参 数: 链表头指针,要搜索的字符串(pcomd head,char *comname)
*type name[IN]:
*功能描述: 搜索相同名称的结构(商品名相同)
*返回值: 结构指针( pcomd )
*抛出异常:没搜索到,返回NULL
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
pcomd serachname(pcomd head,char *comname) //serach commodity by name
{
pcomd p;
int a;
p=head;
if(NULL==p)
{
printf("*error*没有商品*error*\n");
return NULL;
}
while(1)
{
a=strcmp(comname, p->name);
if(!a)
{
cmna=true;
return p;
}
if((p->later)==NULL)
{
cmna=false;
return NULL;
}
p=p->later;
}
cmna=false;
return NULL;
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: serachid
*参 数: 链表头指针,要搜索的ID号(pcomd head,unsigned int idnum)
*type name[IN]:
*功能描述: 搜索相同ID号的结构(商品ID相同)
*返回值: 结构指针( pcomd )
*抛出异常:没搜索到,返回NULL
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
pcomd serachid(pcomd head,unsigned int idnum) //serach commodity by id
{
pcomd p;
p=head;
if(NULL==p)
{
printf("*error*没有商品*error*\n");
return NULL;
}
while(1)
{
if(idnum==p->id)
{
cmid=true;
return p;
}
if((p->later)==NULL)
{
cmid=false;
return NULL;
}
p=p->later;
}
cmid=false;
return NULL;
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: edit
*参 数: 链表头指针,要编辑的结构指针(pcomd head,pcomd com)
*type name[IN]:
*功能描述: 编辑结构体里的参数(修改商品信息)
*返回值: 结构指针( pcomd )
*抛出异常:
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
pcomd edit(pcomd head,pcomd com)
{
pcomd p;
char c;
int i=1; //确定是否继续循环修改
p=com;
while(i)
{
printf("是否要更改商品信息? (Y/N)\n");
c=getchar();
keycle();
if(c=='n' || c=='N' )
{
i=0;
}
else if(c=='y' || c=='Y' )
{
printf("请输入商品名称:\n");
scanf("%s",p->name);
keycle();
serachname(head, p->name);
while(cmna)
{
printf("商品名称重复!\n请重新输入:\n");
scanf("%s",p->name);
keycle();
serachname(head, p->name);
}
printf("请输入商品ID:\n");
scanf("%d",&p->id);
keycle();
serachid(head, p->id);
while(cmid)
{
printf("商品ID重复!\n请重新输入:\n");
scanf("%d",&p->id);
keycle();
serachid(head,p->id);
}
printf("请输入商品价格:\n");
scanf("%f",&p->price);
keycle();
printf("请输入商品采购数量:\n");
scanf("%d",&p->quantity);
keycle();
p->nowquan=p->quantity;
i=0; //确定是否继续循环修改
}
else
i=1;
}
return p;
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: showall
*参 数: 链表头指针(pcomd head)
*type name[IN]:
*功能描述: 显示链表的所有数据(显示所有商品)
*返回值: 无
*抛出异常:
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
void showall(pcomd head)
{
pcomd p;
p=head->later;
printf("所有商品清单:\n");
while(p->later)
{
printf("名称:%s\nID号:%d\n价格:¥%-8.2f\n进货总量:%d\n销售数量:%d\n现有数量:%d\n",p->name,p->id,p->price,p->quantity,p->outquan,p->nowquan);
p=p->later;
printf("\n\n");
}
printf("名称:%s\nID号:%d\n价格:¥%-8.2f\n进货总量:%d\n销售数量:%d\n现有数量:%d\n",p->name,p->id,p->price,p->quantity,p->outquan,p->nowquan);
printf("\n\n");
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: printcom
*参 数: 结构指针(pcomd commod)
*type name[IN]:
*功能描述: 显示指定的结构(显示指定的商品)
*返回值: 无
*抛出异常:
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
void printcom(pcomd commod)
{
printf("名称:%s\nID号:%d\n价格:¥%-8.2f\n进货总量:%d\n销售数量:%d\n现有数量:%d\n",commod->name,commod->id,commod->price,commod->quantity,commod->outquan,commod->nowquan);
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: dellcom
*参 数: 结构指针(pcomd pdell)
*type name[IN]:
*功能描述: 删除指定结构(删除指定商品)
*返回值: 删除后返回NULL,没删除返回这个结构
*抛出异常:
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
pcomd dellcom(pcomd pdell)
{
pcomd p;
char c;
p=pdell;
if(cmid)
{
for(;;)
{
printf("是否要删除此商品? (Y/N)\n");
c=getchar();
if(c=='n' || c=='N' )
{
return pdell;
}
else if(c=='y' || c=='Y' )
{
p->later->front=p->front;
p->front->later=p->later;
free(p);
printf("已经删除此商品\n");
return NULL;
}
else
printf("请输入 (Y/N)\n");
}
}
return pdell;
}
/*= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =
*函数名: addcom
*参 数: 链表头指针(pcomd head)
*type name[IN]:
*功能描述: 添加结构体(添加一件商品)
*返回值: 返回链表头指针
*抛出异常:
*作 者: 张学刚
= = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = == = = = = = = = = = =*/
pcomd addcom(pcomd head)
{
pcomd p,r;
r=head;
while(r->later)
r=r->later;
p=(pcomd)malloc(sizeof(struct commodity));
printf("请输入商品名称:\n");
scanf("%s",p->name);
keycle();
serachname(head, p->name);
while(cmna)
{
printf("商品名称重复!\n请重新输入:\n");
scanf("%s",p->name);
keycle();
serachname(head, p->name);
}
printf("请输入商品ID:\n");
scanf("%d",&p->id);
keycle();
serachid(head, p->id);
while(cmid)
{
printf("商品ID重复!\n请重新输入:\n");
scanf("%d",&p->id);
keycle();
serachid(head,p->id);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -