课程设计:建立一个通讯录管理,功能还是不能完全实现,希望看到的人多多指导一下。。。
主要功能:
(1)能建立、修改和增删学生通讯录
(2)能够按多种方式进行查询。例如:输入姓名可以查询其本人的电话号码等内容。
经过修改,功能还是不能完全实现,希望看到的人多多指导一下。。。
程序如下
#include <iostream.h>
#include <string.h>
struct Student
{
char name[10];//姓名
char id[10];//学号
char phone[12];//电话
char address[20];//地址
char email[50];//邮箱
Student *next;
};
class List
{
Student *head,*tail;
public:
List(); //构造函数
~List();//析构函数
void Creat(char *name,char *id,char *phone,char *address,char *email);//建立
void Delete(char *name); //删除
void Change(char *name); //修改
void FindName(char *name);//按姓名查找
void FindId(char *id);//按学号查找
};
List::List()
{
head=tail=NULL;
}
List::~List()
{
Student *p;
if(head)
{
p=head;
head=head->next;
delete p;
}
}
void List::Creat(char *name,char *id,char *phone,char *address,char *email)//建立
{
Student *p=new Student;
strcpy(p->name,name);
strcpy(p->id,id);
strcpy(p->phone,phone);
strcpy(p->address,address);
strcpy(p->email,email);
p->next=NULL;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
}
void List::Delete(char *name)//删除
{
Student *p=head,*q;
int flag=0;
while (p)
{
if(strcmp(p->name,name)==0)
{
if(p==head)
head=p->next;
else
q->next=p->next;
delete p;
flag=1;
break;
}
q=p;
p=p->next;
}
if(flag==0)
cout<<"通讯录不包含这个人"<<endl;
}
void List::Change(char *name)//修改通讯录信息
{
Student *p=head;
int flag=0;
while (p)
{
if(strcmp(p->name,name)==0)
{
char id[10];//学号
char phone[12];//电话
char address[20];//地址
char email[50];//邮箱
cout<<"输入要修改的姓名:";
cin>>name;
strcpy(p->name,name);
cout<<"输入要修改的学号:";
cin>>id;
strcpy(p->id,id);
cout<<"输入要修改的电话号码:";
cin>>phone;
strcpy(p->phone,phone);
cout<<"输入要修改的地址:";
cin>>address;
strcpy(p->address,address);
cout<<"输入要修改的邮箱:";
cin>>email;
strcpy(p->email,email);
flag=1;
}
p=p->next;
}
if(flag==0)
cout<<"此人信息不存在!"<<endl;
}
void List::FindName(char *name)
{
Student *p=head;
int flag=0;
while (p)
{
if(strcmp(p->name,name)==0)
{
cout<<"输出这个学生的号码:"<<p->phone<<endl;
flag=1;
}
p=p->next;
}
if(flag==0)
cout<<"此人信息不存在!"<<endl;
}
void List::FindId(char *id)
{
Student *p=head;
int flag=0;
while (p)
{
if(strcmp(p->id,id)==0)
{
cout<<"输出这个学生的号码:"<<p->phone<<endl;
flag=1;
}
p=p->next;
}
if(flag==0)
cout<<"此人信息不存在!"<<endl;
}
int main()
{
cout<<" *****************【菜单】**************"<<endl;
cout<<" ************1.建立学生通讯录***********"<<endl;
cout<<" ************2.修改学生通讯录***********"<<endl;
cout<<" ************3.增加学生通讯录***********"<<endl;
cout<<" ************4.删除学生通讯录***********"<<endl;
cout<<" ************5.查询学生通讯录***********"<<endl;
cout<<" ************6.结束操作*****************"<<endl;
cout<<" ***************************************"<<endl<<endl;
int flag=1; //flag判断是否结束
int n; //n表示要输入的操作步骤
char name[10],id[10],phone[12],address[20],email[20];
List TXL;
while (flag)
{
cout<<"输入菜单中的操作步骤:";
cin>>n;
switch(n)
{
case 1:
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入学号:"<<endl;
cin>>id;
cout<<"请输入电话号码:"<<endl;
cin>>phone;
cout<<"请输入地址:"<<endl;
cin>>address;
cout<<"请输入邮箱:"<<endl;
cin>>email;
TXL.Creat(name,id,phone,address,email);
break;
case 2:
cout<<"输入要修改的学生的名字:";
cin>>name;
TXL.Change(name);
break;
case 3:
cout<<"输入该学生的姓名、学号、号码:";
cin>>name>>id>>phone;
TXL.Creat(name,id,phone,address,email);
break;
case 4:
cout<<"输入要删除的学生的姓名:";
cin>>name;
TXL.Delete(name);
break;
case 5:
cout<<" ********查找方式*******"<<endl;
cout<<" *****1、按名字查找*****"<<endl;
cout<<" *****2、按学号查找*****"<<endl;
cout<<"输入查找方式的步骤:";
int x;
cin>>x;
if(x==1)
{
cout<<"输入姓名:";
cin>>name;
TXL.FindName(name);
}
else if(x==2)
{
cout<<"输入学号:";
cin>>id;
TXL.FindId(id);
}
break;
case 6:
flag=0;break;
default:
cout<<"该操作步骤不存在!"<<endl;break;
}
}
return 0;
}