user-0 提问: VC++6.0设计通讯录管理系统

回复:
user: user-0
content: 引用 2 楼 user-2的回复:闲来无事，写了个，供参考  #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 1024  typedef struct Tongxulu { 	char name[20]; 	char addr[50]; 	char phone[15]; }TXL;  /* 菜单 */ void Menu(); /* 保存 */ void SaveTXL(TXL *arr, int n); /* 新建 */ void CreateTXL(TXL *arr); /* 浏览 */ void PrintTXL(); /* 查询 */ void FindTXL(); /* 修改 */ void ModifyTXL();  int len = 0;   int main() { 	int choice = -1; 	TXL arr[N]; 	  	while (1) 	{ 		system("cls"); 		Menu(); 		scanf("%d", &choice); 		switch (choice) 		{ 			case 1: 				CreateTXL(arr); 				break; 			case 2: 				ModifyTXL(); 				break; 			case 3: 				FindTXL(); 				break; 			case 4: 				PrintTXL(); 				break; 			case 0: 				exit(0); 				break; 			default: 				printf("\n输入0-4之间的整数："); 				break; 		}  	} 	 	getchar(); 	return 0; }  /* 菜单 */ void Menu() { 	printf("\n----------- 通讯录 ----------\n"); 	printf("            1. 新建 \n"); 	printf("            2. 修改 \n"); 	printf("            3. 查询 \n"); 	printf("            4. 浏览 \n");	 	printf("            0. 退出 \n"); 	printf("-----------------------------\n\n"); 	printf("选择菜单项(0-4): "); }  /* 新建 */ void CreateTXL(TXL *arr) { 	int i; 	char ch; 	printf("\n输入班级人数："); 	scanf("%d", &len); 	getchar(); 	for (i=0; i<len; i++) 	{ 		printf("\n输入第%d个学生的姓名 家族住址 电话：\n", i+1); 		scanf("%s%s%s", arr[i].name, arr[i].addr, arr[i].phone); 	} 	getchar(); 	printf("\n新建通讯录完毕，要保存吗(y/n): "); 	scanf("%c", &ch); 	if ('y' == ch || 'Y' == ch) 	{ 		SaveTXL(arr, len); 	} 	else 	{ 		printf("提示：通讯录未保存！\n"); 	} }  /* 保存 */ void SaveTXL(TXL *arr, int n) { 	int i; 	FILE *fp; 	if ((fp = fopen("./temp/txl.txt", "w")) == NULL) 	{ 		printf("保存通讯录失败！\n"); 		exit(1); 	}  	for (i=0; i<n; i++) 	{ 		fprintf(fp, "%s %s %s\n", arr[i].name, arr[i].addr, arr[i].phone); 	} 	printf("通讯录保存完毕！\n"); 	fclose(fp); }  /* 浏览 */ void PrintTXL() { 	int i = 0; 	TXL stu; 	FILE *fp; 	fp = fopen("./temp/txl.txt","r"); 	if (!fp) 	{ 		printf("文件不存在！\n"); 		exit(1); 	}  	 	fscanf(fp, "%s%s%s", stu.name, stu.addr, stu.phone); 	 	printf("\n--------------- 通讯录 --------------\n\n"); 	printf("%s\t%s\t%s\n", "姓名", "家庭住址", "联系方式"); 	printf("\n-------------------------------------\n\n"); 	while(!feof(fp)) 	{ 		printf("%s\t%s\t\t%s\n", stu.name, stu.addr, stu.phone); 		fscanf(fp, "%s%s%s", stu.name, stu.addr, stu.phone);		 	} 	 	fclose(fp); 	getchar(); 	getchar(); }  /* 查询 */ void FindTXL() { 	char fphone[15], fname[20]; 	int i = 0, choice = -1, j; 	TXL s[N]; 	FILE *fp; 	fp = fopen("./temp/txl.txt","r"); 	if (!fp) 	{ 		printf("文件不存在！\n"); 		exit(1); 	}	 	while(!feof(fp)) 	{	 		fscanf(fp, "%s%s%s", s[i].name, s[i].addr, s[i].phone); 		i++;		 	}  	while (1) 	{ 		system("cls"); 		printf("\n------------ 通讯录-查询 ------------\n"); 		printf("             1. 按姓名查找\n"); 		printf("             2. 按电话查找\n"); 		printf("             0. 返回\n\n"); 		printf("输入菜单选项："); 		scanf("%d", &choice); 		switch (choice) 		{ 			case 1:				 				printf("\n输入要查找的学生姓名："); 				scanf("%s", fname); 				for (j=0; j<i; j++) 				{ 					if (strcmp(fname, s[j].name) == 0) 					{ 						printf("\n------------ 通讯录-查询结果 ------------\n"); 						printf("%s\t%s\t%s\n", "姓名", "家族住址", "联系方式"); 						printf("\n%s\t%s\t\t%s\n", s[j].name, s[j].addr, s[j].phone); 						getchar(); 						break; 					}					 				} 				printf("姓名为%s的学生未找到！\n", fname); 				getchar(); 				getchar(); 				break; 			case 2:				 				printf("\n输入要查找的学生电话："); 				scanf("%s", fphone); 				for (j=0; j<i; j++) 				{ 					if (strcmp(fphone, s[j].phone) == 0) 					{ 						printf("\n------------ 通讯录-查询结果 ------------\n"); 						printf("%s\t%s\t%s\n", "姓名", "家族住址", "联系方式"); 						printf("\n%s\t%s\t\t%s\n", s[j].name, s[j].addr, s[j].phone); 						getchar(); 						break;						 					}					 				} 				printf("电话为%s的学生未找到！\n", fphone); 				getchar(); 				getchar(); 				break; 			case 0: 				return; 				break; 			default: 				printf("\n输入0-2之间的整数："); 				break; 		} 	} 	 	fclose(fp); }  /* 修改 */ void ModifyTXL() { 	char mphone[15], mname[20], maddr[50]; 	int i = 0, j; 	TXL s[N]; 	FILE *fp; 	fp = fopen("./temp/txl.txt","r"); 	if (!fp) 	{ 		printf("文件不存在！\n"); 		exit(1); 	}	 	while(!feof(fp)) 	{	 		fscanf(fp, "%s%s%s", s[i].name, s[i].addr, s[i].phone); 		i++;		 	} 	printf("\n\n 学生人数 = %d\n\n", i-1);  	printf("要修改第几个学生的信息？\n"); 	scanf("%d", &j); 	if (j <= 0 || j > i) 	{ 		printf("错误：超出范围！\n"); 		getchar(); 		return; 	} 	else 	{ 		printf("输入要修改的信息：姓名 住址 电话：\n"); 		scanf("%s%s%s", s[j-1].name, s[j-1].addr, s[j-1].phone);		  		getchar(); 		printf("修改完成，正在保存......\n"); 		getchar(); 		SaveTXL(s, i-1); 		getchar(); 		return; 	} }  用不了哇。。。

