数据结构(C++) 您所在的位置:网站首页 兰州晨报电话号码查询 数据结构(C++)

数据结构(C++)

2024-06-10 17:45| 来源: 网络整理| 查看: 265

报告内容开始

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

《数据结构》是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。《数据结构》课程的目标是使学生学会分析研究计算机加工对象的特性,选择合适的数据结构和存储表示,以及编制相应的实现算法,培养和提高学生程序设计的能力。《数据结构》课程也是一门实践性较强的课程,设置实践环节是十分重要的。本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。

二、问题描述

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

三、需求分析 1. 需求

人们在日常生活中经常需要查找某个人或某个单位的电话号码,通过纸质记录或是电子文档记录会显得杂乱,并且难于管理维护。因此设计一个电话号码查询系统。

电话号码查询系统需要做到:

通过姓名进行电话号码查找电话号码信息的插入电话号码的删除电话信息的修改电话号码查询系统信息的排序 2. 对需求进行算法分析

电话号码查询系统程序运行结束会释放内存,导致插入信息丢失。如果要在程序运行结束后仍然保存电话号码信息,就需要将电话号码信息采用文件的形式存放到外存中。在系统运行时,需要将电话号码信息从文件调入内存来进行查找等操作就需要创建一个结构体接收文件数据。完成对电话号码的插入删除等操作使用对单链表的增删改查算法实现。利用起泡排序法对电话号码信息进行排序。

四、概要设计

如果要建立电话号码查询系统需要输入多个类型信息,例如姓名,电话号,邮箱等。所要求定义的数据类型不同,所以定义一个结构体封装各类型数据。将各个功能函数定义在一个类中。需要完成的功能有:插入,排序,删除,查找,修改,保存。要显示这些功能结果还需要有显示功能。

因为电话号码查询系统需要记录用户信息,即对输入的信息进行保存。所以在程序运行时应当有对外部数据处理的函数,即文件输入输出函数,需要在系统执行功能之前对外部内存进行检索,查找是否有记录信息的文件,如果有,则导入,如果没有,在程序运行保存数据后,应当建立一个外部存储文件用以存放用户输入信息,方便下次直接进行信息的读入、检索、阅览。

对程序进行概括设计,建立函数模块图,以及程序流程图。

函数模块思维导图如下: 主程序思维导图 程序流程图如下: 程序流程图

五、详细设计 1.结构体的定义

定义所需要的的结构变量,以及一些结构体函数, 具体算法实现及注释信息如下:

struct TeleNumber // 定义结构体类型;封装电话号码查询系统的信息 { char name[10]; // 姓名 long long phoneNumber; // 固定电话号码 long long mobileNumber; // 移动电话号码 char email[30]; // 个人邮箱 int s; TeleNumber* Next;//定义结构体指针 void ReadFile(istream& in);//读入文件数据 void input(); //键盘输入信息 void display(); //DOS窗口信息显示 }; void TeleNumber::ReadFile(istream& in) // 从文件把数据读入到程序 { in >> name >> phoneNumber >> mobileNumber >> email; } void TeleNumber::input() // 信息输入 { cout Head = new TeleNumber; // 头插法建立单链表 Head->Next = new TeleNumber; End = Head->Next; in.open("TeleNumber.txt"); // 打开外存文件,看是否有数据存在 if (!in) cout End->ReadFile(in); if (End->name[0] == '\0')break; End->Next = new TeleNumber; End = End->Next; } in.close(); cout temp = Head->Next; Head = Head->Next; delete temp; } delete Head, End; // 删除头尾指针 } 3.主函数部分设计(查询系统首页菜单)

利用switch语句实现输入代号调用函数 程序代码及注释信息如下:

int main() { bool flag = true; TeleQuerySystem tele; char name[20]; while (flag) { system("cls"); cout End->input(); // 从单链表尾部插入 End->Next = new TeleNumber; End = End->Next; cout printf("\n电话查询系统内所有信息如下:\n\n"); for (; p != End; p = p->Next) p->display(); } else cout bound = exchange; exchange = 0; for (p = Head->Next, i = 1; i Next) if (p->mobileNumber > p->Next->mobileNumber) { Swap(p, p->Next); // 调用交换函数 exchange = p->s; } } Show();//调用显示函数显示结果 } void TeleQuerySystem::Swap(TeleNumber* p1, TeleNumber* p2) // 两个类对象数据域进行交换 { TeleNumber* temp = new TeleNumber; strcpy_s(temp->name, p1->name); temp->mobileNumber = p1->mobileNumber; temp->phoneNumber = p1->phoneNumber; strcpy_s(temp->email, p1->email); temp->s = p1->s; strcpy_s(p1->name, p2->name); p1->mobileNumber = p2->mobileNumber; p1->phoneNumber = p2->phoneNumber; strcpy_s(p1->email, p2->email); p1->s = p2->s; strcpy_s(p2->name, temp->name); p2->mobileNumber = temp->mobileNumber; p2->phoneNumber = temp->phoneNumber; strcpy_s(p2->email, temp->email); p2->s = temp->s; } (4) 信息查询函数Search()

信息查询函数是对姓名进行查询,对单链表所有结点,从头结点开始进行遍历。用strcmp字符串比较函数对名字这个字符数组进行比较,若相等,则调用display输出该结点p对应的信息。不存在则输出“查无此人”。

程序代码及注释信息如下:

TeleNumber* TeleQuerySystem::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 temp = p->Next; p->Next = p->Next->Next; // 摘链 delete temp; cout char name[20]; cout name; if (Search(name)) { cout out.open("TeleNumber.txt"); // 建立外存文件 TeleNumber.txt for (TeleNumber* p = Head->Next; p != End; p = p->Next) out


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有