欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

大一c語言程序設(shè)計——電話簿管理-創(chuàng)新互聯(lián)

題目要求

電話簿管理
設(shè)計一個學(xué)生通信錄,學(xué)生通迅錄數(shù)據(jù)信息構(gòu)成內(nèi)容可自行設(shè)計(如:姓名、家庭地址、郵政編碼、電話號碼等等)。該學(xué)生通信錄電管理程序具有加入、刪除、顯示和查詢等功能。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),饒陽企業(yè)網(wǎng)站建設(shè),饒陽品牌網(wǎng)站建設(shè),網(wǎng)站定制,饒陽網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,饒陽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
  1. 能建立、修改和增刪學(xué)生通訊錄;
  2. 具有群組工能,可以增加群組和記錄;
  3. 刪除可以刪除一條、一個群組、全部記錄;
  4. 查詢包含模糊查詢;
  5. 顯示可以以頁面和列表方式顯示;
  6. 有自動排序的功能;
  7. 界面友好,易于操作,采用文件存儲數(shù)據(jù)。
代碼實(shí)現(xiàn) 頭文件 fun.h
//頭文件的包含
#include#include#include//宏定義

//學(xué)生信息結(jié)構(gòu)的定義
typedef struct student
{int num;//以學(xué)號排序
	char logo[20];//群組分類功能——標(biāo)簽
	char name[20];
	char address[50];
	int PostalCode;
	char PhoneCode[12];
	struct student* next;
}STU;

//函數(shù)的聲明

//創(chuàng)建學(xué)生信息鏈表
STU* create();

//添加學(xué)生的信息
STU* append(STU* head, STU* new);

//修改學(xué)生的信息
STU* modify(STU* head, char name[]);

//刪除一條、一個群組、全部記錄
STU* delete(STU* head, int choice);

//對數(shù)據(jù)進(jìn)行保存
void save(FILE* fp, STU* head);

//查找
void find(STU* head, int choice);

//顯示通訊錄信息
void output(STU* head);
fun.c
#define _CRT_SECURE_NO_WARNINGS
#include"fun.h"

STU* create()
{STU* head = NULL;//頭指針——NULL表示表為空
	STU* p;//用來創(chuàng)建結(jié)點(diǎn)的
	while (1)
	{//對創(chuàng)建一個學(xué)生的結(jié)點(diǎn)動態(tài)分配空間
		if ((p = (STU*)malloc(sizeof(STU))) == NULL)
		{	printf("No space available.Create failed.\n");
			exit(1);
		}
		printf("請輸入一位學(xué)生的學(xué)號(輸入0退出):");
		scanf("%d", &p->num);
		if (p->num == 0)
		{	break;
		}
		printf("該學(xué)生分組為:");
		scanf("%s", p->logo);
		printf("姓名為:");
		scanf("%s", p->name);
		printf("家庭地址為:");
		scanf("%s", p->address);
		printf("郵政編號為:");
		scanf("%d", &p->PostalCode);
		printf("電話號碼為:");
		scanf("%s", p->PhoneCode);
		head = append(head, p);   //創(chuàng)建一個學(xué)生的結(jié)點(diǎn)后,以學(xué)號為標(biāo)準(zhǔn)進(jìn)行插入,從而實(shí)現(xiàn)排序功能
	}
	return head;
}
STU* append(STU* head, STU* new)
{STU* p = head, *q=NULL;
	if (head == NULL)//原表為空
	{new->next = NULL;
		return new;
	}
	else
	{//查找關(guān)鍵結(jié)點(diǎn)
		while (p->num< new->num)//學(xué)號從小到大排序
		{	q = p;
			p = p->next;
			if (p == NULL)
			{		break;
			}
		}
		//把新結(jié)點(diǎn)插到表頭前
		if (p == head)
		{	new->next = head;
			return new;
		}
		//把新結(jié)點(diǎn)插入表尾
		else if (p == NULL)
		{	q->next = new;
			new->next = NULL;
		}
		//從中間插入新結(jié)點(diǎn)
		else
		{	q->next = new;
			new->next = p;
		}
	}
	return head;
}

