资源描述
- .
用c编写的产品管理系统,含有产品录入和按价格围搜索,产品信息修改等功能
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedefstruct goods
{
char goods_num[10];
char goods_name[20];
char goods_product[20];
int goods_birth;
int goods_price;
struct goods *next;
}gd;
gd *h_goods;
void Login(); //登陆
int Menu(); //主菜单
void Menu_select(); //查找菜单
void Init(); //系统初始化
void Insert_New_goods(); //输入产品信息
int Find(); //查找产品菜单
void Find_Select(); //查找菜单项选择择函数
void Find_goods(); //查找产品函数
void modiification_goods();//查找产品信息修改函数
void Save(); /*保存信息*/
void Load(); /*加载信息*/
void Login() /*登陆*/
{
system("cls");
}
int Menu() /*主菜单*/
{int sn;
printf("\n\t\t产品管理系统主菜单\n");
printf("=================================================\n");
printf("*\t0----退出系统 *\n");
printf("*\t1----产品入库 *\n");
printf("*\t2---- 查询 *\n");
printf("*\t3----记录修改 *\n");
printf("=================================================\n");
printf("请选择相应选项:");
for(;;)
{ scanf("%d",&sn);
fflush(stdin);
if(sn<0||sn>4)
printf("\n错误!请重新输入:");
elsebreak;
}
return sn;
}
void Menu_select() /*主菜单项选择择函数*/
{
for(;;) /*循环调用模式,保证能进展重复操作*/
{
switch(Menu()) /*功能选择*/
{case 0:
system("cls"); /*去除屏幕先前的显示容*/
Save();
printf("\n\n\t文件保存成功!\n");
printf("\n\n\t欢送下次使用本系统!\n");
getchar();
exit(0);
case 1:Insert_New_goods();break;
case 2:Find_Select();break;
case 3:modiification_goods();break;
default:printf("\n错误!");exit(0);
}
}
}
void Init() /*初始化*/
{
gd*p0;
printf("\n产品初始化开场,请输入货物信息..\n包括编号.产品称名,生产厂家、生产日期、价格..\n");
p0=(gd*)malloc(sizeof(gd));
h_goods=p0;
printf("\n请输入产品的信息:\n");
printf("goodsNo:"); /*输入产品编号(唯一)*/
scanf("%s",p0->goods_num);
printf("goodsName:"); /*输入产品名称(不唯一)*/
scanf("%s",p0->goods_name);
printf("goodsproduct:"); /*输入产品生产厂家(唯一)*/
scanf("%s",p0->goods_product);
printf("goodsbirth:"); /*输入产品生产日期(不唯一)*/
scanf("%d",&p0->goods_birth);
printf("goods_price:"); /*输入产品价格(不唯一)*/
scanf("%d",&p0->goods_price);
p0->next=NULL;
printf("\n产品信息初始化完毕!按任意键继续下一步操作..\n");
getchar();
system("cls");
}
void Insert_New_goods()/*新产品入库*/
{
gd *p,*p0,*p1;
p=p1=h_goods;
printf("\n新货入库模块...\n");
printf("\n请输入信息..\n包括请输入产品信息..\n包括编号.产品称名,生产厂家、生产日期、价格\n");
p0=(gd *)malloc(sizeof(gd));
printf("goodsNo:");
scanf("%s",p0->goods_num);
while(strcmp(p0->goods_num,p1->goods_num)!=0&&p1->next!=NULL)
p1=p1->next;
if(strcmp(p0->goods_num,p1->goods_num)==0) /*此处分两种情况,假设产品存在,那么直接进库,只须输入goods的数量*/
{
printf("\n此编号产品已存在!!直接入库!\n");
}
else/*假设不存在,那么需要输入其他的信息 ,然后在进展插入操作*/
{
printf("goodsName:");
scanf("%s",p0->goods_name);
printf("goodsproduct:"); /*输入产品生产厂家(唯一)*/
scanf("%s",p0->goods_product);
printf("goodsbirth:"); /*输入产品生产日期(不唯一)*/
scanf("%d",&p0->goods_birth);
printf("goods-price:"); /*输入产品价格(不唯一)*/
scanf("%d",&p0->goods_price);
while(p->next)
{
p=p->next;
}
if(h_goods==NULL) h_goods=p0; /*此处分两种情况,链表中没有数据,head直接指向p0处*/
else p->next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/
p0->next=NULL;
}
printf("\n产品入库完毕!按任意键继续下一步操作..\n");
getchar();
system("cls");
}
int Find() /*查找菜单*/
{
int sn;
printf("\n\t\t信息查询菜单\n");
printf("=================================================\n");
printf("*\t0----返回上级 按生产时间排序 \t*\n");
printf("*\t \t*\n");
printf("*\t1----查找产品信息 2----修改产品信息 \t*\n");
printf("*\t \t*\n");
printf("=================================================\n");
printf("请选择相应代码:");
for(;;) /*循环调用模式,保证能进展重复操作*/
{
scanf("%d",&sn);
fflush(stdin);
if(sn<0||sn>4)
printf("\n错误!请重新输入:");
elsebreak;
}
return sn;
}
void Find_Select() /*查找菜单项选择择函数*/
{
system("cls");
for(;;) /*循环调用模式,保证能进展重复操作*/
{
switch(Find()) /*功能选择*/
{
case 0:system("cls"); Menu_select(); break;
case 1:Find_goods();break;
case 2:modiification_goods();break;
default:printf("\n错误!");exit(0);
}
}
}
void Find_goods() /*查找产品信息*/
{
gd *p;
int j;
int goodsprice[2];
p=h_goods;
printf("\ngoods信息查询模块\n");
printf("\n请输入你要查询goods价格围〔中间用逗号隔开〕:"); //输入查找的价格围
scanf("%d",&goodsprice[0]);
scanf("%d",&goodsprice[1]);
for(j=0;j<=10;j++)
{
while((p->goods_price>=goodsprice[0]&&p->goods_price<=goodsprice[1])&&p->next)
p=p->next;
if(p->goods_price>=goodsprice[0]&&p->goods_price<=goodsprice[1])
{
printf("\n价格在%d-%d围的信息为:\n",goodsprice[0],goodsprice[1]);
printf("goodsNo.\tgoodsName\tgoods_product\tgoods_birth\tgoods_price");
printf("\n");
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d",p->goods_num,p->goods_name,p->goods_product,p->goods_birth,p->goods_price);
printf("\n");
}
else
printf("\n此产品价格围无产品,请核对!按任意键返回...");
getchar();
system("cls");
}
}
void modiification_goods() //修改函数
{
gd *p;
char find_goods[10];
p=h_goods;
printf("\n产品信息查询模块\n");
printf("\n请输入你要修改产品编号:");
scanf("%s",find_goods);
while(strcmp(p->goods_num,find_goods)!=0&&p->next)
p=p->next;
if(strcmp(p->goods_num,find_goods)==0)
{
printf("\n产品编号:%d的信息为:\n",find_goods[10]);
printf("goodsNo.\tgoodsName\tgoods_product\tgoods_birth\tgoods_price"); /*此处这样处理,*/
printf("\n");
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d",p->goods_num,p->goods_name,p->goods_product,p->goods_birth,p->goods_price);
printf("\n输入要修改的信息");
printf("\n产品名改为:");
scanf("%s",p->goods_name);
printf("\n生产商改为:");
scanf("%s",p->goods_product);
printf("\n生产日期名改为:");
scanf("%d",&p->goods_birth);
printf("\n产品价格改为:");
scanf("%d",&p->goods_price);
printf("\n修改完成。按任意键返回");
}
else
printf("\n此编号无产品,请核对!按任意键返回...");
getchar();
}
void Save() /*保存信息*/
{
FILE *fp_goods; /*创立文件型指针*/
gd *p,*p0;
p=h_goods;
if((fp_goods=fopen("goods.dat","wb"))==NULL) /*创立文件,进展保存*/
{
printf("\n文件保存失败!\n请重新启动本系统...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(gd),1,fp_goods)!=1) /*将链表中的信息写入文件中*/
printf("\n写入文件失败!\n请重新启动本系统!\n");
p0=p;
p=p->next;
free(p0); /*释放所有结点*/
}
h_goods=NULL;
fclose(fp_goods); /*关闭文件*/
}
void Load() /*加载信息*/
{
gd *p1,*p2,*p3;
FILE *fp; /*创立文件型指针*/
fp=fopen("goods.dat","rb"); /*翻开文件*/
p1=(gd *)malloc(sizeof(gd));
fread(p1,sizeof(gd),1,fp);
h_goods=p3=p2=p1;
while(! feof(fp)) /*读出信息,重新链入链表*/
{ p1=(gd *)malloc(sizeof(gd));
fread(p1,sizeof(gd),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp); /*关闭文件*/
}
void main()
{
FILE *fp_goods; /*创立文件型指针*/
Login();
if((fp_goods=fopen("goods.dat","rb"))==NULL)
{
Init();
}
else Load();
Menu_select(); /*调用主菜单*/
}
- . 可修编.
展开阅读全文