项目名称:学生通讯录管理系统
功能:添加,删除,修改,打印通讯录
采用结构:链表
#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");
}
}
该程序只是一个简单的初步程序,仅仅具备部分基本功能。