国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)課設(shè)—C語言實現(xiàn)通訊錄管理系統(tǒng)(順序表實現(xiàn))

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)課設(shè)—C語言實現(xiàn)通訊錄管理系統(tǒng)(順序表實現(xiàn))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這個項目是我大一時期數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計,在我潛心研究下出來的,對于當時的我來說算是非常滿意啦,哈哈哈哈哈哈哈哈哈哈☆*: .?. o(≧▽≦)o .?.:*☆

目錄

一、引言

1.目的:

2.意義:

3.主要任務(wù):

4.程序功能:

5.編譯工具:

二、正文

1.系統(tǒng)模塊:

2.算法流程圖:

3.各個模塊的實現(xiàn):

(1)定義結(jié)構(gòu)體

①定義xx(信息)結(jié)構(gòu)體包含:

②定義結(jié)構(gòu)體xxb(信息表)包含:

③實現(xiàn)代碼:

(2)主函數(shù)main()?

①主函數(shù)模塊main()的功能是:

???②主函數(shù)模塊main()流程如圖(3)所示:

? ?③主函數(shù)模塊main()實現(xiàn)代碼:?

(3)選單模塊Menu()?

①選單模塊Menu()的功能是:

②選單模塊Menu()實現(xiàn)代碼:

(4)退出選單模塊Quit()?

①退出選單模塊Quit()的功能是:

②退出選單模塊Quit()實現(xiàn)代碼:

(5)創(chuàng)建數(shù)據(jù)模塊Create()?

①創(chuàng)建數(shù)據(jù)模塊Create()的功能是:

②創(chuàng)建數(shù)據(jù)模塊Create()的流程如圖(4)所示:

③創(chuàng)建數(shù)據(jù)模塊Create()實現(xiàn)代碼:

(6)添加數(shù)據(jù)模塊Add()?

①添加數(shù)據(jù)模塊Add()的功能是:

②添加數(shù)據(jù)模塊Add()的流程如圖(5)所示:

③添加數(shù)據(jù)模塊Add()實現(xiàn)代碼:

(7)查詢模塊Find()?

①查詢模塊Find()的功能是:

②查詢模塊Find()的流程如圖(6)所示:

③查詢模塊Find()實現(xiàn)代碼:

(8)修改模塊Alter()?

①修改模塊Alter()的功能是:

②修改模塊Alter()的流程如圖(7)所示:

③修改模塊Alter()實現(xiàn)代碼:

(9)刪除模塊Delete()?

①刪除模塊Delete()的功能是:

②刪除模塊Delete()的流程如圖(8)所示:

③刪除模塊Delete()實現(xiàn)代碼:

(10)顯示模塊List()?

①顯示模塊List()的功能是:

②顯示模塊List()的流程如圖(9)所示:

③顯示模塊List()實現(xiàn)代碼:

(11)統(tǒng)計模塊nv( )?

①統(tǒng)計模塊nv( )的功能是:

②統(tǒng)計模塊nv( )的流程如圖(10)所示:

③統(tǒng)計模塊nv( )實現(xiàn)代碼:

(12)顯示公司信息模塊ti( )?

①顯示公司信息模塊ti( )的功能是:

②顯示公司信息模塊ti( )流程如圖(11)所示:

③顯示公司信息模塊ti( )實現(xiàn)代碼:

三、結(jié)論

四、參考文獻

一、引言

1.目的:

(1)訓(xùn)練學生靈活應(yīng)用所學數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識,編寫程序求解指定問題。

(2)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;

2.意義:

(1)提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;

(2)訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),鞏固、深化學生的理論知識,提高編程水平,并在此過程中培養(yǎng)嚴謹?shù)目茖W態(tài)度和良好的工作作風。

3.主要任務(wù):

使用順序表實現(xiàn)對通訊錄信息的插入、查找、刪除、修改、輸出等操作,以及統(tǒng)計通訊錄中男女比例和顯示出同一公司中的人的信息。

4.程序功能:

(1)顯示提示菜單。

(2)創(chuàng)建順序表。

(3)創(chuàng)建通訊人信息。

(4)添加通訊人信息。

(5)查找指定聯(lián)系人信息。

(6)修改指定聯(lián)系人信息。

(7)刪除指定聯(lián)系人信息。

(8)顯示所有聯(lián)系人信息。

(9)統(tǒng)計通訊錄中男女比例。

(10)顯示出同一公司中的人的信息。

(11)退出通訊錄管理系統(tǒng)。

5.編譯工具:

編程語言:C語言。

編譯環(huán)境:Visual Studio 2022。

二、正文

1.系統(tǒng)模塊:

系統(tǒng)模塊主要是用選單模塊來調(diào)用各個小模塊來實現(xiàn)任務(wù)要求的功能,根據(jù)任務(wù)要求,下面將系統(tǒng)功能進行詳細設(shè)計劃分,具體結(jié)構(gòu)如圖(1)所示。

?大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(1) 系統(tǒng)模塊圖

2.算法流程圖:

本系統(tǒng)通過main()函數(shù)進行對menu()調(diào)用,然后通過menu()利用Switch函數(shù)實現(xiàn)