user: user-0
content: 厉害👍，多谢兄弟

user: user-0
content: 引用 1 楼 Simple-Soft的回复:用c的话，打开文件用fopen,读用fread，写用fwrite，如果用c++的话，文件操作可以用fstream来操作文件 不懂😂，c语言白痴一枚

user: user-1
content: 用c的话，打开文件用fopen,读用fread，写用fwrite，如果用c++的话，文件操作可以用fstream来操作文件

user: user-2
content: 闲来无事，写了个，供参考  #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 1024  typedef struct Tongxulu { 	char name[20]; 	char addr[50]; 	char phone[15]; }TXL;  /* 菜单 */ void Menu(); /* 保存 */ void SaveTXL(TXL *arr, int n); /* 新建 */ void CreateTXL(TXL *arr); /* 浏览 */ void PrintTXL(); /* 查询 */ void FindTXL(); /* 修改 */ void ModifyTXL();  int len = 0;   int main() { 	int choice = -1; 	TXL arr[N]; 	  	while (1) 	{ 		system("cls"); 		Menu(); 		scanf("%d", &choice); 		switch (choice) 		{ 			case 1: 				CreateTXL(arr); 				break; 			case 2: 				ModifyTXL(); 				break; 			case 3: 				FindTXL(); 				break; 			case 4: 				PrintTXL(); 				break; 			case 0: 				exit(0); 				break; 			default: 				printf("\n输入0-4之间的整数："); 				break; 		}  	} 	 	getchar(); 	return 0; }  /* 菜单 */ void Menu() { 	printf("\n----------- 通讯录 ----------\n"); 	printf("            1. 新建 \n"); 	printf("            2. 修改 \n"); 	printf("            3. 查询 \n"); 	printf("            4. 浏览 \n");	 	printf("            0. 退出 \n"); 	printf("-----------------------------\n\n"); 	printf("选择菜单项(0-4): "); }  /* 新建 */ void CreateTXL(TXL *arr) { 	int i; 	char ch; 	printf("\n输入班级人数："); 	scanf("%d", &len); 	getchar(); 	for (i=0; i<len; i++) 	{ 		printf("\n输入第%d个学生的姓名 家族住址 电话：\n", i+1); 		scanf("%s%s%s", arr[i].name, arr[i].addr, arr[i].phone); 	} 	getchar(); 	printf("\n新建通讯录完毕，要保存吗(y/n): "); 	scanf("%c", &ch); 	if ('y' == ch || 'Y' == ch) 	{ 		SaveTXL(arr, len); 	} 	else 	{ 		printf("提示：通讯录未保存！\n"); 	} }  /* 保存 */ void SaveTXL(TXL *arr, int n) { 	int i; 	FILE *fp; 	if ((fp = fopen("./temp/txl.txt", "w")) == NULL) 	{ 		printf("保存通讯录失败！\n"); 		exit(1); 	}  	for (i=0; i<n; i++) 	{ 		fprintf(fp, "%s %s %s\n", arr[i].name, arr[i].addr, arr[i].phone); 	} 	printf("通讯录保存完毕！\n"); 	fclose(fp); }  /* 浏览 */ void PrintTXL() { 	int i = 0; 	TXL stu; 	FILE *fp; 	fp = fopen("./temp/txl.txt","r"); 	if (!fp) 	{ 		printf("文件不存在！\n"); 		exit(1); 	}  	 	fscanf(fp, "%s%s%s", stu.name, stu.addr, stu.phone); 	 	printf("\n--------------- 通讯录 --------------\n\n"); 	printf("%s\t%s\t%s\n", "姓名", "家庭住址", "联系方式"); 	printf("\n-------------------------------------\n\n"); 	while(!feof(fp)) 	{ 		printf("%s\t%s\t\t%s\n", stu.name, stu.addr, stu.phone); 		fscanf(fp, "%s%s%s", stu.name, stu.addr, stu.phone);		 	} 	 	fclose(fp); 	getchar(); 	getchar(); }  /* 查询 */ void FindTXL() { 	char fphone[15], fname[20]; 	int i = 0, choice = -1, j; 	TXL s[N]; 	FILE *fp; 	fp = fopen("./temp/txl.txt","r"); 	if (!fp) 	{ 		printf("文件不存在！\n"); 		exit(1); 	}	 	while(!feof(fp)) 	{	 		fscanf(fp, "%s%s%s", s[i].name, s[i].addr, s[i].phone); 		i++;		 	}  	while (1) 	{ 		system("cls"); 		printf("\n------------ 通讯录-查询 ------------\n"); 		printf("             1. 按姓名查找\n"); 		printf("             2. 按电话查找\n"); 		printf("             0. 返回\n\n"); 		printf("输入菜单选项："); 		scanf("%d", &choice); 		switch (choice) 		{ 			case 1:				 				printf("\n输入要查找的学生姓名："); 				scanf("%s", fname); 				for (j=0; j<i; j++) 				{ 					if (strcmp(fname, s[j].name) == 0) 					{ 						printf("\n------------ 通讯录-查询结果 ------------\n"); 						printf("%s\t%s\t%s\n", "姓名", "家族住址", "联系方式"); 						printf("\n%s\t%s\t\t%s\n", s[j].name, s[j].addr, s[j].phone); 						getchar(); 						break; 					}					 				} 				printf("姓名为%s的学生未找到！\n", fname); 				getchar(); 				getchar(); 				break; 			case 2:				 				printf("\n输入要查找的学生电话："); 				scanf("%s", fphone); 				for (j=0; j<i; j++) 				{ 					if (strcmp(fphone, s[j].phone) == 0) 					{ 						printf("\n------------ 通讯录-查询结果 ------------\n"); 						printf("%s\t%s\t%s\n", "姓名", "家族住址", "联系方式"); 						printf("\n%s\t%s\t\t%s\n", s[j].name, s[j].addr, s[j].phone); 						getchar(); 						break;						 					}					 				} 				printf("电话为%s的学生未找到！\n", fphone); 				getchar(); 				getchar(); 				break; 			case 0: 				return; 				break; 			default: 				printf("\n输入0-2之间的整数："); 				break; 		} 	} 	 	fclose(fp); }  /* 修改 */ void ModifyTXL() { 	char mphone[15], mname[20], maddr[50]; 	int i = 0, j; 	TXL s[N]; 	FILE *fp; 	fp = fopen("./temp/txl.txt","r"); 	if (!fp) 	{ 		printf("文件不存在！\n"); 		exit(1); 	}	 	while(!feof(fp)) 	{	 		fscanf(fp, "%s%s%s", s[i].name, s[i].addr, s[i].phone); 		i++;		 	} 	printf("\n\n 学生人数 = %d\n\n", i-1);  	printf("要修改第几个学生的信息？\n"); 	scanf("%d", &j); 	if (j <= 0 || j > i) 	{ 		printf("错误：超出范围！\n"); 		getchar(); 		return; 	} 	else 	{ 		printf("输入要修改的信息：姓名 住址 电话：\n"); 		scanf("%s%s%s", s[j-1].name, s[j-1].addr, s[j-1].phone);		  		getchar(); 		printf("修改完成，正在保存......\n"); 		getchar(); 		SaveTXL(s, i-1); 		getchar(); 		return; 	} }