當前位置:首頁 » 編程語言 » c語言手機通訊錄管理系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言手機通訊錄管理系統

發布時間: 2022-02-27 00:56:59

① 急求c語言編程 - 通訊錄管理系統

#include"stdio.h"
#define SIZE 5

struct stu
{
char name[10];
int no;
int age;
char add[10];
}stu[SIZE];

void readdat();
void writedat();
void change();

main()
{
char k;

printf(" 歡迎進入學生信息管理系統\n");
printf("\n\n 1.學生信息輸入系統 ");
printf(" 2.學生信息查詢系統\n");
printf(" 3.學生信息修改系統\n\n\n");
began:
printf("\n\n請輸入選項:");
scanf("%d",&k);
switch(k)
{
case 1: writedat(); break;

case 2: readdat(); break;

case 3: change(); break;

default: goto began;
}
goto began;
while(1);
}

void writedat()
{
FILE *fp;
char i;

printf("\n\n請輸入學生的姓名、學號、年齡和地址:\n");
for(i=0;i<SIZE;i++)
{
printf("輸入%d號學生信息:",i+1);
scanf("%s %d %d %s",stu[i].name,&stu[i].no,&stu[i].age,stu[i].add);
}

if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}
fclose(fp);
}

void readdat()
{
FILE *fp;
int i,k,kk;

jixu:
printf("查詢全部請輸入0,查詢單個請輸入1:");
scanf("%d",&k);

if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
if(k==0)
{
printf("編號 姓名 學號 年齡 地址\n");
for(i=0;i<SIZE;i++)
{
if(fread(&stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",i+1,stu[i].name,stu[i].no,stu[i].age,stu[i].add);
}
}
else if(k==1)
{
printf("請輸入學生的編號:");
scanf("%d",&kk);
printf("編號 姓名 學號 年齡 地址\n");
if(fread(&stu[kk-1],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);
}
else
{
printf("輸入錯誤!");
goto jixu;
}
fclose(fp);
}

void change()
{
FILE *fp;
char i,kk;

while(1)
{
printf("請輸入修改信息學生的編號(0退出):");
scanf("%d",&kk);
if(kk==0)
return;

printf("編號 姓名 學號 年齡 地址\n");
if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
for(i=0;i<SIZE;i++)
if(fread(&stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);

printf("請輸入學生的姓名、學號、年齡和地址:\n");
scanf("%s %d %d %s",stu[kk-1].name,&stu[kk-1].no,&stu[kk-1].age,stu[kk-1].add);
if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}

fclose(fp);
}
}

② c語言程序設計 通訊錄管理系統

你好!

有一個程序可以滿足你的要求,你看看吧,可以按照你的要求修改

③ 求一個c語言設計程序:通訊錄管理系統

#include<cstdio>
#include<cstdlib>
#include<cstring>
/**通訊錄*/
#definename256///名字
#definetele32///手機號
#definebirt32///生日
#definestID32///學號
typedefstructdirectory
{
charName[name];
charTele[tele];
charBirt[birt];
charStID[stID];
structdirectory*next,*prior;
}CONTACTS;
boolJ_T(charp[])///電話號碼
{
intlen=strlen(p);
if(len!=11||p[0]!='1')return0;
for(inti=1;i<len;i++)
{
if(!(p[i]>='0'&&p[i]<='9'))
return0;
}
return1;
}
boolJ_L(intyear)///平/潤年
{
return(year%4==0&&year%100!=0||year%400==0);
}
boolJ_B(charp[])///生日
{
intlen=strlen(p);
if(!(len>=8&&len<=10))return0;/**1949/1/1(8)1949/12/31(10)**/
intsum=0,Bith[3],k=0;
for(inti=0;i<len;i++)
{
if(!(p[i]>='0'&&p[i]<='9'||p[i]=='/'))///輸入合法
return0;
}
p[len]='/';
p[len+1]='';
for(inti=0;i<=len;i++)
{
if(p[i]!='/')
sum=10*sum+p[i]-'0';
else
{
Bith[k++]=sum;
sum=0;
}
}
p[len]='';
if(!(Bith[1]>=1&&Bith[1]<=12))
return0;
switch(Bith[1])
{
case1:case3:case5:case7:case8:case10:case12:
if(!(Bith[2]>=1&&Bith[2]<=31))return0;break;
case4:case6:case9:case11:
if(!(Bith[2]>=1&&Bith[2]<=30))return0;break;
case2:
if(J_L(Bith[0])==1){if(!(Bith[2]>=1&&Bith[2]<=29))return0;}///潤年29天
else{if(!(Bith[2]>=1&&Bith[2]<=28))return0;}break;///平年28天
}
return1;
}
boolJ_I(charp[])///學號
{
intlen=strlen(p);
if(len!=11||p[0]==0)return0;
for(inti=1;i<len;i++)
{
if(!(p[i]>='0'&&p[i]<='9'))
return0;
}
return1;
}
voidInput_(CONTACTS*head,boolx)///1,新錄入;2,添加
{
printf("錄入幾個人? ");
intn;
scanf("%d",&n);
getchar();
while(n--)
{
CONTACTS*p,*pnew=newCONTACTS;
if(x==0)
p=head->next;
else
p=head->prior;
printf("名字 ");
gets(pnew->Name);
printf("手機號 ");
while(1)
{
gets(pnew->Tele);
if(J_T(pnew->Tele)==1)
break;
else
printf("輸入手機號碼錯誤,請重輸 ");
}
printf("生日 ");
while(1)
{
gets(pnew->Birt);
if(J_B(pnew->Birt)==1)
break;
else
printf("輸入不正確,請檢查 ");
}
printf("學號 ");
while(1)
{
gets(pnew->StID);
if(J_I(pnew->StID)==1)
break;
else
printf("輸入學號錯誤,請檢查後重新輸入 ");
}
p->next=pnew;
pnew->prior=p;
pnew->next=head;
head->prior=pnew;
}
return;
}
voidOutput_(CONTACTS*head)///輸出
{
CONTACTS*p=head->next;
printf("------------------------ ");
while(p!=head)
{
printf("%-8s:%s %-8s:%s %-8s:%s %-8s:%s ","|姓名",p->Name,"|學號",p->StID,"|手機號碼",p->Tele,"|生日",p->Birt);
if(p->next!=head)
putchar(' ');
p=p->next;
}
printf("------------------------ ");
return;
}
voidOpen_files(CONTACTS*pHead)///外部倒入數據
{
CONTACTS*pNew,*pNext;
FILE*fp;
charfilename[name];
puts("請輸入你要打開文件的地址");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{
puts("無法打開文件");
fflush(stdin);
}
else
{
pNext=(CONTACTS*)malloc(sizeof(CONTACTS));
pHead->next=pNext;
pNext->prior=pHead;
fscanf(fp,"%s%s%s%s",pNext->Name,pNext->StID,pNext->Tele,pNext->Birt);
while(!feof(fp))
{
pNew=(CONTACTS*)malloc(sizeof(CONTACTS));
pNext->next=pNew;
pNew->prior=pNext;
pNext=pNew;
fscanf(fp,"%s%s%s%s",pNext->Name,pNext->StID,pNext->Tele,pNext->Birt);
}
pNext->next=pHead;
pHead->prior=pNext;
puts("導入數據成功!");
fclose(fp);
}
return;
}
voidSave_files(CONTACTS*pHead)///保存數據
{
CONTACTS*p=pHead->next;
FILE*fp;
charfilename[name];
if(p==pHead)
{
puts("無學生信息,請先錄入學生信息");
}
else
{
while(1)
{
puts("請輸入你要保存文件的地址");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
puts("無法打開文件");
else
{
while(p->next!=pHead)
{
fprintf(fp,"%s %s %s %s ",p->Name,p->StID,p->Tele,p->Birt);
p=p->next;
}
fprintf(fp,"%s %s %s %s ",p->Name,p->StID,p->Tele,p->Birt);
puts("保存文件成功!");
fclose(fp);
break;
}
}
}
return;
}
intMenu()
{
system("cls");
printf("-----------------------通訊錄----------------------- ");
printf("|******* 1.錄入| ");
printf("|******* 2.添加| ");
printf("|******* 3.查看| ");
printf("|******* 4.保存| ");
printf("|******* 5.打開| ");
printf("|******* 0.退出| ");
printf("---------------------------------------------------- ");
inti;
do
{
printf("輸入選項:_");
scanf("%d",&i);
}
while(i<0||i>5);
returni;
}
boolLoading(inttime)
{
charadmin[20]={"1"},passw[20]={"1"};
printf(" 用戶:______");
charadmi[20],pass[20];
scanf("%s",admi);
if(strcmp(admi,admin)==0)
{
printf(" 密碼:______");
scanf("%s",pass);
if(strcmp(pass,passw)==0)
return1;
else
{
printf("密碼錯誤 ");
return0;
}
}
else
{
printf("管理員錯誤 ");
return0;
}
}
intmain()
{
CONTACTS*head=(CONTACTS*)malloc(sizeof(CONTACTS));
head->next=head->prior=head;
inttimes=5;
printf(" ---------------------------------------------------------------- ");
printf(" |*******通訊錄系統*******| ");
printf(" |*******注意:你有%d次機會登陸本系統*******| ",times);
printf(" ---------------------------------------------------------------- ");
while(1)
{
intsign=Loading(times);
if(sign==1||times==1)
break;
times--;
printf("還有%d次機會 ",times);
}
if(times>1)
{
while(1)
{
switch(Menu())
{
case1:Input_(head,0);break;
case2:Input_(head,1);break;
case3:Output_(head);getchar();break;
case4:Save_files(head);getchar();break;
case5:Open_files(head);getchar();break;
case0:exit(0);break;
}
printf("按任意鍵繼續 ");
getchar();
}
}
else
{
printf("退出系統 ");
}
return0;
}


④ 急求c語言編程的個人通訊錄管理系統~

課 程 設 計

課程設計名稱: 數據結構課程設計
專 業 班 級 : 計科××××
學 生 姓 名 : ×××
學 號 : ××××××
指 導 教 師 :
課程設計時間:

計算機應用技術 專業課程設計任務書

學生姓名 ××× 專業班級 計科×× 學號 ××××
題 目 ××××××××××
課題性質 A 課題來源 D
指導教師 同組姓名 無
主要內容 學習掌握並熟練運用C語言進行程序設計;
針對具體應用問題,選擇、設計和實現合適的抽象數據類型;
進行簡單的需求分析,給出設計方案。
任務要求
綜合運用和融化所學理論知識,提高分析和解決實際問題的能力,達到培養良好程序設計能力和習慣的目的,為開發滿足問題要求的小型應用軟體奠定基礎,達到軟體工程的綜合性基礎訓練的目的。
完成需求分析報告,報告中對關鍵部分給出圖表說明。要求格式規范,工作量飽滿。
參考文獻 《數據結構(C語言版)》嚴蔚敏 清華大學出版社
《C語言程序設計》(第三版)譚浩強 清華大學出版社

審查意見
指導教師簽字:
教研室主任簽字: 年 月 日

1 需求分析
手機通訊錄系統,以聯系人為節點建立偽隊列(有頭尾指針、且可從表中間進行操作),要實現一下基本功能。
增加聯系人
刪除聯系人
修改聯系人
清空通訊錄
查找聯系人
按分組顯示聯系人
顯示全部聯系人
退出系統
2概要設計
(1) 程序總體框架如圖1所示:

圖1 程序框架圖

(2)序中各函數程簡單說明見如表1函數說明所示:
返回值 函數名 參數表 函數說明 提供客戶
int main void 主函數 是
void initAddressBook LinkQueue &Q 初始化通訊錄 否
bool enAddressBook LinkQueue &Q 增加聯系人 是
bool update LinkQueue &Q 修改聯系人 是
bool delPerson LinkQueue &Q 刪除聯系人 是
bool findByName LinkQueue &Q 查找聯系人 是
bool findByGroup LinkQueue &Q 按組顯示 是
void disAll LinkQueue &Q 顯示全部聯系人 是
bool clearAddressBook LinkQueue &Q 清空通訊錄 是

表1 函數說明
(2)對程序中的各個函數功能的描述
①主函數main:
系統開始、結束界面的顯示、各個功能函數的調用、轉換以及參數的傳遞、定義通訊頭結點並傳遞給各個功能函數
②初始化通訊錄函數initAddressBook:
初始化主函數傳入的頭結點,即初始化通訊錄,此系統採用偽隊列,有頭、尾指針,可從中間進行刪除操作
③增加聯系人函數enAddressBook
增加聯系人到通訊錄的尾部,返回增加是否成功。
④修改聯系人函數
按照用戶提供的聯系人姓名修改聯系人所有信息,返回修改是否成功。
⑤刪除聯系人
按照用戶指定的聯系人姓名刪除相應聯系人信息,返回刪除是否成功。
⑥查找聯系人
按照用戶提供的聯系人姓名查找第一個合法姓名對應的信息,查找成功則顯示信息,失敗則提示無此聯系人,返回是否查找到。
⑦按組顯示函數
按照用戶提供的分組名稱,查找組中聯系人,若存在則全部輸出,若不存在則提示無此分組,返回是否超找到合法聯系人。
⑧顯示全部聯系人函數
顯示當前通訊錄中所有聯系人的信息,若為空通訊錄,則顯示無聯系人。
⑨清空通訊錄
刪除所有聯系人信息,返回是否成功!
⑩通訊錄人數函數
判斷通訊錄當前聯系人數量,返回之,此函數主要是為清空通訊錄函數所調用,故不提供給用戶。
計3 運行環境
1)軟體環境
操作系統:Windows7
2)硬體環境
處理器:Intel Pentium 166MX 或更高
內存:32MB以上
硬碟空間:1GB以上
顯卡:SVGA 顯示適配
4 開發工具和編程語言
Microsoft visual C++
C語言
5 詳細設
//主函數
int main()
{
LinkQueue Q;
initAddressBook(Q);

int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※單※※※※※\n");
printf("※1、增加聯系人 2、刪除聯系人 ※\n");
printf("※3、修改聯系人 4、清空通訊錄 ※\n");
printf("※5、查找聯系人 6、按組顯示 ※\n");
printf("※7、顯示全部聯系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("請輸入編號(1-8):\n");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("輸入錯誤請重新輸入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加聯系人成功!\n");
else
printf("增加聯系人失敗!\n");
break;
case 2:
if(delPerson(Q))
printf("刪除聯系人成功!\n");
else
printf("聯系人刪除失敗!\n");
break;
case 3:
if(update(Q))
printf("修改聯系人成功!\n");
else
printf("修改聯系人失敗!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通訊錄已清空!\n");
else
printf("通訊錄清空失敗!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感謝您使用本系統!※※※※※※\n");
return 0;
}
//初始化通訊錄

void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;

}
//清空通訊錄
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通訊錄當前人數
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//刪除聯系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("請輸入要刪除的聯系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通訊錄為空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//刪除節點
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("無此聯系人!\n");
return false;
}
}
}
//查找聯系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要查詢的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//按組顯示聯系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _group[20];
printf("請輸入要查詢的分組:\n");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
return true;
}
else
{
printf("無此分組!\n");
return false;
}
}
}
//增加聯系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("請輸入聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入聯系人分組:\n");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改聯系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要修改的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//顯示所有聯系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("無聯系人!\n");
else
{
printf(" 姓名 號碼 分組\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p->name,p->tel,p->group);
p=p->next;
}
}
}
6 調試分析
1.測試中的問題舉例:
在測試刪除聯系人函數時發現無論通訊錄中現存多少條記錄只要刪除一條之後,通訊錄就會被清空,經過檢查發現是刪除函數中的條件控制設置有錯,導致只要一刪除一個聯系人就會事頭結點與尾結點指向同一個,導致再顯示聯系人時顯示無聯系人。經過調整已處理好。
2.演算法改進設想舉例:
程序中還有很多地方不能很好的模擬通訊錄的功能,比如在增肌聯系人時,不管原來新聯系人姓名是否已存在,都會被加入通訊錄,這樣一來就有可能重復記錄。此外在查找聯系人時只要查找到一個合法記錄就會中斷查找操作,如此有可能導致記錄的漏查。結合以上兩點應優化增加查找聯系人演算法,在存入之間進行防重判斷。
7 測試結果
1.測試數據舉例:
姓名 手機號 分組
張三 12345678910 家人
李四 12345678911 朋友
王五 12345678912 朋友
趙六 12345678913 同學
表2 測試數據舉例
2.按如下順序進行測試:
1) 將測試數據逐條輸入通訊錄(測試增加聯系人函數)
2) 顯示全部聯系人(測試顯示聯系人函數)
3) 選擇一個聯系人進行修改(測試修改聯系人函數)
4) 顯示全部聯系人(驗證修改聯系人函數是否有效)
5) 選擇一個聯系人進行查找(測試查找聯系人函數)
6) 選擇一個多人分組進行按分組顯示(測試按分組顯示函數)
7) 選擇清空聯系人(測試清空聯系人函數)
8) 顯示全部聯系人(驗證清空聯系人函數)
9) 選擇退出(退出程序)
3、按照如上提供的測試步驟得出以下結果運行圖:
主菜單如圖2所示:

圖2 運行示例圖a
1)在菜單中選擇「1」將測試數據逐條輸入通訊錄,如圖3

圖3 運行示例圖b
2) 在菜單中選擇「7」顯示全部聯系人,如圖4

圖4 運行示例圖c
3) 在菜單中選擇「3」選擇一個聯系人進行修改,如圖5

圖5 運行示例圖d
4) 在菜單中選擇「7」顯示全部聯系人,如圖6

圖6 運行示例圖e
5) 在菜單中選擇「5」選擇一個聯系人進行查找,如圖7

圖7 運行示例圖f
6) 在菜單中選擇「6」選擇一個多人分組進行按分組顯示,如圖8

圖8 運行示例圖g
7) 在菜單中選擇「4」清空聯系人,如圖9

圖9 運行示例圖h
8) 在菜單中選擇「7」顯示全部聯系人,如圖10

圖10 運行示例圖i
9) 在菜單中選擇「8」,退出,如圖11

圖11 運行示例圖j
參考文獻
[1]嚴蔚敏,《數據結構(C語言版)》 清華大學出版社
[2]譚浩強.《C語言程序設計》(第三版) 清華大學出版社
[3]Peter Van Der Linden ,C專家編程,人民郵電出版社
[4]Kenneth A.Reek C和指針 ,人民郵電出版社
心得體會
通過這次數據結構實踐作業,我更深刻的體會到了C語言的語句簡潔性、緊湊性,與數據結構思想對於一個程序編碼順利進行的重要性。
語言是程序的骨肉,而數據結構和演算法即使程序的靈魂,要想成功的編寫程序必須選好合適的數據結構,比如這次課程設計中,最開始我准備用普通的線性表進行設計,後來發現那樣很不方便,後來改為用「偽隊列」之後就方便了許多。
另外,我覺得比較重要的一點是在編復雜程序時要有宏觀思想,想從整體把握設計好各個板塊的調用關系,最好先做出一個流程圖,再按照這個總體設想進一步具體、細化!這樣才不會在需要調用其它函數時手忙腳亂!
此外,進行如上所述的操作前提都是以扎實的語言基礎做為前提的,在最開始的代碼編輯階段,我曾被指針很深的困擾,後來對此一節找了些資料進行「補課」,自己也進行的深入的理解,後來才逐漸順利起來!

信息科學與工程 學院課程設計成績評價表
課程名稱:數據結構課程設計
設計題目:×××××
專業:計科 班級:××× 姓名:××× 學號:××××××
序號 評審項目 分 數 滿分標准說明
1 內 容 思路清晰;語言表達准確,概念清楚,論點正確;實驗方法科學,分析歸納合理;結論嚴謹,設計有應用價值。任務飽滿,做了大量的工作。
2 創 新 內容新穎,題目能反映新技術,對前人工作有改進或突破,或有獨特見解
3 完整性、實用性 整體構思合理,理論依據充分,設計完整,實用性強
4 數據准確、可靠 數據准確,公式推導正確
5 規 范 性 設計格式、繪圖、圖紙、實驗數據、標準的運用等符合有關標准和規定
6 紀 律 性 能很好的遵守各項紀律,設計過程認真;
7 答 辯 准備工作充分,回答問題有理論依據,基本概念清楚。主要問題回答簡明准確。在規定的時間內作完報告。
總 分





指導教師 年 月 日

⑤ c語言學生通訊錄管理系統

/* HELLO.C -- Hello, world */

#include<stdio.h>
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20]="E:\\txl.txt";
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main( )

{
int m;
creat();
while(1)
{
printf("\n\t\t*********歡迎使用通訊錄信息管理系統*********\n\n");
printf("\n\t\t添加,請按1");
printf("\n\t\t查找,請按2");
printf("\n\t\t修改,請按3");
printf("\n\t\t刪除,請按4");
printf("\n\t\t輸出,請按5");
printf("\n\t\t退出,請按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\n操作完畢,請再次選擇!");
}
else
printf("\n\n選擇錯誤,請再次選擇!");
}
}