利用其它函數(shù)進行相關(guān)操作,具體流程如圖(2)所示

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(2) 算法流程圖

3.各個模塊的實現(xiàn):

(1)定義結(jié)構(gòu)體

①定義xx(信息)結(jié)構(gòu)體包含:

編號(char num[10])、姓名(char name[10])、性別(char sex[10])、電話(char phone[20])、公司名稱(char address[50])

②定義結(jié)構(gòu)體xxb(信息表)包含:

單個信息(xx grxx[MaxLen])

表中共有多少信息(int length)

③實現(xiàn)代碼:

typedef struct {
	char num[10];
	char name[10];
	char sex[10];
	char phone[20];
	char address[50];
}xx;
typedef struct
{
	xx grxx[MaxLen];
	int length;
}xxb;

(2)主函數(shù)main()

①主函數(shù)模塊main()的功能是:

根據(jù)選單的選項調(diào)用各函數(shù),并完成相應(yīng)的功能。運用if判斷用戶輸入的數(shù)值是否正確,用goto實現(xiàn)輸錯數(shù)值后的重新賦值,然后運用switch函數(shù)進行功能的選擇。

②主函數(shù)模塊main()流程如圖(3)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(3) 主函數(shù)模塊main()流程圖

③主函數(shù)模塊main()實現(xiàn)代碼:? ? ??

int main()
{
	xxb L;
	int i;
	InitList(&L);
	while (1) {
		Menu();
		printf("請輸入您想要的功能:(1-9)\t");
	loop:scanf_s(" %d", &i);
		if (i <= 0 || i >= 10)
		{
			system("cls");
			Menu();
			printf("未設(shè)定功能,請重新輸入:");

			goto loop;
		}
		switch (i)
		{
		case 1:
			Create(&L);
			break;
		case 2:
			Add(&L);
			break;
		case 3:
			Find(L);
			break;
		case 4:
			Alter(&L);
			break;
		case 5:
			Delete(&L);
			break;
		case 6:
			List(L);
			break;
		case 7:
			nv(L);
			break;
		case 8:
			ti(L);
			break;
		case 9:
			Quit();
			break;
		default:
			break;
		}
	}
	system("pause");
	return 0;
}

(3)選單模塊Menu()

①選單模塊Menu()的功能是:

顯示提示選單。使用printf函數(shù)進行界面排版。

②選單模塊Menu()實現(xiàn)代碼:

void Menu()
{
	printf("\t\t\t《通訊錄管理系統(tǒng)菜單》\n");
	printf(">————————————————————————————————\n");
	printf("*\t1.新建聯(lián)系人\n");
	printf("*\t2.添加聯(lián)系人信息\n");
	printf("*\t3.查找指定聯(lián)系人信息\n");
	printf("*\t4.修改指定聯(lián)系人\n");
	printf("*\t5.刪除指定聯(lián)系人\n");
	printf("*\t6.顯示全部聯(lián)系人信息\n");
	printf("*\t7.顯示本通訊錄男女比例\n");
	printf("*\t8.顯示出同一公司中的人的信息\n");
	printf("*\t9.退出菜單\n");
	printf(">————————————————————————————————\n");
}

(4)退出選單模塊Quit()

①退出選單模塊Quit()的功能是:

退出選單。運用exit()函數(shù)直接退出選單。

②退出選單模塊Quit()實現(xiàn)代碼:

void Quit()
{
	exit(0);
}

(5)創(chuàng)建數(shù)據(jù)模塊Create()

①創(chuàng)建數(shù)據(jù)模塊Create()的功能是:

創(chuàng)建新的數(shù)據(jù)記錄。先判斷通訊錄是否滿員,再進行輸入內(nèi)容,對編號進行判斷是否重復(fù),在輸入其他數(shù)據(jù),最后詢問是否繼續(xù)添加,使用循環(huán)結(jié)構(gòu)進行多次寫入。

②創(chuàng)建數(shù)據(jù)模塊Create()的流程如圖(4)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(4) 創(chuàng)建數(shù)據(jù)模塊Create()流程圖

③創(chuàng)建數(shù)據(jù)模塊Create()實現(xiàn)代碼:

void Create(xxb* L)
{
	xx x;
	char ch;
	int n = 0, i;
	do
	{
		printf(">————————————————————————————————\n");
		if (L->length == MaxLen)
		{
			printf("通訊錄已滿!\n");
			system("pause");
			system("cls");
			return;
		}
		printf("請輸入通訊者的編號:");
		fflush(stdin);
	num:gets(x.num);
		for (i = 0; i < L->length; i++)
		{
			if (strcmp(L->grxx[i].num, x.num) == 0)
			{
				printf(">————————————————————————————————\n");
				printf("已有此編號,請重新輸入:");
				goto num;
			}
		}
		printf("請輸入通訊者的姓名:");
		gets(x.name);
		printf("請輸入通訊者的性別:");
		gets(x.sex);
		printf("請輸入通訊者的電話:");
		gets(x.phone);
		printf("請輸入通訊者的公司名稱:");
		gets(x.address);
		L->grxx[L->length++] = x;
		n++;
		printf(">————————————————————————————————\n");
		printf("是否繼續(xù)添加通訊者信息?(Y/N):");
		scanf_s(" %c", &ch);
	} while (ch == 'y' || ch == 'Y');
	printf(">————————————————————————————————\n");
	printf("本次共添加%d位信息\n", n);
	system("pause");
	system("cls");
	return;
}

