c语言仓库信息管理
来源:互联网 发布:软件产品质量控制 编辑:程序博客网 时间:2024/06/05 19:25
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <malloc.h>typedef struct information //货物信息 {char number[20]; //编号 char sname[20]; //名称 float price; //价格 int count; //数量 struct information *next;}inf;void menu(inf *head) //显示菜单{system("color 3E"); printf("\t\t*****************************************************\n");printf("\t\t\t\t欢迎进入货物信息管理系统\n"); printf("\t\t*****************************************************\n");printf("\n");printf("\t\t|====================================================|\n");printf("\t\t|______________________基本信息______________________|\n");printf("\t\t| 1.创建货物信息 | 2.添加货物信息 |\n");printf("\t\t| 3.查找货物信息 | 4.修改货物信息 |\n");printf("\t\t| 5.删除货物信息 | 6.保存文件信息 |\n");printf("\t\t| 7.读取文件信息 | 8.输出货物信息 |\n");printf("\t\t|_________________0.释放链表。退出___________________|");printf("\n\t\t\t请输入你的选项(0---8):\n");printf("\n"); printf("\t请输入你的选择: \n");}void menu(inf *head); //显示主菜单inf *create(); //创建链表void Input(int n,inf *head); //输入货物信息void tianjia(int n,inf *head); //添加货物信息void output(inf *head); //输出货物信息void chaxun(inf *head); //查询void chaxun_number(inf *head); //按编号查询void chaxun_sname(inf *head); //按名称查询void xiugai(inf *head); //修改货物信息void shanchu(inf *head); //删除货物信息 void write_file(inf *head); //保存货物信息到文件inf *Read__file(); //读取文件内货物信息void freeh(inf *head); //退出程序 inf *create() //创建链表{inf *p;p=(inf *)malloc(sizeof(struct information)); if(p==NULL) { printf("链表创建失败.\n");exit(0); }p->next=NULL;return (p);}void Input(int n,inf *head)//录入货物信息{inf *p;int i;printf("请输入:你想录入多少组货物信息: \n ");scanf("%d",&n);for(i=1;i<=n;i++){p=(inf *)malloc(sizeof(struct information)); if(p==NULL){printf("结点创建失败.\n");exit(0);}printf("请输入货物:编号,名称,价格,数量:\n");printf("编号:"); scanf("%s",p->number); printf("名称:"); scanf("%s",p->sname); printf("价格:"); scanf("%f",&p->price); printf("数量:"); scanf("%d",&p->count); p->next=NULL; while(head->next!=NULL) head=head->next; head->next=p; }}void tianjia(int n,inf *head)//添加货物信息{inf *p;int i;printf("请输入:你想添加多少组货物信息: \n");scanf("%d",&n);for(i=1;i<=n;i++){p=(inf *)malloc(sizeof(struct information)); if(p==NULL) { printf("链表结点创建失败。\n"); exit(0);}printf("请输入货物:编号,名称,价格,数量:\n"); printf("编号:"); scanf("%s",p->number); printf("名称:"); scanf("%s",p->sname); printf("价格:"); scanf("%f",&p->price); printf("数量:"); scanf("%d",&p->count);p->next=NULL;while(head->next!=NULL)head=head->next;head->next=p; }}void output(inf *head) //输出货物信息 {int n=0;inf *p;p=head->next;if(p==NULL) { printf("链表为空,请先输入信息!\n"); return; } while(p!=NULL) { n++; printf("货物信息:编号: %s,名称:%s,价格:%f. 数量:%d \n",p->number,p->sname,p->price,p->count); p=p->next; }printf(" 货物总数为:%d \n",n);}void chaxun(inf *head) //查询货物信息 函数 {int a;printf("\t\t查询信息\n") ;while(1){printf("\t 1.按编号查询\n");printf("\t 2.按名称查询\n");printf("请输入你的选择:\n");scanf("%d",&a);if(a==1){chaxun_number(head);//调用按编号查询的函数 break;}if(a==2){chaxun_sname(head);//调用按名称查询的函数 break;}if(a!=1&&a!=2){printf("输入错误!\n");break;}getchar();}}void chaxun_number(inf *head) //按编号查询{char num[20];inf *p;int i=-1;p=head;printf("请输入你要查询的货物的编号:");scanf("%s",num);while(p->next!=NULL){p=p->next;if(strcmp(p->number,num)==0) { i=1; printf("已找到该货物信息\n"); printf("货物信息:编号:%s,名称:%s,价格:%f.数量:%d.\n",p->number,p->sname,p->price,p->count);}}if(i<0) printf("没有此货物信息!\n");}void chaxun_sname(inf *head) //按名称查询{char a[20];int i=-1;inf *p;p=head;printf(" 请输入要查找货物的名称 :\n");scanf("%s",a);while(p->next!=NULL){p=p->next;if(strcmp(p->sname,a)==0){i=1; printf("已找到该货物信息\n"); printf("货物信息:编号:%s,名称:%s,价格:%f.数量:%d.\n",p->number,p->sname,p->price,p->count);}}if(i<0)printf("没有此货物!\n");}void xiugai(inf *head) //修改货物信息{printf("\t********************\n");printf("\t 请输入修改的方式:\n");printf("\t1.单个信息全部修改。\n");printf("\t2.单个信息逐个修改。\n");printf("\t********************\n");int a;printf("请输入选项:\n");scanf("%d",&a);if(a==1){char no[20];int i=-1;inf *p;p=head; printf("请输入要修改货物的编号:\n");scanf("%s",no);while(p->next!=NULL){p=p->next; if(strcmp(p->number,no)==0) { i=1; printf("请输入货物的编号,名称,价格,数量:\n");printf("编号:"); scanf("%s",p->number); printf("名称:"); scanf("%s",p->sname); printf("价格:"); scanf("%f",&p->price); printf("数量:"); scanf("%d",&p->count); }}if(i<0)printf("没有此货物信息!\n");}if(a==2) {inf *p=NULL;int b;char number2[20];char name2[100];float price2;int count2;p=head->next; if(p==NULL){printf("没有货物信息,请先保存货物信息!\n");}printf("\t\t 请输入要修改的内容\n");printf("\t\t 1.修改编号 2.修改名称\n");printf("\t\t 3.修改价格 4.修改数量\n");printf("请选择 \n");scanf("%d",&b); switch(b) { case 1 : printf("请输入被修改的货物编号:\n"); scanf("%s",&number2); while(p!=NULL) { if(strcmp(p->number,number2)==0) { printf("请输入新的编号:\n"); scanf("%s",&p->number); } p=p->next;}printf("该货物信息已修改成功。\n"); break; case 2 : printf("请输入被修改的名称:\n"); scanf("%s",&name2); while(p!=NULL) { if(strcmp(p->sname,name2)==0) { printf("请输入新的名称:\n"); scanf("%s",&p->sname); break; } p=p->next; } printf("该货物信息已修改成功。\n"); break; case 3 : printf("请输入被修改的价格:\n"); scanf("%f",&price2); while(p!=NULL) { if(price2==p->price) { printf("请输入新的价格:\n"); scanf("%f",&p->price); break; } p=p->next; } printf("该货物信息已修改成功。\n"); break; case 4 : printf("请输入被修改的数量:\n"); scanf("%d",&count2); while(p!=NULL) { if(count2==p->count) { printf("请输入新的数量:\n"); scanf("%d",&p->count); break; } p=p->next; }printf("该货物信息已修改成功。\n"); break; default: printf("修改内容有错误!\n"); } }}void shanchu(inf *head) //删除货物信息 { int a; printf("\t\t 1.按编号删除 2.按名称删除\n"); printf("\t\t请输入选项:\n"); scanf("%d",&a); switch(a) {case 1:{char number[20]; int i=-1;inf *p,*h;p=head; printf("请输入你要删除的货物的编号:\n"); scanf("%s",number); while(p->next!=NULL) { if(strcmp(number,p->next->number)==0) { i=1; h=p->next; p->next=p->next->next;free(h);printf("已删除该货物信息。\n");break;}p=p->next; } if(i<0)printf("没有此货物信息!\n");break;}case 2:{char name[20]; int i=-1;inf *p,*h;p=head; printf("请输入你要删除的货物的名称:\n"); scanf("%s",name); while(p->next!=NULL) { if(strcmp(name,p->next->sname)==0) { i=1; h=p->next; p->next=p->next->next;free(h);printf("已删除该货物信息。\n");break;}p=p->next; } if(i<0)printf("没有此货物信息!\n");break;}}}void write_file(inf *head) //保存货物信息到文件{ inf *p;FILE *fp;p=head;if((fp=fopen("货物信息.txt","wb"))==NULL){printf ("Do not have this file\n");exit(0);}while(p->next != NULL){p=p->next;fwrite(p,sizeof(struct information),1,fp); }fclose(fp);}inf *Read__file() //读取文件内的货物信息 {inf *p,*d,*head;FILE *fp;head=(inf *)malloc(sizeof(struct information));p=(inf *)malloc(sizeof(struct information));if((fp=fopen("货物信息.txt","rb"))==NULL){printf ("不能打开文件!\n");exit(0);}if(fread(head,sizeof(struct information),1,fp)){d=head;while(fread(p,sizeof(struct information),1,fp)){d->next=p;d=p;p=(inf *)malloc(sizeof(struct information));}}d->next=NULL;fclose(fp);return (head);}void freeh(inf *head) //释放空间 退出程序{inf *p;p=(inf *)malloc(sizeof(struct information));p=head;while(head->next!=NULL){head=head->next;free(p);p=head;}free(p);}int main(){inf *head;head=(inf*)malloc(sizeof(struct information));head=create();while(1){menu(head); int h,i;scanf("%d",&h);switch(h) //功能选择{case 1: Input(i,head); break;case 2: tianjia(i,head); break;case 3: chaxun(head); break;case 4: xiugai(head); write_file(head); break; case 5: shanchu(head); write_file(head); output(head); break;case 6: write_file(head); printf("\t已经成功保存信息!\t\n"); break;case 7: head->next=Read__file(); output(head); break; case 8: output(head); break; case 0: freeh(head); printf("\t-----已经退出程序-----\t\n"); exit(0);default: printf("输入错误\n"); break;}}}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
typedef struct information //货物信息
{
char number[20]; //编号
char sname[20]; //名称
float price; //价格
int count; //数量
struct information *next;
}inf;
void menu(inf *head) //显示菜单
{
system("color 3E");
printf("\t\t*****************************************************\n");
printf("\t\t\t\t欢迎进入货物信息管理系统\n");
printf("\t\t*****************************************************\n");
printf("\n");
printf("\t\t|====================================================|\n");
printf("\t\t|______________________基本信息______________________|\n");
printf("\t\t| 1.创建货物信息 | 2.添加货物信息 |\n");
printf("\t\t| 3.查找货物信息 | 4.修改货物信息 |\n");
printf("\t\t| 5.删除货物信息 | 6.保存文件信息 |\n");
printf("\t\t| 7.读取文件信息 | 8.输出货物信息 |\n");
printf("\t\t|_________________0.释放链表。退出___________________|");
printf("\n\t\t\t请输入你的选项(0---8):\n");
printf("\n");
printf("\t请输入你的选择: \n");
}
void menu(inf *head); //显示主菜单
inf *create(); //创建链表
void Input(int n,inf *head); //输入货物信息
void tianjia(int n,inf *head); //添加货物信息
void output(inf *head); //输出货物信息
void chaxun(inf *head); //查询
void chaxun_number(inf *head); //按编号查询
void chaxun_sname(inf *head); //按名称查询
void xiugai(inf *head); //修改货物信息
void shanchu(inf *head); //删除货物信息
void write_file(inf *head); //保存货物信息到文件
inf *Read__file(); //读取文件内货物信息
void freeh(inf *head); //退出程序
inf *create() //创建链表
{
inf *p;
p=(inf *)malloc(sizeof(struct information));
if(p==NULL)
{
printf("链表创建失败.\n");
exit(0);
}
p->next=NULL;
return (p);
}
void Input(int n,inf *head) //录入货物信息
{
inf *p;
int i;
printf("请输入:你想录入多少组货物信息: \n ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(inf *)malloc(sizeof(struct information));
if(p==NULL)
{
printf("结点创建失败.\n");
exit(0);
}
printf("请输入货物:编号,名称,价格,数量:\n");
printf("编号:");
scanf("%s",p->number);
printf("名称:");
scanf("%s",p->sname);
printf("价格:");
scanf("%f",&p->price);
printf("数量:");
scanf("%d",&p->count);
p->next=NULL;
while(head->next!=NULL)
head=head->next;
head->next=p;
}
}
void tianjia(int n,inf *head) //添加货物信息
{
inf *p;
int i;
printf("请输入:你想添加多少组货物信息: \n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(inf *)malloc(sizeof(struct information));
if(p==NULL)
{
printf("链表结点创建失败。\n");
exit(0);
}
printf("请输入货物:编号,名称,价格,数量:\n");
printf("编号:");
scanf("%s",p->number);
printf("名称:");
scanf("%s",p->sname);
printf("价格:");
scanf("%f",&p->price);
printf("数量:");
scanf("%d",&p->count);
p->next=NULL;
while(head->next!=NULL)
head=head->next;
head->next=p;
}
}
void output(inf *head) //输出货物信息
{
int n=0;
inf *p;
p=head->next;
if(p==NULL)
{
printf("链表为空,请先输入信息!\n");
return;
}
while(p!=NULL)
{
n++;
printf("货物信息:编号: %s,名称:%s,价格:%f. 数量:%d \n",p->number,p->sname,p->price,p->count);
p=p->next;
}
printf(" 货物总数为:%d \n",n);
}
void chaxun(inf *head) //查询货物信息 函数
{
int a;
printf("\t\t查询信息\n") ;
while(1)
{
printf("\t 1.按编号查询\n");
printf("\t 2.按名称查询\n");
printf("请输入你的选择:\n");
scanf("%d",&a);
if(a==1)
{
chaxun_number(head);//调用按编号查询的函数
break;
}
if(a==2)
{
chaxun_sname(head);//调用按名称查询的函数
break;
}
if(a!=1&&a!=2)
{
printf("输入错误!\n");
break;
}
getchar();
}
}
void chaxun_number(inf *head) //按编号查询
{
char num[20];
inf *p;
int i=-1;
p=head;
printf("请输入你要查询的货物的编号:");
scanf("%s",num);
while(p->next!=NULL)
{
p=p->next;
if(strcmp(p->number,num)==0)
{
i=1;
printf("已找到该货物信息\n");
printf("货物信息:编号:%s,名称:%s,价格:%f.数量:%d.\n",p->number,p->sname,p->price,p->count);
}
}
if(i<0)
printf("没有此货物信息!\n");
}
void chaxun_sname(inf *head) //按名称查询
{
char a[20];
int i=-1;
inf *p;
p=head;
printf(" 请输入要查找货物的名称 :\n");
scanf("%s",a);
while(p->next!=NULL)
{
p=p->next;
if(strcmp(p->sname,a)==0)
{
i=1;
printf("已找到该货物信息\n");
printf("货物信息:编号:%s,名称:%s,价格:%f.数量:%d.\n",p->number,p->sname,p->price,p->count);
}
}
if(i<0)
printf("没有此货物!\n");
}
void xiugai(inf *head) //修改货物信息
{
printf("\t********************\n");
printf("\t 请输入修改的方式:\n");
printf("\t1.单个信息全部修改。\n");
printf("\t2.单个信息逐个修改。\n");
printf("\t********************\n");
int a;
printf("请输入选项:\n");
scanf("%d",&a);
if(a==1)
{
char no[20];
int i=-1;
inf *p;
p=head;
printf("请输入要修改货物的编号:\n");
scanf("%s",no);
while(p->next!=NULL)
{
p=p->next;
if(strcmp(p->number,no)==0)
{
i=1;
printf("请输入货物的编号,名称,价格,数量:\n");
printf("编号:");
scanf("%s",p->number);
printf("名称:");
scanf("%s",p->sname);
printf("价格:");
scanf("%f",&p->price);
printf("数量:");
scanf("%d",&p->count);
}
}
if(i<0)
printf("没有此货物信息!\n");
}
if(a==2)
{
inf *p=NULL;
int b;
char number2[20];
char name2[100];
float price2;
int count2;
p=head->next;
if(p==NULL)
{
printf("没有货物信息,请先保存货物信息!\n");
}
printf("\t\t 请输入要修改的内容\n");
printf("\t\t 1.修改编号 2.修改名称\n");
printf("\t\t 3.修改价格 4.修改数量\n");
printf("请选择 \n");
scanf("%d",&b);
switch(b)
{
case 1 :
printf("请输入被修改的货物编号:\n");
scanf("%s",&number2);
while(p!=NULL)
{
if(strcmp(p->number,number2)==0)
{
printf("请输入新的编号:\n");
scanf("%s",&p->number);
}
p=p->next;
}
printf("该货物信息已修改成功。\n");
break;
case 2 :
printf("请输入被修改的名称:\n");
scanf("%s",&name2);
while(p!=NULL)
{
if(strcmp(p->sname,name2)==0)
{
printf("请输入新的名称:\n");
scanf("%s",&p->sname);
break;
}
p=p->next;
}
printf("该货物信息已修改成功。\n");
break;
case 3 :
printf("请输入被修改的价格:\n");
scanf("%f",&price2);
while(p!=NULL)
{
if(price2==p->price)
{
printf("请输入新的价格:\n");
scanf("%f",&p->price);
break;
}
p=p->next;
}
printf("该货物信息已修改成功。\n");
break;
case 4 :
printf("请输入被修改的数量:\n");
scanf("%d",&count2);
while(p!=NULL)
{
if(count2==p->count)
{
printf("请输入新的数量:\n");
scanf("%d",&p->count);
break;
}
p=p->next;
}
printf("该货物信息已修改成功。\n");
break;
default:
printf("修改内容有错误!\n");
}
}
}
void shanchu(inf *head) //删除货物信息
{
int a;
printf("\t\t 1.按编号删除 2.按名称删除\n");
printf("\t\t请输入选项:\n");
scanf("%d",&a);
switch(a)
{
case 1:
{
char number[20];
int i=-1;
inf *p,*h;
p=head;
printf("请输入你要删除的货物的编号:\n");
scanf("%s",number);
while(p->next!=NULL)
{
if(strcmp(number,p->next->number)==0)
{
i=1;
h=p->next;
p->next=p->next->next;
free(h);
printf("已删除该货物信息。\n");
break;
}
p=p->next;
}
if(i<0)
printf("没有此货物信息!\n");
break;
}
case 2:
{
char name[20];
int i=-1;
inf *p,*h;
p=head;
printf("请输入你要删除的货物的名称:\n");
scanf("%s",name);
while(p->next!=NULL)
{
if(strcmp(name,p->next->sname)==0)
{
i=1;
h=p->next;
p->next=p->next->next;
free(h);
printf("已删除该货物信息。\n");
break;
}
p=p->next;
}
if(i<0)
printf("没有此货物信息!\n");
break;
}
}
}
void write_file(inf *head) //保存货物信息到文件
{
inf *p;
FILE *fp;
p=head;
if((fp=fopen("货物信息.txt","wb"))==NULL)
{
printf ("Do not have this file\n");
exit(0);
}
while(p->next != NULL)
{
p=p->next;
fwrite(p,sizeof(struct information),1,fp);
}
fclose(fp);
}
inf *Read__file() //读取文件内的货物信息
{
inf *p,*d,*head;
FILE *fp;
head=(inf *)malloc(sizeof(struct information));
p=(inf *)malloc(sizeof(struct information));
if((fp=fopen("货物信息.txt","rb"))==NULL)
{
printf ("不能打开文件!\n");
exit(0);
}
if(fread(head,sizeof(struct information),1,fp))
{
d=head;
while(fread(p,sizeof(struct information),1,fp))
{
d->next=p;
d=p;
p=(inf *)malloc(sizeof(struct information));
}
}
d->next=NULL;
fclose(fp);
return (head);
}
void freeh(inf *head) //释放空间 退出程序
{
inf *p;
p=(inf *)malloc(sizeof(struct information));
p=head;
while(head->next!=NULL)
{
head=head->next;
free(p);
p=head;
}
free(p);
}
int main()
{
inf *head;
head=(inf*)malloc(sizeof(struct information));
head=create();
while(1)
{
menu(head);
int h,i;
scanf("%d",&h);
switch(h) //功能选择
{
case 1:
Input(i,head);
break;
case 2:
tianjia(i,head);
break;
case 3:
chaxun(head);
break;
case 4:
xiugai(head);
write_file(head);
break;
case 5:
shanchu(head);
write_file(head);
output(head);
break;
case 6:
write_file(head);
printf("\t已经成功保存信息!\t\n");
break;
case 7:
head->next=Read__file();
output(head);
break;
case 8:
output(head);
break;
case 0:
freeh(head);
printf("\t-----已经退出程序-----\t\n");
exit(0);
default:
printf("输入错误\n");
break;
}
}
}
0 0
- c语言仓库信息管理
- c语言仓库货物信息管理系统
- 职工信息管理(C语言实现)
- C语言学生信息管理系统
- c语言学生信息管理系统
- 学生信息管理系统 c语言
- C语言:学生信息管理系统
- c语言学生信息管理系统
- 【C语言】职工信息管理系统
- C语言职工信息管理系统
- C语言 学生信息管理系统
- C语言学生信息管理系统
- 员工信息管理系统--C语言
- C语言:学生信息管理程序
- 学生信息管理系统(c语言)
- 学生信息管理系统(C语言)
- C语言实现学生信息管理系统
- C语言设计之 学生信息管理系统
- hadoop学习之azkaban(5):azkaban-2.5.0的详细安装过程
- 蓝桥杯-算法提高 8皇后·c++实现
- MFC CFont字体的使用
- 嵌入式软件可靠性设计的一些理解
- 使用xml文件备份短信
- c语言仓库信息管理
- windows使用npm安装node.js环境express提示失败解决办法
- JDBC
- squid安装使用
- Atitit 图像处理Depixelizing Pixel Art像素风格画的矢量化
- 不用第三个变量交换两个变量
- 华东交通大学2016届新生选拔赛:1010 我是签到题
- 数据结构---栈的应用
- 对”对象和类“的理解