#include<string.h>
#include<stdlib.h>
#define N 30 //最多颜色个数
void menu();
int n ;
struct fourband //四环电阻结构体
{
char color[20];//颜色
int first; //第一环
int second; // 第二环
int third;//倍数
char fourth[20]; //允许误差/(%)
}fourband[N]; //四环电阻结构体数组
struct fiveband //五环电阻结构体
{
char color[20];//颜色
int first; //第一环
int second;// 第二环
int third;//第三环
int fourth;//乘倍数
char fifth[20]; //允许误差/(%)
}fiveband[N]; //五环电阻结构体
void entry1()//录入功能(四环电阻)
{
int i,n=13;
FILE* fp;//定义
fp = fopen("d:\\band.txt", "w");//打开
if (fp == NULL)
{
printf("file can not find!\n");
exit(0);
}
for (i = 0; i < n; i++)
{printf("第%i个颜色\n", i + 1);
printf("请输入色环颜色:\n");
scanf("%s", fourband[i].color);
printf("请输入第一环数字:\n");
scanf("%i", &fourband[i].first);
printf("请输入第二环数字:\n");
scanf("%i", &fourband[i].second);
printf("请输入乘倍数(10的几次幂):\n");
scanf("%i", &fourband[i].third);
printf("请输入允许误差/(%%):\n");
scanf("%s", fourband[i].fourth);
fwrite(&fourband[i], sizeof(fourband[i]), 1, fp);
}
fclose(fp);
}
void entry2()//录入功能(五环电阻)
{
int i,n=12;
FILE* fp;//定义
fp = fopen("d:\\band.txt", "w");//打开
if (fp == NULL)
{
printf("file can not find!\n");
exit(0);
}
for (i = 0; i < n; i++)
{
printf("第%i个颜色\n", i + 1);
printf("请输入色环颜色:\n");
scanf("%s", fiveband[i].color);
printf("请输入第一环数字:\n");
scanf("%i", &fiveband[i].first);
printf("请输入第二环数字:\n");
scanf("%i", &fiveband[i].second);
printf("请输入第三环数字:\n");
scanf("%i", &fiveband[i].third);
printf("请输入乘倍数(10的几次幂):\n");
scanf("%i", &fiveband[i].fourth);
printf("请输入允许误差/(%%):\n");
scanf("%s", fiveband[i].fifth);
fwrite(&fiveband[i], sizeof(fiveband[i]), 1, fp);}
fclose(fp);
}
void entry()
{
int sel;
for (;;)
{
printf("****录入功能****\n\n\n");
printf("****1.四环电阻录入****\n");
printf("****2.五环电阻录入****\n");
printf("****0.返回主菜单 ****\n");
printf("\n\n请选择:");
scanf("%i", &sel);
switch (sel)
{
case 1:entry1(); break;
case 2:entry2(); break;
case 0:menu(); break;
default: printf("input error\n");
}
printf("\n按任意键继续!!\n");
system("pause");
}
}
void browse1()//浏览四环电阻
{
int i,n=13;
FILE* fp;//定义
fp = fopen("d:\\band.txt", "r");//打开
if (fp == NULL)
{
printf("file can not find!\n");
exit(0);
}
printf("色环颜色 第一环 第二环 乘倍数 允许偏差/(%%)\n");
printf("===========================================================================\n");
for (i = 0; i < n; i++)
printf("%s %i %i 10^%i %s \n", fourband[i].color, fourband[i].first, fourband[i].second, fourband[i].third, fourband[i].fourth);
fread(&fourband[i], sizeof(fourband[i]), 1, fp);
fclose(fp);
}
void browse2()//浏览五环电阻
{
int i,n=12;
FILE* fp;//定义
fp = fopen("d:\\band.txt", "r");//打开
if (fp == NULL)
{
printf("file can not find!\n");
exit(0);
}
printf("色环颜色 第一环 第二环 第三环 乘倍数 允许偏差/(%%)\n");
printf("=====================================================================================\n");
for (i = 0; i < n; i++)
printf("%s %i %i %i 10^%i %s \n", fiveband[i].color, fiveband[i].first, fiveband[i].second, fiveband[i].third, fiveband[i].fourth, fiveband[i].fifth);
fread(&fiveband[i], sizeof(fiveband[i]), 1, fp);
fclose(fp);
}
void browse()
{
int sel;
for (;;)
{
printf("****浏览功能****\n\n\n");
printf("****1.四环电阻浏览****\n");
printf("****2.五环电阻浏览****\n");
printf("****0.返回主菜单 ****\n");
printf("\n\n请选择:");
scanf("%i", &sel);
switch (sel)
{
case 1:browse1(); break;
case 2:browse2(); break;
case 0:menu(); break;
default: printf("input error\n");
}
printf("\n按任意键继续!!\n");
system("pause");
}
}
void seek1() //按四环电阻查找
{ int i=0,n=13;
char s1[100];
int find=0;
FILE* fp;//1.定义文件
fp=fopen("d:\\band.txt", "r");//2.打开文件
if(fp==NULL)
{printf("file can not open!\n");
exit(0);}
while(fread(&fourband[i], sizeof(fourband[i]), 1, fp)!=0)
i++;
n=i;
printf("请输入要查找的颜色: ");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(s1,fourband[i].color)==0)
{printf("find\n");find=1;
printf("第%i个颜色\n", i + 1);
printf("\t请输入色环颜色:");
printf("%s\n", fourband[i].color);
printf("\t该颜色第一环数字:");
printf("%i\n", fourband[i].first);
printf("\t该颜色第二环数字:");
printf("%i\n", fourband[i].second);
printf("\t该颜色乘倍数(10的几次幂):");
printf("%i\n", fourband[i].third);
printf("\t该颜色允许误差/(%%):");
printf("%s\n", fourband[i].fourth);
break;}
if(find==0) printf("unfind\n");
fclose(fp);//4.关闭文件
}
void seek2() //按颜色查找
{ int i=0,n=12;
char s1[100];
int find=0;
FILE *fp;//1.定义文件
fp=fopen("d:\\band.txt", "r");//2.打开文件
if(fp==NULL)
{printf("file can not open\n");
exit(0);}
while (fread(&fiveband[i], sizeof(fiveband[i]), 1, fp)!=0)
i++;
n=i;
printf("请输入要查找的颜色: ");
scanf("%s",s1);
for(i=0;i<=n;i++)
if(strcmp(s1,fiveband[i].color)==0)
{printf("find\n");find=1;
printf("第%i个颜色\n", i + 1);
printf("\t请输入色环颜色:");
scanf("%s\n", fourband[i].color);
printf("\t该颜色第一环数字:");
scanf("%i\n", &fiveband[i].first);
printf("\t该颜色第二环数字:");
scanf("%i\n", &fiveband[i].second);
printf("\t该颜色第三环数字:");
scanf("%i\n", &fiveband[i].third);
printf("\t该颜色乘倍数(10的几次幂):");
scanf("%i\n", &fiveband[i].fourth);
printf("\t该颜色允许误差/(%%):");
scanf("%s\n", fiveband[i].fifth);
break;}
if(find==0) printf("unfind\n");
fclose(fp);
}//4.关闭文件
void seek()
{
int sel;
for (;;)
{
printf("****查询功能****\n\n\n");
printf("****1.四环电阻查询****\n");
printf("****2.五环电阻查询****\n");
printf("****0.返回主菜单 ****\n");
printf("\n\n请选择:");
scanf("%i", &sel);
switch (sel)
{
case 1:seek1(); break;
case 2:seek2(); break;
case 0:menu(); break;
default: printf("input error\n");
}
printf("\n按任意键继续!!\n");
system("pause");
}
}
void modify1() //修改
{ int i,n=13;
char s1[100];
int find=0;
FILE *fp;//1.定义文件
fp=fopen("d:\\band.txt", "r");//2.打开文件
if(fp==NULL)
{printf("file can not open\n");
exit(0);}
while(fread(&fourband[i], sizeof(fourband[i]), 1, fp)!=0)
i++;
n=i;
fp=fopen("d:\\band.txt","w");
if(fp==NULL)
{printf("file can not open\n");
exit(0);}
printf("\t请输入要修改的颜色: ");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(s1,fourband[i].color)==0)
{printf("find\n");find=1;
printf("请输入新的第一环数字:\n");
scanf("%i", &fourband[i].first);
printf("请输入新的第二环数字:\n");
scanf("%i", &fourband[i].second);
printf("请输入新的乘倍数(10的几次幂):\n");
scanf("%i", &fourband[i].third);
printf("请输入新的允许误差/(%%):\n");
scanf("%s",fourband[i].fourth);
printf("第%i个颜色\n", i + 1);
printf("\t请输入色环颜色:");
printf("%s\n", fourband[i].color);
printf("\t该颜色第一环数字:");
printf("%i\n", fourband[i].first);
printf("\t该颜色第二环数字:");
printf("%i\n", fourband[i].second);
printf("\t该颜色乘倍数(10的几次幂):");
printf("%i\n", fourband[i].third);
printf("\t该颜色允许误差/(%%):");
printf("%s\n", fourband[i].fourth);break;
}
else
continue;
if(find==0)
printf("unfind\n");
fwrite(&fourband[i], sizeof(fourband[i]), 1, fp);
fclose(fp);//4.关闭文件
}
void modify2() //修改
{ int i,n=12;
char s1[100];
int find=0;
FILE* fp;//1.定义文件
fp=fopen("d:\\band.txt", "r");//2.打开文件
if(fp==NULL)
{printf("file can not open\n");
exit(0);}
while(fread(&fiveband[i], sizeof(fiveband[i]), 1, fp)!=0)
i++;
n=i;
fclose(fp);
fp=fopen("d:\\band.txt","w");
if(fp==NULL)
{printf("file can not open\n");
exit(0);}
printf("请输入要修改的颜色: ");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(s1,fiveband[i].color)==0)
{printf("find\n");find=1;
printf("请输入新的第一环数字:\n");
scanf("%i", &fiveband[i].first);
printf("请输入新的第二环数字:\n");
scanf("%i", &fiveband[i].second);
printf("请输入新的第三环数字:\n");
scanf("%i", &fiveband[i].third);
printf("请输入新的乘倍数(10的几次幂):\n");
scanf("%i", &fiveband[i].fourth);
printf("请输入新的允许误差/(%%):\n");
scanf("%s", fiveband[i].fifth);
printf("第%i个颜色\n", i + 1);
printf("\t请输入色环颜色:");
scanf("%s\n", fourband[i].color);
printf("\t该颜色第一环数字:");
scanf("%i\n", &fiveband[i].first);
printf("\t该颜色第二环数字:");
scanf("%i\n", &fiveband[i].second);
printf("\t该颜色第三环数字:");
scanf("%i\n", &fiveband[i].third);
printf("\t该颜色乘倍数(10的几次幂):");
scanf("%i\n", &fiveband[i].fourth);
printf("\t该颜色允许误差/(%%):");
scanf("%s\n", fiveband[i].fifth);break;}
else
continue;
if(find==0)
printf("unfind\n");
fwrite(&fiveband[i], sizeof(fiveband[i]), 1, fp);
fclose(fp);//4.关闭文件
}
void modify()
{
int sel;
for (;;)
{
printf("****修改功能****\n\n\n");
printf("****1.四环电阻修改****\n");
printf("****2.五环电阻修改****\n");
printf("****0.返回主菜单 ****\n");
printf("\n\n请选择:");
scanf("%i", &sel);
switch (sel)
{
case 1:modify1(); break;
case 2:modify2(); break;
case 0:menu(); break;
default: printf("input error\n");
}
printf("\n按任意键继续!!\n");
system("pause");
}
}
void menu()
{
int sel;
for (;;)
{
printf("****总****\n\n\n");
printf("****1.录入功能****\n");
printf("****2.浏览功能****\n");
printf("****3.查询功能****\n");
printf("****4.修改功能****\n");
printf("****0.返回主菜单 ****\n");
printf("\n\n请选择:");
scanf("%i", &sel);
switch (sel)
{
case 1:entry(); break;
case 2:browse(); break;
case 3:seek(); break;
case 4:modify(); break;
case 0:exit(0); break;
default: printf("input error\n");
}
printf("\n按任意键继续!!\n");
system("pause");
}
}
int main(void)
{
menu();
return 0;
}
https://zhidao.baidu.com/question/226191285.html