C语言简单的学生通讯录管理系统,已调试完美运行

项目名称:学生通讯录管理系统

功能:添加,删除,修改,打印通讯录

采用结构:链表

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

typedef struct Student
{
    int no;
	char name[20];
	char tel[20];
	char group[20];
	struct Student *next; 
}Stu;
void createlist(Stu *head);
void add(Stu *head);
void del(Stu *hea);
void print(Stu *head);
void find(Stu *head);
void display(Stu *head);
void change(Stu *head);
void menu();

int main(){
 	menu();
 	Stu *head;
 	createlist(head);
    int a=0;
 	while(1){
 		scanf("%d",&a);
 		switch(a){
 		case 1:add(head);break;
 		case 2:find(head);break;
 		case 3:del(head);break;
 		case 4:change(head);break;
		case 5:display(head);break;
		case 6:exit(0);
 		}
		printf("请输入需要进行的操作:");	
 	}
	return 0;
}

void createlist(Stu *head){
	head=(Stu*)malloc(sizeof(Stu));
	if(!head){
		printf("头结点分配失败"); 
	}
	return;
}
void add(Stu *head){
	Stu *pfind=head;
	Stu *pnew=NULL;
	
	
	pnew=(Stu*)malloc(sizeof(Stu));
	printf("请输入编号:");scanf("%d",&pnew->no);
	printf("请输入姓名:");scanf("%s",pnew->name);
	printf("请输入电话:");scanf("%s",pnew->tel);
	printf("请输入分组:");scanf("%s",pnew->group);
	printf("\n");
    while(pfind->next!=NULL){
	pfind=pfind->next;
				}
	pnew->next=NULL;
	pfind->next=pnew;
//		for(pfind=head;pfind!=NULL;pfind=pfind->next){
//			if(pfind->no==pnew->no){
//				printf("编号重复,请重新输入编号:");
//				scanf("%d",&pnew->no); 
//			}
//		}
	printf("联系人添加成功\n"); 
}
void print(Stu *pfind){
		printf("编号:%d\n",pfind->no);
		printf("姓名:%s\n",pfind->name);
		printf("电话:%s\n",pfind->tel);
		printf("分组:%s\n",pfind->group);
}
void del(Stu *head){
	Stu *pfind1=head;
	Stu *pfind2=head->next;
	int a=0;
	printf("请输入需要删除联系人的编号:");
	scanf("%d",&a);
	while(pfind2!=NULL){
		if(pfind2->no==a){
			break;
		}
		else { 
		pfind1=pfind1->next;
		pfind2=pfind2->next;
		}
	} 
	if(pfind2==NULL){
				printf("你要删除的联系人不存在\n"); 
			}
			else{
				pfind1->next=pfind2->next;
			     free(pfind2);
			     pfind2=NULL;
			     printf("删除成功!\n"); 
			}
}
void display(Stu *head){
	Stu *pfind=head->next;
	while(pfind!=NULL){
				printf("编号:%d\n",pfind->no);
				printf("姓名:%s\n",pfind->name);
				printf("电话:%s\n",pfind->tel);
				printf("分组:%s\n",pfind->group);
				printf("\n");
		pfind=pfind->next;

	}
	
}
void menu(){
	printf("******欢迎使用通讯录******\n");
	printf("*******1.添加联系人*******\n");
	printf("*******2.查找联系人*******\n"); 
	printf("*******3.删除联系人*******\n");
	printf("*******4.修改联系人*******\n");
	printf("*******5.显示通讯录*******\n");
	printf("*******6.退出通讯录*******\n");
	printf("\n");
	printf("请选择您要进行的操作:");
	
}
void find(Stu *head){
	Stu *pfind=head;
	int a=0;
	printf("请输入需要查找的编号:");
	scanf("%d",&a);
	while(pfind!=NULL){
		if(pfind->no==a){
			print(pfind);
			break;
		}
		pfind=pfind->next;
	}
	if(pfind==NULL){
		printf("查无此联系人\n");
		 
	}
}
void change(Stu *head){
	Stu *pfind=head;
		int a=0;
		printf("请输入需要修改的编号:");
		scanf("%d",&a);
		while(pfind!=NULL){
			if(pfind->no==a){
					printf("请输入编号:");scanf("%d",&pfind->no);
					printf("请输入姓名:");scanf("%s",pfind->name);
					printf("请输入电话:");scanf("%s",pfind->tel);
					printf("请输入分组:");scanf("%s",pfind->group);
					printf("修改成功!\n"); 
				break;
			}
			pfind=pfind->next;
		}
		if(pfind==NULL){
			printf("查无此联系人!\n"); 
		}
		
}

 该程序只是一个简单的初步程序,仅仅具备部分基本功能。

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值