/*輸入模塊creat( ): 創建通訊錄的子函數。*/
void creat()
{
struct person one;
long s1;
/*printf("\n請輸入通訊錄文件名:");
scanf("%s",filename); */

if((fp=fopen(filename,"at+"))==NULL)
{
printf("\n不能建立通訊錄!");
exit();
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","電話號碼","住址");
printf("\n請輸入姓名、電話號碼及住址(以0結束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}

/*輸出模塊output( ):輸出通訊錄中聯系人通訊信息的子函數*/
void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打開通訊錄!");
exit();
}
printf("\n\n%20s\n","通 訊 錄");
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}

/*添加模塊append( ):向通訊錄中添加某人通訊信息的子函數*/
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打開通訊錄!");
exit();
}
printf("\n請輸入添加的姓名、電話號碼及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}

/*查找模塊search( ):在通訊錄中查找某人通訊信息的子函數*/
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n請輸入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打開通訊錄!");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
printf("\n\n已查到,記錄為:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n對不起,通訊簿中沒有此人的記錄。");
fclose(fp);
}

/*修改模塊modify( ):在通訊錄中修改某人通訊信息的子函數*/
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
printf("\n請輸入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打開通訊錄!");
exit();
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,記錄為:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n請輸入新姓名、電話號碼及住址:");
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\n對不起,通訊錄中沒有此人的記錄。");
fclose(fp);
}

