批注 2020-12-27 104847.png
通訊錄管理系統(tǒng)已經(jīng)有好多人寫過了 但是基于文本操作大多數(shù)只有從文件中輸出和輸入并不是即時的 解決方法是將鏈表里的數(shù)據(jù)輸出以結(jié)構(gòu)體的方式到文本 讀入應(yīng)該以一樣的方式
增加個人信息函數(shù)定義
void AddStu()
{
//分配存儲空間
CommHma *p=(CommHma*)malloc(sizeof(CommHma));
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓ \n");
printf("┃ 請輸入個人信息 ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛ \n");
printf("請輸入號碼(最大長度為%d個字符)\n",MAX_ID-1);
scanf("%s", p->data.id);
while(FindStu(p->data.id)==1)
{
printf("\t\t\t\t\t-此人已經(jīng)存在,請重新輸人\n\t\t\t\t\t->");
scanf("%s", p->data.id);
}
printf("\t\t\t\t\t請輸人姓名(最大長度為%d個字符)\n\t\t\t\t\t->",MAX_NAME-1);
scanf("%s", p->data.name);
printf("\t\t\t\t\t-請輸人性別('男'或'女')\n\t\t\t\t\t->");
scanf("%s",p->data.sex);
printf("請輸入分組",p->data.group);
scanf("%s",p->data.group);
p->next=Info;
Info=p;
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃┃ 添加成功! ┃ ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
文本讀寫操作 關(guān)鍵步驟
從文件讀出通訊錄信息函數(shù)定義
void ReadFile()
{
CommHma *p;
char id[MAX_ID];
FILE *pf=fopen("score.txt","r"); //以讀方式打開文件
if(!pf) return; //打開文件失敗
//從文件中逐一讀出每一聯(lián)系人信息
while(fscanf(pf,"%s",id)!=EOF)
{
p=(CommHma*)malloc(sizeof(CommHma));
strcpy(p->data.id,id);
fscanf(pf,"%s",p->data.name);
fscanf(pf,"%s",p->data.sex);
fscanf(pf,"%s",p->data.group);
//將每一學(xué)生信息(結(jié)點(diǎn))加入到鏈表中
p->next=Info;
Info=p;
p=NULL;
}
fclose(pf); //關(guān)閉文件
}
//將信息寫入文件函數(shù)定義
void WriteFile()
{
CommHma *p=Info;
FILE *pf=fopen("score.txt","w"); //以寫方式打開文件
if(!pf)return; //打開文件失敗
while(p) //將鏈表中的每一結(jié)點(diǎn)(聯(lián)系點(diǎn))寫入文件
{
fprintf(pf,"%s\n",p->data.id);
fprintf(pf,"%s\n",p->data.name);
fprintf(pf,"%s\n",p->data.sex);
fprintf(pf,"%s\n",p->data.group);
p=p->next;
}
fclose(pf); //關(guān)閉文件
}
運(yùn)行截圖
在這里插入圖片描述
在這里插入圖片描述
完整程序下載鏈接:https://download.csdn.net/download/RONNIE_Zz/13856413