(6)添加數(shù)據(jù)模塊Add()

①添加數(shù)據(jù)模塊Add()的功能是:

增加新的數(shù)據(jù)記錄,并返回選單。判斷通訊錄是否滿員,再進行輸入內(nèi)容,對編號進行判斷,對編號進行判斷是否重復(fù),在輸入其他數(shù)據(jù)

②添加數(shù)據(jù)模塊Add()的流程如圖(5)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(5) 添加數(shù)據(jù)模塊Add()流程圖

③添加數(shù)據(jù)模塊Add()實現(xiàn)代碼:

void Add(xxb* L)
{
	xx x;
	char ch;
	printf(">————————————————————————————————\n");
	if (L->length == MaxLen)
	{
		printf("通訊錄已滿!\n");
		return;
	}
	printf("請輸入通訊者的編號:");
	fflush(stdin);
num:gets(x.num);
	for (int i = 0; i < L->length; i++)
	{
		if (strcmp(L->grxx[i].num, x.num) == 0)
		{
			printf(">————————————————————————————————\n");
			printf("已有此編號,請重新輸入:");
			goto num;
		}
	}
	printf("請輸入通訊者的姓名:");
	gets(x.name);
	printf("請輸入通訊者的性別:");
	gets(x.sex);
	printf("請輸入通訊者的電話:");
	gets(x.phone);
	printf("請輸入通訊者的公司名稱:");
	gets(x.address);
	L->grxx[L->length++] = x;
	printf(">————————————————————————————————\n");
	printf("添加成功!\n");
	system("pause");
	system("cls");
	return;
}

(7)查詢模塊Find()

①查詢模塊Find()的功能是:

按要求查詢相關(guān)的信息,如果找到了,則顯示該信息,如果未找到,則提示文件中沒有該信息,并返回選單。先判斷客戶要根據(jù)什么值查找,再根據(jù)輸入值進行判斷查找,找到就輸出其他信息,沒找到就返回菜單。運用switch ( )和if的多層嵌套來判斷客戶想要實現(xiàn)的功能,再用for循環(huán)來查找數(shù)據(jù),進行顯示操作。

②查詢模塊Find()的流程如圖(6)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(6) 查詢模塊Find()流程圖

③查詢模塊Find()實現(xiàn)代碼:

void Find(xxb L)
{
	int i;
	xx r;
	char e[20];
	printf(">————————————————————————————————\n");
	printf("1.按姓名查找\n");
	printf("2.按手機號碼查找\n");
	printf("3.按編號查找\n");
	printf("0.返回菜單\n");
	printf(">————————————————————————————————\n");
	printf("請選擇查找方式:");
loop1:scanf_s (" %d", &i);
	if (i < 0 || i > 3) {
		printf(">————————————————————————————————\n");
		printf("未設(shè)定功能,請重新輸入:");
		goto loop1;
	}
	switch (i)
	{
	case 1:
		printf(">————————————————————————————————\n");
		printf("請輸入姓名:");
		scanf_s ("%s", e);
		for (i = 0; i < L.length; i++)
		{
			r = L.grxx[i];
			if (strcmp(r.name, e) == 0)
			{
				printf(">————————————————————————————————\n");
				printf("姓名為(%s)的通訊者的其他信息為:\n編號:%s\t性別:%s\t電話:%s\t公司名稱:%s\n", e, r.num, r.sex, r.phone, r.address);
				printf(">————————————————————————————————\n");
				system("pause");
				system("cls");
				return;
			}
		}
		printf(">————————————————————————————————\n");
		printf("未找到姓名為(%s)的通訊者\n", e);
		system("pause");
		system("cls");
		break;
	case 2:
		printf(">————————————————————————————————\n");
		printf("請輸入電話:");
		scanf_s ("%s", e);
		for (i = 0; i < L.length; i++)
		{
			r = L.grxx[i];
			if (strcmp(r.phone, e) == 0)
			{
				printf(">————————————————————————————————\n");
				printf("電話為(%s)的通訊者的其他信息為:\n編號:%s\t性別:%s\t電話:%s\t公司名稱:%s\n", e, r.num, r.name, r.sex, r.address);
				printf(">————————————————————————————————\n");
				system("pause");
				system("cls");
				return;
			}
		}
		printf(">————————————————————————————————\n");
		printf("未找到姓名為(%s)的通訊者\n", e);
		system("pause");
		system("cls");
		break;
	case 3:
		printf(">————————————————————————————————\n");
		printf("請輸入編號:");
		scanf_s ("%s", e);
		for (i = 0; i < L.length; i++)
		{
			r = L.grxx[i];
			if (strcmp(r.num, e) == 0)
			{
				printf(">————————————————————————————————\n");
				printf("編號為(%s)的通訊者的其他信息為:\n編號:%s\t性別:%s\t電話:%s\t公司名稱:%s\n", e, r.name, r.sex, r.phone, r.address);
				printf(">————————————————————————————————\n");
				system("pause");
				system("cls");
				return;
			}
		}
		printf(">————————————————————————————————\n");
		printf("未找到姓名為(%s)的通訊者\n", e);
		system("pause");
		system("cls");
		break;
	case 0:
		system("cls");
		break;
	}
	return;
}

