我們組的合作之下,坐了筆記本管理系統,希望多提意見
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
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);
}