//修改學(xué)生的信息
STU* modify(STU* head, char name[])
{STU* p = head;
	while (strcmp(p->name, name) != 0)//尋找該學(xué)生
	{p = p->next;
		if (p == NULL)
			break;
	}
	if (p == NULL)
	{printf("要修改的學(xué)生不存在!\n");
	}
	else
	{while (1)
		{	int choice;
			printf("要修改信息:1.組別 2.學(xué)號 3.電話 4.郵政編號 5.家庭地址\n");
			printf("請選擇要修改的操作,輸入0退出修改:\n");
			scanf("%d", &choice);
			switch (choice)
			{	case 1:
				printf("修改成:");
				scanf("%s", p->logo);
				break;
			case 2:
				printf("修改成:");
				scanf("%d", &p->num);
				break;
			case 3:
				printf("修改成:");
				scanf("%s", p->PhoneCode);
				break;
			case 4:
				printf("修改成:");
				scanf("%d", &p->PostalCode);
				break;
			case 5:
				printf("修改成:");
				scanf("%s", p->address);
				break;
			case 0:
				return head;
			default:
				printf("輸入數(shù)據(jù)非法,請重新輸入\n");
			}
		}
	}
}

//刪除一條、一個群組、全部記錄
STU* delete(STU* head, int choice)
{STU* p = head, * q = NULL;
	if (choice == 1)
	{char name[20];
		printf("請輸入要刪除學(xué)生的姓名:");
		scanf("%s", name);
		while (strcmp(p->name, name) != 0)//尋找該學(xué)生
		{	q = p;
			p = p->next;
			if (p == NULL)
				break;
		}
		if (p == NULL)
		{	printf("要刪除的學(xué)生不存在!\n");
		}
		//要刪除的學(xué)生是表頭
		else if (p == head)
		{	head = head->next;
			free(p);
			p = NULL;
		}
		else
		{	q->next = p->next;
			free(p);
			p = NULL;
		}
	}
	else if (choice == 2)
	{p = head->next;
		char logo[20];
		printf("請輸入要刪除的群組名:");
		scanf("%s", logo);
		while (p != NULL)//遍歷除了表頭的整個通訊錄
		{	//找到組別為要刪除的群組名就執(zhí)行
			if (strcmp(p->logo, logo) == 0)
			{		q = p;
				p = p->next;
				free(q);
				q = p;
				p = p->next;
			}
			else
			{		q = p;
				p = p->next;
			}
		}
		if (strcmp(head->logo, logo) == 0)//對表頭進(jìn)行判斷
		{	free(head);
			head = NULL;
		}
	}
	else if (choice == 3)
	{while (head != NULL)
		{	q = head->next;
			free(head);
			head = q;
		}
		head = NULL;
	}
	else
	{printf("輸入數(shù)據(jù)錯誤,無法實(shí)現(xiàn)刪除操作\n");
	}
	return head;
}

//數(shù)據(jù)保存
void save(FILE* fp, STU* head)
{//以寫的方式打開文件
	if ((fp = fopen("student_contract.txt", "w")) == NULL)
	{printf("打開文件錯誤!\n");
		return;
	}
	//對數(shù)據(jù)保存
	STU* p = head;
	fprintf(fp,"組別\t學(xué)號\t姓名\t電話號碼\t\t郵政編碼\t家庭住址\n");
	while (p != NULL)
	{fprintf(fp,"%s\t%d\t%s\t%s\t%d\t\t%s\n", p->logo, p->num, p->name, p->PhoneCode, p->PostalCode, p->address);
		p = p->next;
	}
	fclose(fp);
}

//查找

//模糊查找子函數(shù)實(shí)現(xiàn)
int is_have_same_key(char input[],char name[])
{char* p = input, * q = name;
	while (*p != '\0')//從輸入的名字的第一個漢字開始遍歷整個名字
	{q = name;//確保每次遍歷名字的指針從頭開始
		while (*q != '\0')
		{	if (*p == *q)
			{		return 1;//但凡找到有和輸入名字相同的關(guān)鍵字,返回值1,查找成功
			}
			q++;
		}
		p++;
	}
	return 0;//沒有找到,返回值0,查找失敗
}