(8)修改模塊Alter()

①修改模塊Alter()的功能是:

修改某條記錄的信息,如果未找到要修改的記錄,則提示系統(tǒng)中無此記錄,并返回選單。根據(jù)客戶輸入的修改方式進入對應(yīng)的修改界面,再根據(jù)輸入值進行修改,修改成功后返回菜單。運用switch ( )和if的多層嵌套來判斷客戶想要實現(xiàn)的功能,再用for循環(huán)來查找數(shù)據(jù),進行修改操作。

②修改模塊Alter()的流程如圖(7)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(7) 修改模塊Alter()流程圖

③修改模塊Alter()實現(xiàn)代碼:

void Alter(xxb* L)
{
	int i, k = 0;
	xx r;
	char e[20];
	printf(">————————————————————————————————\n");
	printf("1.按姓名修改\n");
	printf("2.按手機號碼修改\n");
	printf("3.按編號修改\n");
	printf("0.返回菜單\n");
	printf(">————————————————————————————————\n");
	printf("請選擇修改方式:");
loop2:scanf_s (" %d", &i);
	if (i < 0 || i > 3) {
		printf(">————————————————————————————————\n");
		printf("未設(shè)定功能,請重新輸入:");
		goto loop2;
	}
	switch (i)
	{
	case 1:
		printf(">————————————————————————————————\n");
		printf("請輸入要修改人的姓名:");
		scanf_s ("%s", e);
		for (i = 0; i < L->length; i++)
		{
			r = L->grxx[i];
			if (strcmp(r.name, e) == 0)
			{
				k = 1;
				break;
			}
		}
		if (k == 0)
		{
			printf(">————————————————————————————————\n");
			printf("未找到姓名為(%s)的通訊者\n", e);
			system("pause");
			system("cls");
			break;
		}
		else
		{
			printf(">————————————————————————————————\n");
			printf("姓名為(%s)的通訊者的原信息為:\n編號:%s\t性別:%s\t手機號碼:%s\t公司名稱:%s\n", e, r.num, r.sex, r.phone, r.address);
			printf(">————————————————————————————————\n");
			printf("請選擇要修改的數(shù)據(jù)\n");
			printf("\t1.姓名;\n");
			printf("\t2.性別;\n");
			printf("\t3.電話;\n");
			printf("\t4.公司名稱;\n");
			printf("\t0.退出\n");
			printf(">————————————————————————————————\n");
			printf("您要修改姓名為(%s)通訊者的哪項數(shù)據(jù)?\n", e);
			scanf_s ("%d", &k);
			switch (k)
			{
			case 1:
				printf("請輸入新姓名:");
				scanf_s ("%s", r.name);
				break;
			case 2:
				printf("請輸入新性別:");
				scanf_s ("%s", r.sex);
				break;
			case 3:
				printf("請輸入新手機號碼:");
				scanf_s ("%s", r.phone);
				break;
			case 4:
				printf("請輸入新公司名稱:");
				scanf_s ("%s", r.address);
				break;
			}
			L->grxx[i] = r;
			printf(">————————————————————————————————\n");
			printf("修改成功!\n");
		}
		system("pause");
		system("cls");
		break;
	case 2:
		printf(">————————————————————————————————\n");
		printf("請輸入要修改人的手機號碼:");
		scanf_s ("%s", e);
		for (i = 0; i < L->length; i++)
		{
			r = L->grxx[i];
			if (strcmp(r.phone, e) == 0)
			{
				k = 1;
				break;
			}
		}
		if (k == 0)
		{
			printf(">————————————————————————————————\n");
			printf("未找到手機號碼為(%s)的通訊者\n", e);
			system("pause");
			system("cls");
			break;
		}
		else
		{
			printf(">————————————————————————————————\n");
			printf("手機號碼為(%s)的通訊者的原信息為:\n編號:%s\t性別:%s\t手機號碼:%s\t公司名稱:%s\n", e, r.num, r.name, r.sex, r.address);
			printf(">————————————————————————————————\n");
			printf("請選擇要修改的數(shù)據(jù)\n");
			printf("\t1.姓名;\n");
			printf("\t2.性別;\n");
			printf("\t3.電話;\n");
			printf("\t4.公司名稱;\n");
			printf("\t0.退出\n");
			printf(">————————————————————————————————\n");
			printf("您要修改手機號碼為(%s)通訊者的哪項數(shù)據(jù)?\n", e);
			scanf_s ("%d", &k);
			switch (k)
			{
			case 1:
				printf("請輸入新姓名:");
				scanf_s ("%s", r.name);
				break;
			case 2:
				printf("請輸入新性別:");
				scanf_s ("%s", r.sex);
				break;
			case 3:
				printf("請輸入新手機號碼:");
				scanf_s ("%s", r.phone);
				break;
			case 4:
				printf("請輸入新公司名稱:");
				scanf_s ("%s", r.address);
				break;
			}
			L->grxx[i] = r;
			printf(">————————————————————————————————\n");
			printf("修改成功!\n");
		}
		system("pause");
		system("cls");
		break;
	case 3:
		printf(">————————————————————————————————\n");
		printf("請輸入要修改人的編號:");
		scanf_s ("%s", e);
		for (i = 0; i < L->length; i++)
		{
			r = L->grxx[i];
			if (strcmp(r.num, e) == 0)
			{
				k = 1;
				break;
			}
		}
		if (k == 0)
		{
			printf(">————————————————————————————————\n");
			printf("未找到姓名為(%s)的通訊者\n", e);
			system("pause");
			system("cls");
			break;
		}
		else
		{
			printf(">————————————————————————————————\n");
			printf("編號為(%s)的通訊者的其他信息為:\n編號:%s\t性別:%s\t電話:%s\t公司名稱:%s\n", e, r.name, r.sex, r.phone, r.address);
			printf(">————————————————————————————————\n");
			printf("請選擇要修改的數(shù)據(jù)\n");
			printf("\t1.姓名;\n");
			printf("\t2.性別;\n");
			printf("\t3.電話;\n");
			printf("\t4.公司名稱;\n");
			printf("\t0.退出\n");
			printf(">————————————————————————————————\n");
			printf("您要修改手機號碼為(%s)通訊者的哪項數(shù)據(jù)?\n", e);
			scanf_s ("%d", &k);
			switch (k)
			{
			case 1:
				printf("請輸入新姓名:");
				scanf_s ("%s", r.name);
				break;
			case 2:
				printf("請輸入新性別:");
				scanf_s ("%s", r.sex);
				break;
			case 3:
				printf("請輸入新手機號碼:");
				scanf_s ("%s", r.phone);
				break;
			case 4:
				printf("請輸入新公司名稱:");
				scanf_s ("%s", r.address);
				break;
			}
			L->grxx[i] = r;
			printf(">————————————————————————————————\n");
			printf("修改成功!\n");
		}
		system("pause");
		system("cls");
		break;
	case 0:
		system("cls");
		break;
	}
	return;
}

(9)刪除模塊Delete()

①刪除模塊Delete()的功能是:

刪除某條記錄,如果未找到要刪除的記錄,則提示通訊錄中沒有,并返回選單。根據(jù)客戶輸入的修改方式進入對應(yīng)的刪除界面,再根據(jù)輸入值進行刪除,最終確定客戶是否刪除,取消刪除或刪除成功后返回菜單。運用switch ( )和if的多層嵌套來判斷客戶想要實現(xiàn)的功能,再用for循環(huán)來查找數(shù)據(jù),進行刪除操作。

②刪除模塊Delete()的流程如圖(8)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(8) 刪除模塊Delete()流程圖

③刪除模塊Delete()實現(xiàn)代碼:

void Delete(xxb* L)
{
	int i, j, k = 0;
	xx r;
	char e[20], y;
	printf(">————————————————————————————————\n");
	printf("1.按姓名刪除\n");
	printf("2.按手機號碼刪除\n");
	printf("3.按編號刪除\n");
	printf("0.返回菜單\n");
	printf(">————————————————————————————————\n");
	printf("請選擇修改方式:");
loop3:scanf_s (" %d", &i);
	if (i < 0 || i > 3) {
		printf(">————————————————————————————————\n");
		printf("未設(shè)定功能,請重新輸入:");
		goto loop3;
	}
	switch (i)
	{
	case 1:
		printf(">————————————————————————————————\n");
		printf("請輸入要刪除的通訊者的姓名:");
		scanf_s ("%s", e);
		for (i = 0; i < L->length; i++)
		{
			r = L->grxx[i];
			if (strcmp(r.name, e) == 0)
			{
				k = 1;
				break;
			}
		}
		if (k == 0)
		{
			printf(">————————————————————————————————\n");
			printf("未找到姓名為(%s)的通訊者\n", e);
			system("pause");
			system("cls");
			break;
		}
		else
		{
			printf(">————————————————————————————————\n");
			printf("姓名為(%s)的通訊者的原信息為:\n編號:%s\t性別:%s\t手機號碼:%s\t公司名稱:%s\n", e, r.num, r.sex, r.phone, r.address);
			printf(">————————————————————————————————\n");
			printf("您確定要刪除嗎?(Y/N)\n");
			scanf_s (" %c", &y);
			if (y == 'y' || y == 'Y')
			{
				for (j = i; j < L->length; j++)
					L->grxx[j] = L->grxx[j + 1];
				L->length--;
				printf(">————————————————————————————————\n");
				printf("刪除成功!\n");
				system("pause");
				system("cls");
				return;
			}
			else
			{
				printf(">————————————————————————————————\n");
				printf("您已取消刪除!\n");
				system("pause");
				system("cls");
				return;
			}
		}
		system("pause");
		system("cls");
		break;
	case 2:
		printf(">————————————————————————————————\n");
		printf("請輸入要刪除的通訊者的手機號碼:");
		scanf_s ("%s", e);
		for (i = 0; i < L->length; i++)
		{
			r = L->grxx[i];
			if (strcmp(r.phone, e) == 0)
			{
				k = 1;
				break;
			}
		}
		if (k == 0)
		{
			printf(">————————————————————————————————\n");
			printf("未找到手機號碼為(%s)的通訊者\n", e);
			system("pause");
			system("cls");
			break;
		}
		else
		{
			printf(">————————————————————————————————\n");
			printf("手機號碼為(%s)的通訊者的原信息為:\n編號:%s\t性別:%s\t手機號碼:%s\t公司名稱:%s\n", e, r.num, r.name, r.sex, r.address);
			printf(">————————————————————————————————\n");
			printf("您確定要刪除嗎?(Y/N)\n");
			scanf_s (" %c", &y);
			if (y == 'y' || y == 'Y')
			{
				for (j = i; j < L->length; j++)
					L->grxx[j] = L->grxx[j + 1];
				L->length--;
				printf(">————————————————————————————————\n");
				printf("刪除成功!\n");
				system("pause");
				system("cls");
				return;
			}
			else
			{
				printf(">————————————————————————————————\n");
				printf("您已取消刪除!\n");
				system("pause");
				system("cls");
				return;
			}
		}
		system("pause");
		system("cls");
		break;
	case 3:
		printf(">————————————————————————————————\n");
		printf("請輸入要刪除的通訊者的編號:");
		scanf_s ("%s", e);
		for (i = 0; i < L->length; i++)
		{
			r = L->grxx[i];
			if (strcmp(r.phone, e) == 0)
			{
				k = 1;
				break;
			}
		}
		if (k == 0)
		{
			printf(">————————————————————————————————\n");
			printf("未找到編號為(%s)的通訊者\n", e);
			system("pause");
			system("cls");
			break;
		}
		else
		{
			printf(">————————————————————————————————\n");
			printf("編號為(%s)的通訊者的其他信息為:\n編號:%s\t性別:%s\t電話:%s\t公司名稱:%s\n", e, r.name, r.sex, r.phone, r.address);
			printf(">————————————————————————————————\n");
			printf("您確定要刪除嗎?(Y/N)\n");
			scanf_s (" %c", &y);
			if (y == 'y' || y == 'Y')
			{
				for (j = i; j < L->length; j++)
					L->grxx[j] = L->grxx[j + 1];
				L->length--;
				printf(">————————————————————————————————\n");
				printf("刪除成功!\n");
				system("pause");
				system("cls");
				return;
			}
			else
			{
				printf(">————————————————————————————————\n");
				printf("您已取消刪除!\n");
				system("pause");
				system("cls");
				return;
			}
		}
		system("pause");
		system("cls");
		break;
	case 0:
		system("cls");
		break;
	}
	return;
}