/*刪除模塊delete( ):在通訊錄中刪除某人通訊信息的子函數*/
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
printf("\n請輸入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打開通訊錄!");
exit();
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
if(k)
{
printf("\n已查到,記錄為");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n確實要刪除,按1;不刪除,按0:");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
else
printf("\n對不起,通訊錄中沒有此人的記錄。");
fclose(fp);
}
}
}
}
<PIXTEL_MMI_EBOOK_2005>1###########################################################</PIXTEL_MMI_EBOOK_2005>

⑥ 用c語言設計出模擬手機通訊錄管理系統,實現對手機中的通信錄進行管理。

一個通信錄管理程序有以下功能: . 插入新的通信記錄; . 查找某人的通信記錄; . 刪除某人的通信記錄; . 瀏覽通信錄; . 結束程序運行。 設每條通信錄包含以下內容: .姓名 .地址 .郵政編碼 .電話號碼 並設通信錄全部以字元行形式存於文件中,每四個字元行構成一個通信錄記錄。 程序啟動後,自動從指定的文件中讀取通信錄信息。程序運行結束後,又自動將內存中修改過的通信錄 信息保護到文件中。為了查找,插入,刪除等操作的方便,程序內部以雙向鏈表形式組織通信錄信息。設啟 動程序的命令行可帶通信錄文件參數。如啟動時未給出文件名參數,則程序首先要求用戶鍵入通信錄文件

