C++语言学生通讯录系统.docx
《C++语言学生通讯录系统.docx》由会员分享,可在线阅读,更多相关《C++语言学生通讯录系统.docx(15页珍藏版)》请在冰豆网上搜索。
C++语言学生通讯录系统
学生通讯录系统
1.设计目标
设计一个实用的小型职工信息管理系统,用链表来存储学生的姓名、性别、电话、住址,完成对信息的录入、修改、删除、查询、统计、输出等操作。
2.设计思想
⑴设计职工工资信息的数据结构表
序号成员名数据类型长度含义
1namechar8学生姓名
2sexchar2学生性别
3telint6学生电话
4addchar20学生住址
(2)以结构体建类,以类为结点建立链表
(3)用类的成员函数对链表的数据进行操作
1)构造函数books();
2)建立链表函数voidinitbook();//初始化链表
3)清空函数voidclearbook();//清空链表
4)统计函数intbooksize();//求表长
5)检查函数boolbookempty();//检查表是否为空
6)遍历函数voidtraversebook();//遍历表
7)插入函数voidinsertbook();//插入一个元素
8)删除函数voiddetelebook();//删除一个元素
9)修改函数voidupdatebook();//修改一个元素
10)查询函数voidfindbook();//查询一个元素
(4)设计菜单来实现功能设计
0)学生总名单查看
1)增加一位学生资料
2)删除一位学生资料
3)修改一位学生资料
4)查询学生资料
5)清空通讯录
6)安全退出
3.设计类及对象
本程序先定义结构体book,然后用结构体book建立类books,定义如下:
structBook
{
charname[8];
charsex[2];
intnum;
charadd[20];
Book*next;
};
voidInitBook(Book*&Head);//初始化链表
voidClearBook(Book*&Head);//清空链表
intBookSize(Book*Head);//求表长
boolBookEmpty(Book*Head);//检查表是否为空
voidTraverseBook(Book*Head);//遍历表
voidInsertBook(Book*&Head);//向表中插如元素
voidFindBook(Book*Head);//查询一个元素
voidUpdateBook(Book*Head);//修改一个元素
voidDeleteBook(Book*&Head);//删除一个元素
4.程序源代码
//这是一个学生通讯系统管理
//头文件
//book1.h
structBook
{
charname[8];
charsex[2];
intnum;
charadd[20];
Book*next;
};
voidInitBook(Book*&Head);//初始化链表
voidClearBook(Book*&Head);//清空链表
intBookSize(Book*Head);//求表长
boolBookEmpty(Book*Head);//检查表是否为空
voidTraverseBook(Book*Head);//遍历表
voidInsertBook(Book*&Head);//向表中插如元素
voidFindBook(Book*Head);//查询一个元素
voidUpdateBook(Book*Head);//修改一个元素
voidDeleteBook(Book*&Head);//删除一个元素
//book2.cpp
#include
#include
#include
#include
voidInitBook(Book*&Head)
{
Head=NULL;
}
voidClearBook(Book*&Head)
{
Book*cp,*np;
cp=Head;
while(cp!
=NULL)
{
np=cp->next;
deletecp;
cp=np;
}
Head=NULL;
}
intBookSize(Book*Head)
{
Book*p=Head;
inti=0;
while(p!
=NULL)
{
i++;
p=p->next;
}
returni;
}
boolBookEmpty(Book*Head)
{
return(Head==NULL);
}
voidTraverseBook(Book*Head)
{
cout<<"姓名\t性别\t电话\t住址\n";
Book*p=Head;
while(p!
=NULL)
{
cout<name<<"\t"<sex<<"\t"<num<<"\t"<add<p=p->next;
}
cout<}
voidInsertBook(Book*&Head)
{
Book*new1;
new1=newBook;
cout<<"请输入姓名:
";
cin>>new1->name;
cout<cout<<"请输入性别:
";
cin>>new1->sex;
cout<cout<<"请输入联系电话:
";
cin>>new1->num;
cout<cout<<"请输入联系地址:
";
cin>>new1->add;
{
new1->next=Head;
Head=new1;
}
}
voidFindBook(Book*Head)
{
charx[8];
Book*p=Head;
cout<<"请输入你想要查找的人的姓名:
";
cin>>x;
while(p!
=NULL)
{
while(strcmp(p->name,x)!
=0)
{
p=p->next;
}
break;
}
cout<<"======================================="<cout<cout<<"姓名:
"<name<<"\t性别:
"<sex<cout<<"电话:
"<num<<"\t地址:
"<add<cout<cout<<"========================================"<}
voidUpdateBook(Book*Head)
{
charx[8];
Book*p=Head;
cout<<"请输入你想要修改的人的姓名:
";
cin>>x;
while(p!
=NULL)
{
while(strcmp(p->name,x)!
=0)
{
p=p->next;
}
cout<<"请输入新的资料"<cout<<"请输入姓名:
";
cin>>p->name;
cout<<"请输入性别:
";
cin>>p->sex;
cout<<"请输入联系电话:
";
cin>>p->num;
cout<<"请输入联系地址:
";
cin>>p->add;
break;
}
}
voidDeleteBook(Book*&Head)
{
if(Head==NULL)
cout<<"没有资料"<else
{
charx[8];
cout<<"请输入要删除的人的姓名:
";
cin>>x;
Book*p=Head,*q=NULL;
while(p!
=NULL)
if(strcmp(p->name,x)==0)
break;
else
{
q=p;
p=p->next;
}
if(p==NULL)
cout<<"对不起,找不到你要删除的人。
"<else
{
if(q==NULL)
Head=Head->next;
else
q->next=p->next;
deletep;
cout<<"此人以删除"<}
}
}
//book3.cpp
#include
#include
#include
#include
voidmain()
{
cout<<"欢迎来到通讯录系统管理系统"<cout<cout<<"按(0):
学生总名单查看;"<cout<<"按
(1):
增加一位学生资料;"<cout<<"按
(2):
删除一位学生资料;"<cout<<"按(3):
修改一位学生资料;"<cout<<"按(4):
查询学生资料;"<cout<<"按(5):
清空通讯录;"<cout<<"按(6):
安全退出;"<cout<cout<<"制作人:
刘志杰"<cout<<"※请选择:
";
inta;
cin>>a;
Book*z;
InitBook(z);
while(a!
=6)
{
switch(a)
{
case0:
TraverseBook(z);
inti;
i=BookSize(z);
cout<<"通讯录中的人数:
"<
cout<<"※请选择:
";
break;
case1:
InsertBook(z);
cout<<"※请选择:
";
break;
case2:
DeleteBook(z);
cout<<"※请选择:
";
break;
case3:
UpdateBook(z);
cout<<"※请选择:
";
break;
case4:
FindBook(z);
cout<<"※请选择:
";
break;
case5:
ClearBook(z);
cout<<"※请选择:
";
break;
case6:
exit(0);
default:
cout<<"输入错误请重新选择:
";
}
cin>>a;
}
}
5.调试纪录
(1)增加学生资料的测试
(2)学生总名单查看的测试
(3)查询学生资料的测试
(4)修改学生资料的测试
6.总结
经过几个星期的努力,在老师和同学的帮助下,通过自己的努力和从资料的引用,终于完成了这次学生通讯录系统的简单课程设计。
虽然是一个小小的系统却让我经过这段时间的不懈努力,对其中的艰辛,我是深有体会。
在从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。
但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。
的确工夫不负有心人,只要努力付出,就会得到美好的回报。
通过课程设计作业的训练,我进一步学习和掌握了对软件的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。
懂得了在进行编写一个软件之前,要有明确的目标和整体的设计思想,对整个程序的框架结构的思考是十分重要和关键的。
另外某些具体的细节内容也是来不得半点马虎的,细节也相当的重要。
这些宝贵的编程思想和从中摸索到的经验以及获得的经验和总结的教训都是在编程的过程中获得的宝贵财富。
这些资源对我以后的编程会有很大的帮助的,我要好好利用。
从这一点来看,编程序也要积累经验,把自己摸索到的东西和学习得来的有关知识,真正地变成自己的编程工具,以方便以后的编程。
参考文献
[1]谭浩强编著.C++面向对象程序设计.清华大学出版社,2006
[2]马锐胡思康编著.C++语言程序设计习题集.人名邮电出版社,2003
[3]夏崇镨任海军余健编著.VisualC++课程设计案例精编.清华大学出版社,2008
[4]张基温张伟编著.C++程序开发例题与习题.清华大学出版社,2003