void find(STU* head, int choice)
{if (choice == 1)//精準(zhǔn)查找
	{STU* p = head;
		char name[20];
		printf("請輸入查找的學(xué)生的確切名字:");
		scanf("%s", name);
		while (p != NULL)
		{	if ((strcmp(p->name, name)) == 0)
			{		printf("找到了,詳細(xì)信息如下\n");
				printf("\n組別:%s\n", p->logo);
				printf("學(xué)號:%d\n", p->num);
				printf("姓名:%s\n", p->name);
				printf("電話號碼:%s\n", p->PhoneCode);
				printf("郵政編碼:%d\n", p->PostalCode);
				printf("家庭住址:%s\n", p->address);
				break;
			}
			p = p->next;
		}
		if (p == NULL)
		{	printf("很抱歉,該學(xué)生的信息不存在\n");
			return;
		}
	}
	else if (choice == 2)//模糊查找
	{STU* p = head, * q = NULL;
		char name[20];
		int i = 0;
		printf("請輸入所知名字信息:");
		scanf("%s", name);
		//遍歷整個鏈表
		while (p != NULL)
		{	if (is_have_same_key(name, p->name))
			{		printf("\n(模糊查詢)學(xué)生%d信息\n", ++i);
				printf("\n組別:%s\n", p->logo);
				printf("學(xué)號:%d\n", p->num);
				printf("姓名:%s\n", p->name);
				printf("電話號碼:%s\n", p->PhoneCode);
				printf("郵政編碼:%d\n", p->PostalCode);
				printf("家庭住址:%s\n", p->address);
			}
			p = p->next;
		}
		if (i == 0)
		{	printf("很抱歉,該學(xué)生的信息不存在\n");
		}
	}
	else
		printf("輸入數(shù)據(jù)錯誤,該操作無法實(shí)行\(zhòng)n");
}


//顯示通訊錄信息
void output(STU* head)
{if (head == NULL)
	{printf("沒有信息,請創(chuàng)建并輸入信息吧!\n");
		return;
	}
	int choice;
	STU* p = head;
	char logo[20];//用來輸出特定的組別的
	int juge = 0;//用來判斷特定組別是否信息
	while (1)
	{printf("1.以列表的形式顯示。2.以頁面的形式顯示。3.顯示特定群組。0.退出顯示。\n");
		printf("請選擇:");
		scanf("%d", &choice);
		p = head;
		switch (choice)
		{case 1:
			printf("組別\t學(xué)號\t姓名\t電話號碼\t郵政編碼\t家庭住址\n");
			while (p != NULL)
			{		printf("%s\t%d\t%s\t%s\t%d\t\t%s\n", p->logo, p->num, p->name, p->PhoneCode, p->PostalCode, p->address);
				p = p->next;
			}
			break;
		case 2:
			while (p != NULL)
			{		printf("\n組別:%s\n", p->logo);
				printf("學(xué)號:%d\n", p->num);
				printf("姓名:%s\n", p->name);
				printf("電話號碼:%s\n", p->PhoneCode);
				printf("郵政編碼:%d\n", p->PostalCode);
				printf("家庭住址:%s\n", p->address);
				p = p->next;
			}
			break;
		case 3:
			printf("請輸入想要輸入的組別:");
			scanf("%s", logo);
			printf("組別\t學(xué)號\t姓名\t電話號碼\t\t郵政編碼\t家庭住址\n");
			while (p != NULL)
			{		if ((strcmp(logo, p->logo)) == 0)
				{printf("%s\t%d\t%s\t%s\t%d\t%s\n", p->logo, p->num, p->name, p->PhoneCode, p->PostalCode, p->address);
					juge = 1;
				}
				p = p->next;
			}
			if (juge == 0)
			{		printf("不存在該組別\n");
			}
			break;
		case 0:
			return;
		default:
			printf("輸入數(shù)據(jù)違法,請重新輸入。\n");
			break;
		}
	}
}
text.c
#define _CRT_SECURE_NO_WARNINGS 
#include "fun.h"