⑦ C語言,編寫一個簡單的通訊錄管理系統

實現一個通訊錄管理系統;

通訊錄管理系統可以用來存儲1000個人的信息,每個人的信息包括:
姓名、性別、年齡、電話、住址

**提供方法:
1. 添加聯系人信息
2. 刪除指定聯系人信息
3. 查找指定聯系人信息
4. 修改指定聯系人信息
5. 顯示所有聯系人信息
6. 清空所有聯系人
7. 以名字排序所有聯系人**

1、linkman.h(頭文件)

3、程序運行結果部分示範:

⑧ c語言 電話簿管理系統

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>

//主函數
int main()
{
LinkQueue Q;
initAddressBook(Q);

int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※單※※※※※\n");
printf("※1、增加聯系人 2、刪除聯系人 ※\n");
printf("※3、修改聯系人 4、清空通訊錄 ※\n");
printf("※5、查找聯系人 6、按組顯示 ※\n");
printf("※7、顯示全部聯系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("請輸入編號(1-8):\n");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("輸入錯誤請重新輸入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加聯系人成功!\n");
else
printf("增加聯系人失敗!\n");
break;
case 2:
if(delPerson(Q))
printf("刪除聯系人成功!\n");
else
printf("聯系人刪除失敗!\n");
break;
case 3:
if(update(Q))
printf("修改聯系人成功!\n");
else
printf("修改聯系人失敗!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通訊錄已清空!\n");
else
printf("通訊錄清空失敗!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感謝您使用本系統!※※※※※※\n");
return 0;
}
//初始化通訊錄

void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;

}
//清空通訊錄
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通訊錄當前人數
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//刪除聯系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("請輸入要刪除的聯系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通訊錄為空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//刪除節點
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("無此聯系人!\n");
return false;
}
}
}
//查找聯系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要查詢的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//按組顯示聯系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _group[20];
printf("請輸入要查詢的分組:\n");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
return true;
}
else
{
printf("無此分組!\n");
return false;
}
}
}
//增加聯系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("請輸入聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入聯系人分組:\n");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改聯系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要修改的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//顯示所有聯系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("無聯系人!\n");
else
{
printf(" 姓名 號碼 分組\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p->name,p->tel,p->group);
p=p->next;
}
}
}

