| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 790 人关注过本帖
标题:课程设计:建立一个通讯录管理,功能还是不能完全实现,希望看到的人多多指 ...
只看楼主 加入收藏
smallpin
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-5-27
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
课程设计:建立一个通讯录管理,功能还是不能完全实现,希望看到的人多多指导一下。。。


主要功能:

  (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;
}
搜索更多相关主题的帖子: 通讯录 课程 指导 管理 
2010-05-27 20:54
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:5 
什么功能没有实现呢?

南国利剑
2010-05-27 23:50
smallpin
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-5-27
收藏
得分:0 
回复 2楼 南国利剑
修改,查询。
2010-05-28 23:12
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:5 
为了测试我加了,显示所有人员信息的功能。功能测试成功。
程序代码:
#include <iostream>
#include <string>
using namespace std;

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);//按学号查找
    void ShowAllMember();    //显示所有人员信息

};

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;
}

void List::ShowAllMember()
{
    Student *p=head;
    int i=1;
    while(p)
    {
        cout<<""<<i<<"个学生的姓名:"<<p->name<<"\t"<<""<<i<<"个学生的电话:"<<p->phone<<"\t"<<""<<i<<"个学生的地址:"
            <<p->address<<"\t"<<""<<i<<"个学生的E-mail:"<<p->email<<endl;
        p=p->next;
        i++;
    }
}

int main()
{
    cout<<"        *****************【菜单】**************"<<endl;
    cout<<"        ************1.建立学生通讯录***********"<<endl;
    cout<<"        ************2.修改学生通讯录***********"<<endl;
    cout<<"        ************3.增加学生通讯录***********"<<endl;
    cout<<"        ************4.删除学生通讯录***********"<<endl;
    cout<<"        ************5.查询学生通讯录***********"<<endl;
    cout<<"        ************6.显示所有学生*************"<<endl;
    cout<<"        ************7.结束操作*****************"<<endl;
    cout<<"        ***************************************"<<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>>address>>email;
            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:
            TXL.ShowAllMember();break;
        case 7:
            flag=0;break;
        default:
            cout<<"该操作步骤不存在!"<<endl;break;
        }
    }
return 0;
}


  • 满眼生机转化钧;天工人巧日争新。
2010-06-02 09:24
快速回复:课程设计:建立一个通讯录管理,功能还是不能完全实现,希望看到的人多 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.119848 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved