我们组的合作之下,坐了笔记本管理系统,希望多提意见
#include
#include
#include
#include
#include
#include
void backup();
void backuptxt();
void import();
void importtxt();
void shenqing();
void denglu();
void txt();
void key();
int number=0;//记录已申请的人数
int a[1000],b[1000]= {0},m1; //随机数
int i,j,k,n;
//用结构体定义用户
struct user
{
int name; //用户名
char mingzi[20]; //用户真实姓名
char mima[20]; //密码
};
struct no
{
int id;//记录第几个用户
int num;//记录第i个用户有几条记录
char biji[50][50];
};//记录第i个用户的笔记信息
struct user userinfor[1000],userinfor2[1000],user1;
struct no note[1000],note1[1000];
int main()//主函数
{
system("color 5F");
FILE *fp;
if((fp=fopen("userinfo.txt","r"))==0)
{
}
else import();
if((fp=fopen("biji.txt","r"))==0)
{
}
else
importtxt();
key();
return 0;
}
//函数名 key
//功能主函数
//需要参数 不
//需要返回值 不
void key()
{
/*
printf("记事本欢迎您\n");
printf("现已有%d人注册\n",number);
printf("1-----申请账号\n");
printf("2-----登录账号\n");
printf("0-----退出系统\n");
printf("请按相应的数字键:");*/
printf(" .--. .--.\n");
printf(" ._' |/ :.-,\n");
printf(" | `'.-;-.;` .'\n");
printf(" _:._/.'.'.'\.`-.\n");
printf(" / \.'.'.'/ /\n");
printf(" '-._.;`'-'-';---'\n");
printf(" / /| \'-. 记 事 本 欢 迎 您!!\n");
printf(" `--' `-.-' ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈\n\n\n");
printf(" 『现已有%d人注册!!』\n\n",number);
printf(" ※主菜单※\n");
printf(" ☆┉┉┉┉┉┉┉┉┉┉\n");
printf(" ┋★1~~~~~申请账号┋\n");
printf(" ┋★2~~~~~登录账号┋\n");
printf(" ┋★0~~~~~退出系统┋\n");
printf(" ┉┉┉┉┉┉┉┉┉┉☆\n");
printf(" ◆请按相应的数字键:");
/*int n;
scanf("%d",&n);
switch(n)
{
case 1:
shenqing();
break;
case 2:
denglu();
break;
case 0:
exit(0);
break;
}*/
char st[100];
scanf("%s",st);
if(st[0]=='1') shenqing();
else if(st[0]=='2') denglu();
else if(st[0]=='0') exit(0);
else { printf("请按正确的数字\n");Sleep(1000);system("cls"); key();}
}
//函数名 shengqing
//功能 用户申请账号
//需要参数 不
//需要返回值 不需要
void shenqing()
{
char st1[20],st2[20],c;//检测用户密码的
int i;
srand(time(NULL));
system("cls");
m1=rand()%999+1;
do
{
m1=rand()%999+1;
}
while(b[m1]!=0);
userinfor[m1].name=m1;
b[m1]=1;
printf("\n\n\n\n\n §☆请输入您的姓名:");
scanf("%s",userinfor[m1].mingzi);
printf("\n\n §☆您的账号是:%d\n",m1);
printf("\n\n §☆请输入您的密码:");
for(i=0; c=getch(); i++)
{
if(c==13) break;
else if(c=='\b')
{
i--;
printf("%c %c",c,c);
continue;
}
else
{
st1[i]=(c+m1)%128+1;//加密
printf("*");
}
}
st1[i]='\0';
printf("\n");
printf("\n\n §☆请再次输入您的密码:");
for(i=0; c=getch(); i++)
{
if(c==13) break;
else if(c=='\b')
{
i--;
printf("%c %c",c,c);
continue;
}
else
{
st2[i]=(c+m1)%128+1;//加密
printf("*");
}
}
st2[i]='\0';
if(strcmp(st1,st2)==0)
{
number++;
printf("\n");
strcpy(userinfor[m1].mima,st1);
//printf("%d %s %s",userinfor[m1].name,userinfor[m1].mingzi,userinfor[m1].mima);
backup();
system("cls");
printf("\n\n\n\n\n\n\n\n §☆现在正为您转到登陆页面....\n");
Sleep(1000);
denglu();
}
else
{
printf("\n");
printf(" \n\n §☆您的密码两次输入不一样,请重新申请!!\n");
Sleep(1000);
shenqing();
}
}
//函数名 denglu
//功能 登陆页面
//需要参数 不
//需要返回值 不
void denglu()
{
int i;
char c,st[100];
system("cls");
printf("\n\n\n\n\n\n\n §☆请输入用户名:");
scanf("%d",&user1.name);
printf("\n\n §☆请输入密码:");
for(i=0; c=getch(); i++)
{
if(c==13) break;
else if(c=='\b')
{
i--;
printf("%c %c",c,c);
continue;
}
else
{
st[i]=(c+user1.name)%128+1;//加密
printf("*");
}
}
st[i]='\0';
strcpy(user1.mima,st);
if(strcmp(user1.mima,userinfor[user1.name].mima)==0&&st[0]!='\0')
{
n = user1.name;
txt();
}
else
{
printf("\n");
printf("\n\n §☆用户名或密码错误,请正确输入!!\n");
Sleep(2000);
system("cls");
key();
}
}
//函数名 txt
//功能 对笔记的增删改查
//需要参数吗 不
//需要返回值吗 不
void txt()//进入笔记函数
{
int ca;
for(;;)
{
system("cls");
ca = n;
note[ca].id = ca;
printf("\n");
printf(" ╭⌒╮ 记事本~~ ¤ ╭⌒╮ ╭⌒╮\n");
printf(" ╭⌒╭⌒╮ ╭⌒╮~ ╭⌒╮ ︶︶, ︶︶\n");
printf(" , ︶︶︶︶ ,""︶~~ ,""~︶︶ , ""\n\n\n");
printf(" 『您现在有%d条记录!!』\n\n\n\n",note[ca].num);
printf(" ※查询功能※\n");
printf(" ☆┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉\n");
printf(" ┋★1~~~~~~新的笔记 ┋\n");
printf(" ┋★2~~~~~~查看以往的笔记 ┋\n");
printf(" ┋★3~~~~~~修改笔记 ┋\n");
printf(" ┋★4~~~~~~删除笔记 ┋\n");
printf(" ┋★0~~~~~~返回主菜单 ┋\n");
printf(" ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉☆\n");
printf(" ◆请按相应数字键:");
char st[100];
scanf("%s",st);
if(st[0]=='1')//输入新的记录
{
system("cls");
printf(" §☆请输入您的笔记:");
scanf("%s",note[ca].biji[note[ca].num]);
note[ca].num++;
}
else if(st[0]=='2')//查询
{
system("cls");
printf(" §☆请输入您要查看第几条记录:\n");
scanf("%d",&j);
if(j > note[ca].num)
printf("\n\n §☆对不起你查询的记录不存在!!\n");
else
printf("※第%d条记录为:%s\n",j,note[ca].biji[j-1]);
}
else if(st[0]=='3')//修改
{
system("cls");
printf(" §☆请输入您要修改第几条记录:");
scanf("%d%*c",&j);
if(j > note[ca].num)
printf("\n\n §☆对不起你查询的记录不存在!!\n");
else
{
printf("§☆请输入您要修改的内容:");
scanf("%s",note[ca].biji[j-1]);
}
}
else if(st[0]=='4')
{
printf("\n\n\n\n\n\n §☆请输入您要删除第几条记录:");
scanf("%d",&j);
for(k = j+1; k <= note[ca].num; k ++)
{
strcpy(note[ca].biji[k-1],note[ca].biji[k]);
}
note[ca].num--;
}
else if(st[0]=='0')//退出
{
backuptxt();
system("cls");
key() ;
}
else
printf(" ◆请输入正确的数字键:\n");
system("pause");
}
}
//备份全部数据函数backup()
//函数名 backu()
//功能 备份文件
//需要参数 不
//需要返回值 不
void backup()
{
FILE *fp,*count;
struct user *u1=userinfor+m1;
count=fopen("personcount.txt","w");
if(number==1)
{
fp=fopen("userinfo.txt","wb+");
fwrite(u1,sizeof(struct user),1,fp);
fclose(fp);
}
else
{
fp=fopen("userinfo.txt","ab+");
fwrite(u1,sizeof(struct user),1,fp);
fclose(fp);
}
//备份人数
fprintf(count,"%d",number);
fclose(count);
//printf("\n已备份所有记录,即将返回菜单\n\n");
}
//导入文件中数据函数import()
//函数名 import()
//需要参数 不
//需要返回值 不
void import()
{
FILE *fp,*count;
int i11,mm;
struct user *u1=userinfor2;
fp=fopen("userinfo.txt","rb");
count=fopen("personcount.txt","r");
//导入人数
fscanf(count,"%d",&number);
fclose(count);
//导入所有记录,利用上面导入的人数
fread(u1,sizeof(struct user),100,fp);
for(i11=0;i11<=100-1;i11++)
{
mm=userinfor2[i11].name;
userinfor[mm].name=userinfor2[i11].name;
strcpy(userinfor[mm].mingzi,userinfor2[i11].mingzi);
strcpy(userinfor[mm].mima,userinfor2[i11].mima);
}
fclose(fp);
//printf("\n已导入所有记录,%d/%d即将返回菜单\n\n");
}
void backuptxt()
{
FILE *fp;
struct no *u1= note+n;
fp=fopen("biji.txt","ab+");
//备份记录
fwrite(u1,sizeof(struct no),1,fp);
fclose(fp);
//备份人数
//fprintf(count,"%d",note[m1].num);
printf("\n已备份所有记录,即将返回菜单\n\n");
system("pause");
}
//导入文件中数据函数import()
void importtxt()
{
FILE *fp;
int mm,i11;
struct no *u1=note1;
fp=fopen("biji.txt","rb");
//count=fopen("personcount.txt","r");
//导入人数
//fscanf(count,"%d",&n);
//fclose(count);
//导入所有记录,利用上面导入的人数
fread(u1,sizeof(struct no),1000,fp);
for(i11=0;i11<=1000;i11++)
{
mm=u1[i11].id;
note[mm].id = u1[i11].id;
note[mm].num = u1[i11].num;
for(i = 0;i <= 49;i ++)
strcpy(note[mm].biji[i],u1[i11].biji[i]);
}
fclose(fp);
}