搜索
您的当前位置:首页正文

电话号码查询系统

来源:小奈知识网


河北科技大学

课程设计报告

学生姓名: 李伯冉 学 号: 10L0752041 专业班级: 软件L101 课程名称: 数 据 结 构 学年学期: 2 012—2 013学年第 2 学期

指导教师: 黄春茹

2 0 13年 6 月

课程设计成绩评定表

学生姓名 李伯冉 学 号 起止时间 10L0752041 成绩 专业班级 软件L101 2013-6-09——2013-6-14 设计题目 指 导 教 师 评 语 电话号码查询系统 指导教师: 年 月 日

一、数据结构课程设计目标

熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、问题描述

人们在日常生活中经常需要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询。

三、需求分析

(1)使用文件保存电话号码信息; (2)设计数据结构存储电话号码信息; (3) 提供查询功能:根据姓名实现快速查询; (4) 提供其他维护功能:例如插入、删除、修改等; (5) 按电话号码进行排序。

四、概要设计

图一 程序框架图

图二 程序设计流程图

五、详细设计

#include #include #include

using namespace std; int x=0; char a; int j=1;

struct TeleNumber //数据类 {

char name[20]; //姓名

string phoneNumber; //固定电话号码 string mobileNumber; //移动电话号码

int s;

TeleNumber * Next;

void ReadFile(istream & in); void input(); void display(); } ;

void TeleNumber::ReadFile(istream & in) //从文件把数据读入到程序 {

in>>name>>phoneNumber>>mobileNumber; }

void TeleNumber::input() //信息输入 {

cout<<\"请输入姓名\"<>name;

cout<<\"请输入固定电话号码\"<>phoneNumber;

cout<<\"请输入移动电话号码\"<>mobileNumber;

s=j++; }

void TeleNumber::display() //信息输出 {

cout<<\"姓名:\"<class TeleMessage //功能类 {

public:

TeleMessage(); //构造数据结构 ~TeleMessage(); //释放单链表 void Save(); //数据保存到文件 TeleNumber * Search(char *); //信息查找 void Sort(); //排序 void Insert(); //插入 void Remove(); //删除 void Change(); //更改 void Show(); //显示

void Swap(TeleNumber *,TeleNumber *); //两个TeleNumber对象交换数据域 private:

TeleNumber * End,* Head;

ifstream in; //定义读,写文件对象 ofstream out; };

TeleMessage::TeleMessage() {

Head=new TeleNumber; //头插法建立单链表 Head->Next=new TeleNumber; End=Head->Next;

in.open(\"TeleNumber.txt\"); //打开外存文件,看是否有数据存在

if(!in)

cout<<\"电话系统中没有任何号码,请输入号码\"<while(!in.eof()) //如果有,则打开,并将数据读取到程序 {

End->ReadFile(in);

if(End->name[0]=='\\0')break; End->Next=new TeleNumber; End=End->Next; }

in.close();

cout<<\"读取电话号码系统成功!\"<cout<<\"输入任意字母继续\"<>a; }

TeleMessage::~TeleMessage() //释放单链表 {

TeleNumber * temp; while(Head->Next!=End) {

temp=Head->Next; Head=Head->Next; delete temp; }

delete Head,End; //删除头尾指针 }

void TeleMessage::Save() //保存文件 {

out.open(\"TeleNumber.txt\"); //建立外存文件TeleNumber.txt for(TeleNumber *p=Head->Next;p!=End;p=p->Next)

out<name<<\"\\"<phoneNumber<<\"\\"<mobileNumber<cout<<\"保存成功!\"<void TeleMessage::Swap(TeleNumber *p1,TeleNumber *p2) //两个类对象数据域进行交换 {

TeleNumber * temp=new TeleNumber; strcpy(temp->name,p1->name);

temp->mobileNumber=p1->mobileNumber; temp->phoneNumber=p1->phoneNumber; temp->s=p1->s;

strcpy(p1->name,p2->name);

p1->mobileNumber=p2->mobileNumber; p1->phoneNumber=p2->phoneNumber; p1->s=p2->s;

strcpy(p2->name,temp->name);

p2->mobileNumber=temp->mobileNumber; p2->phoneNumber=temp->phoneNumber; p2->s=temp->s; }

void TeleMessage::Sort() //起泡排序 {

TeleNumber *p=NULL,*q=NULL; int exchange=j-1; int bound; int i;

while(exchange) {

bound=exchange; exchange=0;

for(p=Head->Next,i=1;iNext) if(p->mobileNumber>p->Next->mobileNumber)

{

Swap(p,p->Next); //调用交换函数 exchange=p->s; } }

Show(); }

void TeleMessage::Insert() //插入 {

End->input(); //从单链表尾部插入 End->Next=new TeleNumber; End=End->Next;

cout<void TeleMessage::Remove() //删除 {

char name[20];

TeleNumber * p=new TeleNumber,*temp=NULL; cout<<\"请输入要删除人的姓名:\"<>name;

p->Next=Search(name); //先进行查找,找到所要删除的结点 if(Search(name)) {

temp=p->Next;

p->Next=p->Next->Next; //摘链 delete temp;

cout<<\"\\删除成功!\"<cout<<\"\\没有找到!\"<TeleNumber * TeleMessage::Search(char * name) {

for(TeleNumber *p=Head->Next;p!=End;p=p->Next) if(!strcmp(p->name,name)) {

if(x==4) {

p->display(); return p; } else

return p;

} if(x==4)

cout<<\"查无此人\"<void TeleMessage::Change() //修改信息 {

char name[20];

cout<<\"请输入要修改的人的姓名:\"; cin>>name;

if(Search(name)) {

cout<<\"\\已找到个人的信息,请输入新的信息!\"<input(); cout<<\"修改成功!\"<cout<<\"\\没有找到!\"<void TeleMessage::Show() {

TeleNumber * p=Head->Next;

if( p!=End){ for(;p!=End;p=p->Next) p->display(); }

else cout<<\"没有信息,请先输入\"<int main() {

bool flag=true; TeleMessage tele; char name[20]; while(flag) {

system(\"cls\");

cout<<\"1.增加电话号码\"<}

cout<<\"7.保存个人信息\"<>x; switch(x) {

case 0:flag=false;break; case 1:tele.Insert();break; case 2:tele.Show();break; case 3:tele.Sort();break; case 4:

cout<<\"请输入欲查找认得姓名\"<>name;

tele.Search(name);break; case 5:tele.Remove();break; case 6:tele.Change();break; case 7:tele.Save();break; }

cout<<\"输入任意字母返回\"<>a; }

return 0;

六、软件说明书(给出软件如何使用,使用时的注意事项)

使用实际的电话号码,并不小于20个。

七、测试报告(每个函数的功能测试,输入条件,输出结果)

图三 功能显示

图四 显示联系人

图五 排序电话号码

图六 查找联系人

图七 修改联系人

图八 保存成功

八、课程设计总结。

一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在设计过程中,和同学们相互探讨,相互学习,相互监督。我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top