void menu()
{printf("******************************\n");
	printf("*****    電話簿管理系統(tǒng)    ***\n");
	printf("************0.退出************\n");
	printf("************1.創(chuàng)建************\n");
	printf("************2.增加************\n");
	printf("************3.修改************\n");
	printf("************4.刪除************\n");
	printf("************5.保存************\n");
	printf("************6.查看************\n");
	printf("************7.找人************\n");
	printf("*****    電話簿管理系統(tǒng)    ***\n");
	printf("******************************\n");
}
int main()
{STU* head = NULL,*p;
	char name[20];
	FILE* fp=NULL;
	int choice;//操作選擇
	while (1)
	{menu();
		printf("請輸入要進(jìn)行的操作(0~5):");
		scanf("%d", &choice);
		switch (choice)
		{case 0:
			goto end;
			break;
		case 1:
			head=create();
			break;
		case 2://添加學(xué)生信息——建立通訊錄
			//對創(chuàng)建一個學(xué)生的結(jié)點(diǎn)動態(tài)分配空間
			if ((p = (STU*)malloc(sizeof(STU))) == NULL)
			{		printf("No space available.Create failed.Please select again.\n");
			}
			else
			{		printf("請輸入新學(xué)生的學(xué)號:");
				scanf("%d", &p->num);
				printf("該學(xué)生分組為:");
				scanf("%s", p->logo);
				printf("姓名為:");
				scanf("%s", p->name);
				printf("家庭地址為:");
				scanf("%s", p->address);
				printf("郵政編號為:");
				scanf("%d", &p->PostalCode);
				printf("電話號碼為:");
				scanf("%s", p->PhoneCode);
				head = append(head, p);
			}
			break;
		case 3://修改學(xué)生中的信息
			printf("請輸入要修改信息學(xué)生的名字:");
			scanf("%s", name);
			head=modify(head,name);
			break;
		case 4://刪除一條、一個群組、全部記錄
			printf("1.刪除一條記錄 2.刪除一個群組記錄 3.刪除全部記錄\n");
			printf("請選擇刪除操作:");
			scanf("%d", &choice);
			head=delete(head,choice);
			break;
		case 5://對數(shù)據(jù)進(jìn)行保存
			save(fp,head);
			break;
		case 6://多種形式的顯示
			output(head);
			break;
		case 7://查找——精準(zhǔn)查找和模糊查找
			printf("1.精準(zhǔn)查找 2.模糊查找\n");
			printf("請選擇:");
			scanf("%d", &choice);
			find(head,choice);
			break;
		default:
			printf("輸入數(shù)據(jù)非法,請重新輸入\n");
			break;
		}
	}
end:
	//釋放動態(tài)內(nèi)存空間
	{STU* q=NULL;
		while (head != NULL)
		{	q = head->next;
			free(head);
			head = q;
		}
		head = NULL;
	}
	return 0;
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章標(biāo)題:大一c語言程序設(shè)計——電話簿管理-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://chinadenli.net/article6/cepgig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、定制網(wǎng)站品牌網(wǎng)站設(shè)計、移動網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
人妻一区二区三区多毛女| 亚洲国产精品肉丝袜久久| 97人摸人人澡人人人超碰| 欧美精品中文字幕亚洲| 色哟哟精品一区二区三区| 国产欧美日本在线播放| 久久精品国产亚洲av久按摩| 日本丁香婷婷欧美激情| 免费久久一级欧美特大黄孕妇| 日本精品中文字幕人妻| 午夜亚洲少妇福利诱惑| 区一区二区三中文字幕| 国产一区二区三区丝袜不卡| 精品欧美一区二区三久久| 欧美野外在线刺激在线观看| 色婷婷激情五月天丁香| 亚洲高清欧美中文字幕| 亚洲二区欧美一区二区| 亚洲欧美日本成人在线| 老司机激情五月天在线不卡| 亚洲一区在线观看蜜桃| 成年男女午夜久久久精品| 亚洲香艳网久久五月婷婷| 中文文精品字幕一区二区| 人妻内射精品一区二区| 九九热国产这里只有精品| 午夜福利视频日本一区| 国产内射一级二级三级| 九九九热视频最新在线| 成年午夜在线免费视频| 99视频精品免费视频| 91亚洲人人在字幕国产| 色一情一乱一区二区三区码| 99久久婷婷国产亚洲综合精品| 亚洲熟妇中文字幕五十路| 大香蕉再在线大香蕉再在线| 国产精品国产亚洲区久久| 视频一区日韩经典中文字幕| 亚洲国产婷婷六月丁香| 国产内射在线激情一区| 日韩黄色大片免费在线|