You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
5.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typedef struct shebei
{
char id[20];
char name[20];
char kind[20];
char yesno[10];
char price[10];
}shebei[10000];
struct time
{
char year[5];
char month[5];
char day[5];
}time[10000];
void Add();
void Modify();
void Disp();
void Tongji();
void Chaxun;()
void menu_select()
{
int i;
printf("********目录********\n");
printf("*********0.EXIT**********\n");
printf("********1.添加记录********\n");
printf("********2.修改记录********\n");
printf("********3.显示记录********\n");
printf("********4.统计分类********\n");
printf("********5.查询记录********\n");
printf("*****请输入你要的操作*****\n");
}
int main (void)
{
system("cls");
int n;
menu_selece();
scanf("%d",&n);
while(n)
{
system("cls");
switch(n)
{
case1:Add(equip);break;//增加记录
case2:Modify(equip);break;//修改记录
case3:Disp(equip);break;//显示记录
case4:Tongji(equip);break;//统计记录
case5:Chaxun(equip);break;//查询记录
case0:
return 0;
}
getch();
menu_select();
scanf("%d",&n);
}
}
void Add()
{
node *p,*r,*s;
char id[10];
r=shebei;
s=shebei->next;
while(r->next!=NULL)
r=r->next;
while(1)
{
printf("***提示输入0返回主菜单***\n");
printf("\n请你输入设备id");
scanf("%s",&id);
if(strcmp(id,"0")==0) break;
p=(node*)malloc(sizeof(node));
strcpy(p->data.ID.id);
printf("\n请输入设备名称;");
scanf("%s",&p->data.name);
printf("\n请输入设备种类;");
scanf("%s",&p->data.kind);
printf("\n请输入设备是否报废;");
scanf("%s",&p->data.yesno);
printf("\n请输入报废日期;")
scanf("%s",&p->data.over);
printf("\n请输入设备购买时间;");
scanf("%s",&p->data.time);
printf("\n请输入设备价格;");
scanf("%s",&p->data.price);
printf("***提示;你已经完成一条记录的添加***\n");
p->next=NULL;
r->next=p;
r=p;
}
}
void Modify(Node *equip)//修改
{
Node *p;
char find[20];
if(!equip->next)
{
printf("\n***提示:没有资料可以修改!***\n");
return;
}
printf("请输入要修改的设备id号:");
scanf("%s",id);
p=equip->next;
while(p!=NULL)
{
if(strcmp(p->data.ID,find)==0) //如果找到的话返回的是符合要求
break;
p=p->next;
}
if(p) //若找到
{
int x;
while(1)
{
printf("完成修改请输入0,否则输入任意数再进行修改:");
scanf("%d",&x);
if(x==0)
{break;}
printf("请输入新设备号(原来是 %s ):",p->data.ID);
scanf("%s",p->data.ID);
printf("请输入新设备名称(原来是 %s ):",p->data.name);
scanf("%s",p->data.name);
printf("请输入新设备设备种类名称(原来是 %s ):",p->data.kind);
scanf("%s",p->data.kind);
printf("请输入新设备报废日期名称(原来是 %s ):",p->data.over);
scanf("%s",p->data.over);
printf("请输入新设备是否报废(原来是 %s ):",p->data.yesno);
scanf("%s",p->data.yesno);
printf("请输入新设备购买时间(原来是 %s ):",p->data.kind);
scanf("%s",p->data.time);
printf("请输入新设备价格(原来是 %s ):",p->data.price);
scanf("%s",p->data.price);
printf("\n***提示:该记录已经成功修改!***\n");
}
}
else
printf("\n***提示:你要修改的信息不存在!***\n");
}
void Disp(Node *equip)//输出记录
{
Node *p;
p=equip->next;
if(!p)
{
printf("\n***提示:没有记录可以显示!***\n");
return;
}
printf("*****显示结果*****\n");
printf("设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格\n");
while(p)
{
printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);
p=p->next;
}
}
void Tongji(Node *equip)//统计
{
Node *p;
int sel;int flag2=0,ha=0;
p=equip->next;
char find[20];
if(!equip->next) //若链表为空
{
printf("\n>>>>>>>>>>提示:没有资料可以统计分类!\n");
return;
}
printf(">>>>>>>>>>提示:\n=====>0退出\n=====>1按设备号统计\n=====>2按设备名称统计\n");
scanf("%d",&sel);
if(sel==1)
{
printf("\n输入你要统计分类的设备号:");
scanf("%s",find);
while(p)
{
if(strcmp(p->data.ID,find)==0)
{
flag2++;
}
if(flag2==1&&ha!=flag2)
{ printf("设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格\n");
printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);
ha=flag2;
}
else if(flag2>ha){printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}
p=p->next;
}
if(flag2)
{
printf("\n*************************按设备号%s统计分类的有%d条记录:*************************\n\n",find,flag2);
}
else {printf("\n按设备号%s统计的结果为0个\n\n",find);}
}
else if(sel==2)
{
printf("\n输入你要统计分类的设备名称:");
scanf("%s",find);
while(p)
{
if(strcmp(p->data.name,find)==0)
{
flag2++;
}
if(flag2==1&&ha!=flag2)
{ printf("设备号 设备名称 设备种类 报废日期 是否报废 购买时间 价格\n");
printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);
ha=flag2;
}
else if(flag2>ha){printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}
p=p->next;
}
if(flag2)
{
printf("\n******************按设备名称%s统计的有%d条记录:********************\n\n",find,flag2);
}
else {printf("\n按设备名称%s统计分类的结果为0个\n\n",find);}
}
else if(sel==0) return;
}