(10)顯示模塊List()

①顯示模塊List()的功能是:

顯示所有記錄。運用for實現(xiàn)數(shù)據(jù)的查找配合printf進行數(shù)據(jù)的輸出。

②顯示模塊List()的流程如圖(9)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(9) 顯示模塊List()流程圖

③顯示模塊List()實現(xiàn)代碼:

void List(xxb L)
{
	xx r;
	int i;
	printf("通訊者信息:\n");
	for (i = 0; i < L.length; i++)
	{
		r = L.grxx[i];
		printf("(%d)編號:%s\t姓名:%s\t性別:%s\t電話:%s\t公司名稱:%s\n", i + 1, r.num, r.name, r.sex, r.phone, r.address);
	}
	system("pause");
	system("cls");
	return;
}

(11)統(tǒng)計模塊nv( )

①統(tǒng)計模塊nv( )的功能是:

統(tǒng)計通訊錄中男女比例。運用for實現(xiàn)數(shù)據(jù)的查找,if判斷是否為男,為男則n++否則v++,顯示男女比例n:v,返回選單。

②統(tǒng)計模塊nv( )的流程如圖(10)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(10) 統(tǒng)計模塊nv( )流程圖

③統(tǒng)計模塊nv( )實現(xiàn)代碼:

void nv(xxb L)
{
	int i, n = 0, v = 0;
	for (i = 0; i < L.length; i++)
	{
		if (strcmp(L.grxx[i].sex, "男") == 0)
			n++;
		else
			v++;
	}
	printf(">————————————————————————————————\n");
	printf("通訊錄中男女比例為%d:%d", n, v);
	system("pause");
	system("cls");
	return;
}

(12)顯示公司信息模塊ti( )

①顯示公司信息模塊ti( )的功能是:

顯示出同一公司中的人的信息。運用for判斷通訊錄中是否有數(shù)據(jù)屬于此公司,如果沒有數(shù)據(jù)就返回選單,如果有數(shù)據(jù)屬于此公司再判斷屬于此公司的通訊者并輸出他們的信息,運行完成后回到選單。

②顯示公司信息模塊ti( )流程如圖(11)所示:

大一c語言通訊錄管理系統(tǒng),C,數(shù)據(jù)結(jié)構(gòu),c語言

圖(11) 顯示公司信息模塊ti( )流程圖

③顯示公司信息模塊ti( )實現(xiàn)代碼:

void ti(xxb L)
{
	xx r;
	int i, k = 0;
	char e[20];
	printf(">————————————————————————————————\n");
	printf("請輸入您要查找人員信息的公司名稱:");
	scanf_s (" %s", e);
	for (i = 0; i < L.length; i++)
	{
		if (strcmp(L.grxx[i].address, e) == 0)
		{
			k = 1;
			break;
		}
	}
	if (k == 0)
	{
		printf(">————————————————————————————————\n");
		printf("本通訊錄沒有公司為(%s)的人員信息!", e);
		system("pause");
		system("cls");
		return;
	}
	else
	{
		printf(">————————————————————————————————\n");
		printf("本通訊錄里公司為(%s)的所有人員信息為:\n", e);
		for (i = 0; i < L.length; i++)
		{
			r = L.grxx[i];
			if (strcmp(L.grxx[i].address, e) == 0)
				printf("(%d)編號:%s\t姓名:%s\t性別:%s\t電話:%s\t公司名稱:%s\n", k++, r.num, r.name, r.sex, r.phone, r.address);
		}
		printf(">————————————————————————————————\n");
		system("pause");
		system("cls");
		return;
	}
	return;
}

三、結(jié)論

通訊錄管理系統(tǒng)是我設(shè)計的第1個系統(tǒng),面對現(xiàn)實當中通訊錄管理的實際需求,我總結(jié)分析并設(shè)計了不同模塊來滿足需求。在模塊的設(shè)計和調(diào)試當中,我感受到對順序表有了更多的領(lǐng)悟,我會在之后鞏固c語言的知識,堅持勤學勤練。在本次設(shè)計當中有許多我想要實現(xiàn)的復(fù)雜功能沒能成功,系統(tǒng)在體驗方面仍有不足。我會繼續(xù)努力探索,掌握技巧實現(xiàn)更多更便利的功能。

我的通訊錄管理系統(tǒng)總共設(shè)置了InitList( )、Menu( )、Quit( )、Create( )、Add( )、Find( )、Alter( )、Delete( )、List( )、nv( )、ti( )、main( )十二個模塊;其中除去課題中要求的模塊還有InitList( )模塊,是用來定義順序表的。同時我還定義了我自己的數(shù)據(jù)結(jié)構(gòu)所需要的內(nèi)存量length用來返回表中的數(shù)據(jù)數(shù)量,方便了各大模塊的遍歷。

本系統(tǒng)還可以添加更多的模塊來使現(xiàn)在所擁有的模塊變得更簡潔運行速度更快,比如定義一個查找模塊,使得原來的查找模塊與刪除模塊、修改模塊共用查找代碼,讓原來的查找模塊、刪除模塊、修改模塊變得更加簡潔;

本系統(tǒng)其實還有很多可以優(yōu)化的地方,各個模塊的代碼可以進行大幅度的縮減,有些模塊也并未達到我理想的最佳效果,不過本次課設(shè)讓我學到了很多,讓我對順序表的認知變多,也接觸到了以前并未接觸到的函數(shù),總體來說我對我的第一個系統(tǒng)還是比較滿意的。

四、參考文獻

