📄 ѧ
字号:
#include<stdio.h> /*头文件*/
#include<string.h>
#include<conio.h>
#definde MAXI 100
struct person
{
char name[13]; /*定义名字为字符数组*/
char number[8]; /*定义电话号码为字符数组*/
struct socer
{
char math[3];
char english[3];
char java[3];
}socer; /*定义地址为字符数组*/
}person[MAXI]; /*定义用户信息结构体数组(个数可随便定)*/
void new() /*新建函数*/
{
int i;FILE *fp;int j;
printf("You want to build how many:");
scanf("%d",&j); /*输入要新建的个数*/
printf("enter student's name ,number, and socer:\n");
for(i=0;i<j;i++)
{
printf("enter name:");
scanf("%s",person[i].name);
printf("enter number:");
scanf("%s",person[i].number);
printf("enter math socer:");
scanf("%s",person[i].socer.math);
printf("enter english socer:");
scanf("%s",person[i].socer.english);
printf("enter java socer:");
scanf("%s",person[i].socer.java);
}
fp=fopen("file1.c","w");
for(i=0;i<j;i++)
if(fwrite(&person[i],sizeof(struct person),1,fp)!=1) /*把信息写入文件*/
printf("File write error!!!\n");
fclose(fp); /*关闭文件*/
}
void change() /*修改函数*/
{
int i;FILE *fp;int k;
printf("Please enter you want to change's number:");
scanf("%d",&i);
/*输入要修改第几个*/
i=i-1;
/*把位子与输入的相对应*/
printf("\nenter person's name number and socer:\n");
fp=fopen("file1.c","r+");
/*以读写的方式打开文件*/
k=i*40;
fseek(fp,k,0);
/*找到在文件中的位置*/
scanf("%s%s%s%s%s",persons[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);/*输入修改信息*/
if(fwrite(&person[i],sizeof(struct person),1,fp)!=1)
/*写入文件中*/
printf("File write error!!\n");
fclose(fp); /*关闭文件*/
}
void list()
{
int i,r;FILE *fp;
fp=fopen("file1.c","r");
/*以读的方式打开文件*/
for(r=0;r<=30;r++) printf("* ");
/*打印星号为了好看*/
printf("\n");
printf(" Name Number Math English Java\n"); /*打印*/
i=0;
while(!feof(fp)) /*读文件*/
{
fread(&person[i],sizeof(struct person),1,fp);
/*一个一个地读文件*/
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);/*打印*/
i++;
}
for(r=0;r<=30;r++) printf("* ");
printf("\n");
fclose(fp); /* 关闭文件*/
}
void delete() /*栓出函数*/
{
int i;FILE *fp;
printf("Enter you want to delete number i:");
scanf("%d",&i); /*输入栓出那一个*/
i=i-1;
fp=fopen("file1.c","r+");
fseek(fp,40*i,0); /*在文件中定位*/
strcpy(person[i].name," ");
strcpy(person[i].numbber," "); /*用空格覆盖信息*/
strcpy(person[i].socer.math," ");
strcpy(person[i].socer.english," ");
strcpy(person[i].socer.java," ");
if(fwrite(&person[i],sizeof(struct person),1,fp)!=1) /*写入文件*/
printf("File write error!!\n");
fclose(fp); /*关闭文件*/
}
void add() /*增加函数*/
{
int i,j;FILE *fp;
printf("Please enter you want to add how many:");
scanf("%d",&i); /*输入增加个数*/
printf("Enter person's name number socer:\n");
for(j=0;j<i;j++) /*用循环结构输入信息*/
scanf("%s%s%s%s%s",person[j].name,person[j].number,person[j].socer.math,person[i].socer.english,person[i].socer.java);
fp=fopen("file1.c","a");
/*以增加的方式打开文件*/
for(j=0;j<i;j++)
if(fwrite(&person[j],sizeof(struct person),1,fp)!=1)
/*再写入文件中*/
printf("File write error!!\n");
fclose(fp); /*关闭文件*/
}
void fromename() /*根据名字查询函数*/
{
int i,n=0,r,m;FILE *fp;char name1[10];
printf("Enter a name to find your information:");
scanf("%s",name1); /*输入你要查询的名字*/
if((fp=fopen("file1.c","r"))==NULL) /*以读的方式打开文件*/
{printf("Can't open the file!\n");exit(0);}
i=0;
while(!feof(fp))
/*用循环结构读文件到末尾*/
{
fread(&person[i].name,sizeof(struct person),1,fp);
/*一个一个地读取文件的内容*/
if(strcmp(person[i].name,name1)==0)
/*把输入的名字以文件中的相比较*/
{m=i;n++;break;}
}
if(n==0) printf("This file haven't the name!!\n");
/*若没找到打印提示信息*/
else
{
for(r=0;r<=30;r++) printf("* ");
printf("\n");
printf(" Name Number Math English Java\n");
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);
for(r=0;r<=30;r++) printf("* ");
printf("\n");
}
fclose(fp); /*关闭文件*/
}
void fromnumber() /*根据电话号码查询信息函数*/
{
int i,m,r,n=0;FILE *fp;
char n1[12];
int k;
printf("Enter you want to find number to get your information:");
scanf("%s",n1); /*输入你要查询的电话号码*/
fp=fopen("file1.c","r"); /*以读的方式打开文件*/
i=0;
while(!feof(fp))
./*用循环结构读文件直到末尾*/
{
k=13+40*i;
/*确定电话号码在文件中的位置*/
fseek(fp,k,0);
fread(&person[i].phone,sizeof(struct person),1,fp);
/*读取文件中的电话号码*/
if(strcmp(person[i].number,n1)==0)
/*把输入的电话号码与在文件中读出的比较*/
{m=i;n++;break;}
i++;
}
if(n==0) printf("This file haven't the phone!!\n");
/*如没找到打印提示信息*/
else
{
for(r=0;r<=30;r++) printf("* ");
printf("\n");
printf(" Name Number Math English Java\n");
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);
for(r=0;r<=30;r++) printf("* ");
printf("\n");
}
fclose(fp); /*关闭文件*/
}
void fromsocer()
/*根据地址查询函数*/
{
int i,m,r,n=0;FILE *fp;char s[8];
printf("Enter a addr to find your information:");
scanf("%s",addr1);
/*输入要查询的地址*/
if((fp=fopen("file1.c","r"))==NULL)
/*以读的方式打开文件*/
{printf("Can't open the file!\n");exit(0);}
i=0;
while(!feof(fp))
/*用循环结构读文件直到末尾*/
{
fseek(fp,25+40*i,0); /*确定地址在文件中的位置*/
fread(&person[i].addr,sizeof(struct person),1,fp);
/*读取文件中的地址*/
if(strcmp(person[i].socer.math,s1)==0)
/*把输入的地址与文件中的比较*/
{m=i;n++;break;}
i++;
}
if(n==0) printf("This file haven't the socer!!\n");
/*如没找到打印提示信息*/
else
{
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf(" Name Number Math English Java\n");
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);
for(r=0;r<=30;r++) printf(". ");
printf("\n");
}
fclose(fp); /*关闭文件*/
}
void managerlogin() /*管理员密码函数*/
{
FILE *fp;
int i,n=0,m=1;
char pw1[10],pw2[10];
while(m==1)
{
printf("please input a code:");
if((fp=fopen("f2.c","r"))==NULL)
/*以读的方式打开密码文件*/
{
printf("Can't open output file:\n");
exit(0);
}
fgets(pw1,9,fp); /*把文件中的八位书密码读出放在pw1中*/
for(i=0;i<8;i++) /*用循环结构输入密码*/
{
pw2[i]=getch(); /*输入密码*/
putchar('*'); /*用星号把输入的数字覆盖*/
}
pw2[8]='\0';
if(strcmp(pw1,pw2)==0)
/*把输入的密码与文件读出的比较*/
{
m=0;printf("\n");
manager();
/*如输入密码正确则执行管理员函数*/
fclose(fp); /*关闭密码文件*/
}
else /*如输入密码不正确则执行*/
{
n++; /*n加一*/
clrscr(); /*清屏*/
}
if(n==3) exit(); /*如输入密码三次不正确则退出*/
}
}
manager() /*管理员函数*/
{
int choice,r;
while(1) /*循环执行直到退出*/
{
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("\nThis is MANAGAER'S system:\n"); /*打印菜单选项*/
printf("\t1. Add inforamtion.\n");
printf("\t2. List information.\n");
printf("\t3. Delete information.\n");
printf("\t4. Look-up information.\n");
printf("\t5. New information.\n");
printf("\t6. Change information.\n");
printf("\t0. Exit the system.\n");
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("Please enter a number:");
scanf("%d",&choice); /*输入你要执行的选择*/
switch(choice) /*执行你要执行的函数*/
{
case 1:add();break;
case 2:list();break;
case 3:delete();break;
case 4:from();break;
case 5:new();break;
case 6:change();break;
case 0:clrscr();exit();break;
}
}
}
from(void) /*查询函数*/
{ int k,r;
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("\nThis is FIND style:\n"); /*打印提示信息*/
printf("\t1. Find information from socer.\n");
printf("\t2. Find information from number.\n");
printf("\t3. Find information from name.\n");
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("Please a number:");
scanf("%d",&k); /*输入你的选择*/
if(k>3||k<1)
printf("This is wrong:\n");
else
switch(k) /*执行所选择的函数*/
{
case 1:fromsocer();break;
case 2:fromenumber();break;
case 3:fromename();break;
}
}
void user() /*用户查询函数*/
{
int k,r;
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("\nThis is USER'S STYLE:\n"); /*打印提示信息*/
printf("\t1. Find information from socer.\n");
printf("\t2. Find information from number.\n");
printf("\t3. Find information from name.\n");
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("Please a number:");
scanf("%d",&k); /*输入你的选择*/
if(k>3||k<1)
printf("this is wrong:\n");
else
switch(k) /*执行所选择的函数*/
{
case 1:fromsocer();break;
case 2:fromnumber();break;
case 3:fromname();break;
}
printf("Put any key to back to menu!!!\n"); /*打印提示信息*/
}
main() /*主函数部分*/
{
int m,r;
while(1) /*用循环结构执行命令*/
{
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("This is tong xun lu:\n"); /*打印主菜单*/
printf("\n\t1. Manager system:\n");
printf("\n\t2. User system:\n");
printf("\n\t3. Exit system:\n");
for(r=0;r<=30;r++) printf(". ");
printf("\n");
printf("Please enter a munber:");
scanf("%d",&m); /*输入要执行函数的数字*/
if(m>3||m<1) /*如输入错误打印提示信息*/
{printf("This is wrong!\n");printf("Put any key to back to
meun!!\n");}
else /*如输入正确执行*/
switch(m)
{
case 1:managerlogin();break; /*执行管理员函数*/
case 2:user();break; /*执行用户函数*/
case 3:clrscr();exit();break; /*退出系统*/
}while(!kbhit()) fflush(stdin); /*这是老师给的不用说明*/
}
}_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -