hello,各位小伙伴們大家好!你們今天有敲代碼嘛?
如果有熟悉的小伙伴看到我,就知道又可以來學(xué)習(xí)源碼項目了!沒錯,咱們今天要分享的同樣也是經(jīng)典管理系統(tǒng)項目之一:通訊錄管理系統(tǒng)!我們一起來看看吧!
知識點:C語言,鏈表
開發(fā)工具:VS2022/2019(沒有VS的話也可以來文末領(lǐng)取哦)
完成一個通訊錄管理系統(tǒng),具體要求如下:
1. 建立通訊錄信息,信息至少包含編號、姓名、年齡、電話、通訊地址、電子郵箱等
2. 能夠提供添加、刪除和修改通訊錄信息的功能
3. 能夠提供安不同方式查詢的功能;如按姓名或年齡、電話等查詢
4. 將通訊錄保存在文件中
5. 能夠按表格方式輸出通訊錄信息
6. 退出程序
也不說太多多余的話了,先看一下效果圖:
為了照顧那些想要快速完成項目設(shè)計的同學(xué),咱們就不進(jìn)行源碼的解析了,直接上全部源碼吧!
源碼分享:
typedef struct //定義每個人員信息結(jié)構(gòu)體
{
char num[5]; //編號
char name[9];//姓名
char sex[3]; //性別
char phone[13]; //電話
char addr[31]; //地址
}DataType;
typedef struct node //定義鏈表類型
{
DataType data; //數(shù)據(jù)域
struct node *next; //指針域
}ListNode;
typedef ListNode *LinkList;
void CreateList(LinkList &L,int m)//通訊錄鏈表的建立
{ int i;
LinkList s,r;
L=(LinkList)malloc(sizeof(ListNode));
L->next=NULL;
r=L; //尾節(jié)點
for(i=0;i
{ s=(LinkList)malloc(sizeof(ListNode)); //新建的節(jié)點
printf("輸入第%d位編號:",i+1);
scanf("%s",&s->data.num);
printf("
輸入姓名:");
scanf("%s",&s->data.name);
printf("
輸入性別:");
scanf("%s",&s->data.sex);
printf("
輸入電話:");
scanf("%s",&s->data.phone);
printf("
輸入地址:");
scanf("%s",&s->data.addr);
s->next=NULL;
r->next=s; //插入尾節(jié)點之后
r=s;
}
}
int ListLength(LinkList L) //求通訊錄鏈表的長度
{ LinkList p;
int length=0;
p=L->next;
while(p)
{ length++;
p=p->next;
}
return length;
}
int ListInsert(LinkList &L,int i,DataType d) //通訊錄鏈表的插入
{ LinkList p,s;
int length;
length=ListLength(L);
p=L->next;
int j=1;
if(!p||i>length+1) //如果是空表或者查詢位置不符合要求
return 0;
while(p&&j-1) //使p指向要添加位置的前一個元素
{
p=p->next;
j++;
}
s=(LinkList)malloc(sizeof(LinkList));
s->data=d;
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete(LinkList &L,int i)
{ LinkList p,q;//p為要刪除的前一個節(jié)點,q為要刪除的節(jié)點
p=L;
int j=0;
int length;
length=ListLength(L);
if(!p||i>length) //如果是空表或者查詢位置不符合要求
return 0;
while(p&&j-1) //使p指向要刪除位置的前一個元素
{ p=p->next;
j++;
}
q=p->next; //q指向后一個元素
printf("
被刪除的人員信息為:
");
printf("
編號:%s 姓名:%s 性別:%s 電話:%s 地址:%s",q->data.num,q->data.name,q->data.sex,q->data.phone,q->data.addr);
p->next=q->next;
return 1;
}
int GetElem(LinkList L,int i,DataType &d) //查詢第i個成員信息
{ LinkList p;
p=L->next;
int j=1;
int length;
length=ListLength(L);
if(!p||i>length) //如果是空表或者查詢位置不符合要求
return 0;
while(j
{p=p->next;
j++;
}
d=p->data;
return 1;
}
void print(LinkList L) //打印通訊錄人員信息
{ LinkList p;
p=L->next;
while(p)
{
printf("
編號:%s 姓名:%s 性別:%s 電話:%s 地址:%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
p=p->next;
}
}
void menu()
{ printf("--------------------------------------------1.通訊錄鏈表的建立----------------------------------------------------------");
printf("
--------------------------------------------2.通訊者節(jié)點的插入----------------------------------------------------------");
printf("
--------------------------------------------3.通訊者節(jié)點的查詢----------------------------------------------------------");
printf("
--------------------------------------------4.通訊者節(jié)點的刪除----------------------------------------------------------");
printf("
--------------------------------------------5.通訊錄鏈表的輸出----------------------------------------------------------");
printf("
--------------------------------------------0.退出管理系統(tǒng)--------------------------------------------------------------");
}
int main()
{
LinkList L;
DataType d,d1;
int m,location,length,choose;
menu();
p:
printf("
請輸入你的選項:");
scanf("%d",&choose);
switch(choose)
{ case 1:printf("請輸入通訊錄人數(shù):");scanf("%d",&m);CreateList(L,m);goto p;
case 2:printf("
輸入要插入的位置:");scanf("%d",&location);printf("輸入插入人員的編號:"); scanf("%s",&d.num);printf("
輸入姓名:"); scanf("%s",&d.name); printf("
輸入性別:");scanf("%s",&d.sex);printf("
輸入電話:");scanf("%s",&d.phone);printf("
輸入地址:");scanf("%s",&d.addr);ListInsert(L,location,d);goto p;
case 3:printf("
請輸入查詢位置");scanf("%d",&location);GetElem(L,location,d); printf("查詢到的人員信息為:
");printf("
編號:%s 姓名:%s 性別:%s 電話:%s 地址:%s",d.num,d.name,d.sex,d.phone,d.addr);goto p;
case 4:printf("
輸入要刪除的位置:");scanf("%d",&location);ListDelete(L,location);goto p;
case 5:print(L);goto p;
case 0:printf("系統(tǒng)已退出。");exit(0);
default:printf("輸入錯誤,請重新輸入");goto p;
}
return 0;
}
通訊錄管理系統(tǒng)就到此結(jié)束啦,大家趕緊試試吧!
審核編輯 :李倩
-
C語言
+關(guān)注
關(guān)注
180文章
7605瀏覽量
136934 -
管理系統(tǒng)
+關(guān)注
關(guān)注
1文章
2509瀏覽量
35934
原文標(biāo)題:C/C++項目開發(fā):通訊錄管理系統(tǒng)源碼,C語言鏈表實現(xiàn)
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論