[1]譚浩強。C語言程序設(shè)計.北京:清華大學出版社,1997.文章來源地址http://www.zghlxwxcb.cn/news/detail-783833.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)課設(shè)—C語言實現(xiàn)通訊錄管理系統(tǒng)(順序表實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【(數(shù)據(jù)結(jié)構(gòu)) —— 順序表的應(yīng)用-通訊錄的實現(xiàn)】

    【(數(shù)據(jù)結(jié)構(gòu)) —— 順序表的應(yīng)用-通訊錄的實現(xiàn)】

    C語言基礎(chǔ)要求:結(jié)構(gòu)體、動態(tài)內(nèi)存管理、順序表、文件件操作 (1). 功能要求 1)至少能夠存儲100個人的通訊信息 2)能夠保存用戶信息:名字、性別、年齡、電話、地址等 3)增加聯(lián)系人信息 4)刪除指定聯(lián)系人 5)查找制定聯(lián)系人 6)修改指定聯(lián)系人 7)顯示聯(lián)系人信息 (2).重

    2024年02月08日
    瀏覽(93)
  • 【數(shù)據(jù)結(jié)構(gòu)】:順序表及其通訊錄應(yīng)用

    【數(shù)據(jù)結(jié)構(gòu)】:順序表及其通訊錄應(yīng)用

    1.1為什么會存在數(shù)據(jù)結(jié)構(gòu)? 我們常常接觸到諸如生活中的姓名、身份證、網(wǎng)頁內(nèi)的圖片、視頻等各種各樣的信息,這些信息就是我們常說的數(shù)據(jù)。在使用這些數(shù)據(jù)時,我們發(fā)現(xiàn)隨著數(shù)據(jù)的增加,當我們要單獨尋找某一個數(shù)據(jù)時就會非常困難,就像圖書館內(nèi)書籍如果沒有按一定

    2024年04月26日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)--學生通訊錄管理系統(tǒng)

    數(shù)據(jù)結(jié)構(gòu)--學生通訊錄管理系統(tǒng)

    文章目錄 一、問題描述 二、系統(tǒng)功能設(shè)計 三、各個代碼部分 四、整體代碼及其運行 五、總結(jié) 學生通訊錄管理系統(tǒng)--C語言實現(xiàn) 在現(xiàn)實中,用學號和姓名來記錄學生需要花費大量的紙質(zhì)材料,并且出現(xiàn)容易丟失、查找困難等問題。 “學生通訊管理系統(tǒng)”是為了幫助老師、同

    2024年02月11日
    瀏覽(98)
  • 數(shù)據(jù)結(jié)構(gòu)(初階):順序表實戰(zhàn)通訊錄

    數(shù)據(jù)結(jié)構(gòu)(初階)第一節(jié):數(shù)據(jù)結(jié)構(gòu)概論-CSDN博客 數(shù)據(jù)結(jié)構(gòu)(初階)第二節(jié):順序表-CSDN博客 ????????本文將以C語言和順序表實現(xiàn)通訊錄基礎(chǔ)管理,實現(xiàn)功能包括增、刪、改、查等,在實現(xiàn)相關(guān)功能時需要用到在第二節(jié)中順序表的相關(guān)內(nèi)容,需要友友們掌握順序表的相關(guān)

    2024年04月16日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)之使用順序表寫出通訊錄

    數(shù)據(jù)結(jié)構(gòu)之使用順序表寫出通訊錄

    昨天我們踏入了數(shù)據(jù)結(jié)構(gòu)的深山,并且和順序表battle了一番,雖說最后贏了,但同時也留下了一個問題: 如何從順序表的增刪查改加強到通訊錄的的增刪查改 ,別急,今天就帶你一探究竟。 我們昨天實現(xiàn)了順序表的頭刪,頭插,尾刪尾插,選擇插入,選擇刪除,以及初始化

    2024年01月23日
    瀏覽(27)
  • python數(shù)據(jù)結(jié)構(gòu)實驗設(shè)計(單鏈表):通訊錄管理

    python數(shù)據(jù)結(jié)構(gòu)實驗設(shè)計(單鏈表):通訊錄管理

    目錄 摘要 一、課程設(shè)計目的及內(nèi)容 創(chuàng)新功能: 二、算法及設(shè)計過程分析 1.總流程 2.主界面 3.文件處理與生成單鏈表 4.查看所有聯(lián)系人信息 5.查看人數(shù) 6.查找聯(lián)系人(以姓名或號碼為依據(jù)) 7.對姓名或號碼輸入進行模糊查找 ?8.添加聯(lián)系人 9.刪除聯(lián)系人? 10.合并兩個通

    2024年01月16日
    瀏覽(21)
  • C語言實現(xiàn)建立手機通訊錄(順序結(jié)構(gòu))

    C語言實現(xiàn)建立手機通訊錄(順序結(jié)構(gòu))

    今天來和大家分享一個簡易通訊錄(C語言實現(xiàn)) 首先要介紹一下通訊錄的基本功能 添加聯(lián)系人信息 刪除指定聯(lián)系人信息 查找指定聯(lián)系人信息 修改指定聯(lián)系人信息 顯示所有聯(lián)系人信息 總結(jié),考慮到數(shù)據(jù)結(jié)構(gòu)中的順序表和單鏈表,我們可以采用這兩種結(jié)構(gòu)來實現(xiàn)。本文選擇

    2024年02月07日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)課設(shè)(C語言)——校園導(dǎo)航系統(tǒng)

    數(shù)據(jù)結(jié)構(gòu)課設(shè)(C語言)——校園導(dǎo)航系統(tǒng)

    校園導(dǎo)航系統(tǒng)不是很難,因為最短路徑已經(jīng)有了Dijkstra算法,這就可以直接用。 我們需要的只是往這個算法里面加參數(shù)還有對界面的創(chuàng)作,這些都很簡單。不過用算法還得需要了解算法,所以建議大家還是去理解一下這個算法的內(nèi)涵。實際運行可能和我的運行結(jié)果有出入,應(yīng)

    2024年02月02日
    瀏覽(24)
  • 內(nèi)部排序算法比較-數(shù)據(jù)結(jié)構(gòu)C語言課設(shè)

    名稱: 內(nèi)部排序算法比較 內(nèi)容: 在教科書中,各種內(nèi)部排序算法的時間復(fù)雜的分析結(jié)果只給出了算法執(zhí)行時間的階,或大概執(zhí)行時間。試通過隨機數(shù)據(jù)比較各種算法的比較次數(shù)和移動次數(shù),以取得直觀感受。 任務(wù): (1)對以下7中常會用的內(nèi)部排序算法進行比較

    2024年02月12日
    瀏覽(22)
  • C語言數(shù)據(jù)結(jié)構(gòu)課設(shè):矩陣的運算(轉(zhuǎn)置.求和.求差.矩陣相乘.求逆.數(shù)乘),文件讀取矩陣

    ? #include stdio.h #include string.h #includestdlib.h #includemath.h // 定義一個結(jié)構(gòu)體類型,表示一個矩陣 typedef struct matrix { ? ? int nrow; // 矩陣的行數(shù) ? ? int ncol; // 矩陣的列數(shù) ? ? double data[10][10]; // 矩陣的數(shù)據(jù),最大為 10 x 10 } matrix; // 定義一個函數(shù),用于顯示一個矩陣的內(nèi)容? void dis

    2024年03月27日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包