⑨ 求用C語言建立通訊錄管理系統

#include<iostream>
#include<string>
#include<cstdio>
#include<windows.h>
usingnamespacestd;
#defineMAX1000
structPerson
{
stringm_Name;
intm_Sex;
intm_Age;
stringm_Phone;
stringm_Addr;
};
structAddressbooks
{
structPersonpersonArray[MAX];
intm_Size;
};
voidaddPerson(Addressbooks*abs)
{
if(abs->m_Size==MAX)
{
cout<<"通訊錄已滿,無法添加!"<<endl;
return;
}
else
{
cout<<"請輸入名字:"<<endl;
stringname;
cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
cout<<"請輸入性別:"<<endl;
cout<<"1=>男"<<endl;
cout<<"2=>女"<<endl;
intsex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"輸入有誤,請重新輸入"<<endl;
}
cout<<"請輸入年齡:"<<endl;
intage=0;
cin>>age;
abs->personArray[abs->m_Size].m_Age=age;
cout<<"請輸入電話號碼:"<<endl;
stringphone;
cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
cout<<"請輸入家庭住址"<<endl;
stringaddress;
cin>>address;
abs->personArray[abs->m_Size].m_Addr=address;
abs->m_Size++;
cout<<"添加成功"<<endl;
}
system("pause");
system("cls");
}
voidshowPerson(Addressbooks*abs)
{
if(abs->m_Size==0)
{
cout<<"當前記錄為空"<<endl;
}
else
{
for(inti=0;i<abs->m_Size;i++)
{
cout<<"姓名:"<<abs->personArray[i].m_Name<<"";
cout<<"性別:"<<(abs->personArray[i].m_Sex==1?"男":"女")<<"";
cout<<"年齡:"<<abs->personArray[i].m_Age<<"";
cout<<"電話:"<<abs->personArray[i].m_Phone<<"";
cout<<"住址:"<<abs->personArray[i].m_Addr<<endl;
}
}
system("pause");
system("cls");
};
intisExist(Addressbooks*abs,stringname)
{
for(inti=0;i<abs->m_Size;i++)
{
if(abs->personArray[i].m_Name==name)
{
returni;
}
}
return-1;
}
voiddeletePerson(Addressbooks*abs)
{
cout<<"請輸入您要刪除的聯系人"<<endl;
stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!=-1)
{
for(inti=ret;i<abs->m_Size;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_Size--;
cout<<"刪除成功"<<endl;
}
else
{
cout<<"查無此人"<<endl;
}
}
voidfindPerson(Addressbooks*abs)
{
cout<<"請輸入您要查找的聯系人"<<endl;
stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!=1)
{
cout<<"姓名:"<<abs->personArray[ret].m_Name<<"";
cout<<"性別:"<<(abs->personArray[ret].m_Sex==1?"男":"女")<<"";
cout<<"年齡:"<<abs->personArray[ret].m_Age<<"";
cout<<"電話:"<<abs->personArray[ret].m_Phone<<"";
cout<<"住址:"<<abs->personArray[ret].m_Addr<<endl;
}
else
{
cout<<"查無此人"<<endl;
}
system("pause");
system("cls");
}
voidmodifyPerson(Addressbooks*abs)
{
cout<<"請輸入您要修改的聯系人"<<endl;
stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!=-1)
{
cout<<"請輸入名字:"<<endl;
stringname;
cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
cout<<"請輸入性別:"<<endl;
cout<<"1=>男"<<endl;
cout<<"2=>女"<<endl;
intsex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"輸入有誤,請重新輸入"<<endl;
}
cout<<"請輸入年齡:"<<endl;
intage=0;
cin>>age;
abs->personArray[abs->m_Size].m_Age=age;
cout<<"請輸入電話號碼:"<<endl;
stringphone;
cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
cout<<"請輸入家庭住址"<<endl;
stringaddress;
cin>>address;
abs->personArray[abs->m_Size].m_Addr=address;
abs->m_Size++;
cout<<"修改成功"<<endl;
}
else
{
cout<<"查無此人"<<endl;
}
system("pause");
system("cls");
}
voidcleanPerson(Addressbooks*abs)
{
abs->m_Size=0;
cout<<"通訊錄已清空"<<endl;
system("pause");
system("cls");
}
voidshowMenu()
{
inti,j;
cout<<"**********通訊錄**********"<<endl;
cout<<"*******1.添加聯系人*******"<<endl;
cout<<"*******2.顯示聯系人*******"<<endl;
cout<<"*******3.刪除聯系人*******"<<endl;
cout<<"*******4.查找聯系人*******"<<endl;
cout<<"*******5.修改聯系人*******"<<endl;
cout<<"*******6.清空通訊錄*******"<<endl;
cout<<"*******0.退出通訊錄*******"<<endl;
cout<<"**************************"<<endl;
cout<<"請輸入您的選擇"<<endl;
}
intmain()
{
Addressbooksabs;
abs.m_Size=0;
intselect=0;
if(MessageBox(NULL,"歡迎進入通訊錄(取消會退出,確定可繼續使用),(不想要這段話可以到211行刪除)","通訊錄",MB_OKCANCEL)==1)
{
cout<<"登陸成功"<<endl;
}
else
{
cout<<"你沒按確定,請重進"<<endl;
return0;
}
while(true)
{
showMenu();
cin>>select;
switch(select)
{
case1:
addPerson(&abs);
break;
case2:
showPerson(&abs);
break;
case3:
deletePerson(&abs);
system("pause");
system("cls");
break;
case4:
findPerson(&abs);
break;
case5:
modifyPerson(&abs);
break;
case6:
cleanPerson(&abs);
break;
case0:
{
cout<<"歡迎您下一次使用"<<endl;
return0;
}
break;
default:
{
cout<<"輸入有誤,請重新輸入"<<endl;
system("pause");
system("cls");
}
}
}
system("pause");
return0;
}