69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
enum bool {false, true};
enum bool set_ID(void)
{
struct id
{
char name[21];
char code[11];
int rights;
};
FILE *fp;
struct id *p, *q, *p1;
int m;
int i = 0;
long k = 0;
p = (struct id *)malloc(sizeof(struct id));
if((fp = fopen("code.dat", "rb")) == NULL)
{
puts("您是第一个登陆者,请注册为管理员: ");
printf("Name(no more than 20 letters): ");
scanf("%20s", p->name);
printf("Code(no more than 10 numbers): ");
scanf("%10s",p->code);
printf("Right(admi:1, comm:0): ");
scanf("%d", &p->rights);
fp = fopen("code.dat", "wb");
fwrite(p, sizeof(struct id), 1, fp);
puts("管理员设置帐号完毕.");
fclose(fp);
free(p);
printf("administrater\n");
// 添加代码
return true;
}
else
{
puts(" 0: 登陆 1: 注册 ");
do
{
printf("请选择(0/1): ");
scanf("%d", &m);
} while (m <0 || m>1);
if (m)
{
puts("请输入注册信息(用户名 密码 ):");
p1 = (struct id *)malloc(sizeof(struct id));
printf("Name(no more than 20 letters): ");
scanf("%20s", p1->name);
printf("Code(no more than 10 numbers): ");
scanf("%10s",p1->code);
p1->rights = 0;
fclose(fp);
fp = fopen("code.dat", "ab");
fwrite(p, sizeof(struct id), 1, fp);
puts("普通用户注册成功! ");
fclose(fp);
free(p1);
printf("common\n");
//添加代码
return true;
}
else
{
q = (struct id *)malloc(sizeof(struct id));
printf("请输入您的 用户名 密码 权限\n");
printf("你只能尝试3次输入\n");
do
{
printf("The %d \n", i + 1);
printf("Name(no more than 20 letters): ");
scanf("%20s", p->name);
printf("Code(no more than 10 numbers): ");
scanf("%10s",p->code);
printf("Right(admi:1, comm:0): ");
scanf("%d", &p->rights);
while (!fseek(fp, (long)(k * sizeof(struct id)), SEEK_SET))
{
fread(q, sizeof(struct id), 1, fp);
if(!strcmp(p->name, q->name) && !strcmp(p->code, q->code))
{
if (q->rights)
{
fclose(fp);
free(p);
free(q);
printf("administrater:\n"); // 这里添加代码
return true;
}
else
{
fclose(fp);
free(p);
free(q);
printf("common:\n"); //这里添加代码
return true;
}
}
else
{
printf("Name or Code is wrong.\n");
}
k++;
}
} while (i++ < 2);
fclose(fp);
free(p);
free(q);
}
}
return false;
}
int main(void)
{
set_ID();
return 0;
}