《高级语言程序设计》
大作业设计报告
专 业 班 级 学 号 姓 名 指导教师 完成时间 成 绩
测控技术与仪器
09-1
测控
一、设计题目
简单个人电话号码查询系统。 二、设计目的
人们在日常生活中经常需要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询。 三、设计要求
⑴ 在外存上,用文件保存电话号码信息;⑵ 在内存中,设计数据结构存储电话号码信息;⑶ 提供查询功能:根据姓名实现快速查询;⑷ 提供其他维护功能:例如插入、删除、修改等。 四、设计思想与系统结构说明
由于需要管理的电话号码信息较多,而且要在程序运行结束后仍然保存电话号码信息,所以电话号码信息采用文件的形式存放到外存中。在系统运行时,需要将电话号码信息从文件调入内存来进行查找等操作,为了接收文件中的内容,要有一个数据结构与之对应,可以设计如下结构类型的数组来接收数据: const int max=10; struct TeleNumber {
string name; //姓名 string phoneNumber; //固定电话号码 string mobileNumber; //移动电话号码 string email; //电子邮箱 } Tele[max];
为了实现对电话号码的快速查询,可以将上述结构数组排序,以便应用折半查找,但是,在数组中实现插入和删除操作的代价较高。如果记录需频繁进行插入或删除操作,可以考虑采用二叉排序树组织电话号码信息,则查找和维
- 2 -
护都能获得较高的时间性能。更复杂地,需要考虑该二叉排序树是否平衡,如何使之达到平衡。 五、程序清单 #include
struct TeleNumber //数据类 {
char name[10]; //姓名 int phoneNumber; //固定电话号码 int mobileNumber; //移动电话号码 char email[10]; //电子邮箱
int s;
TeleNumber * Next;
void ReadFile(istream & in); void input(); void display();
} ;
void TeleNumber::ReadFile(istream & in) //从文件把数据读入到程序 { }
void TeleNumber::input() //信息输入 {
in>>name>>phoneNumber>>mobileNumber>>email;
cout<<\请输入姓名\
- 3 -
}
cin>>name;
cout<<\请输入固定电话号码\cin>>phoneNumber;
cout<<\请输入移动电话号码\cin>>mobileNumber;
cout<<\请输入电子邮箱\cin>>email; 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对象
交换数据域
- 4 -
};
private:
TeleNumber * End,* Head;
ifstream in; //定义读,写文件对象 ofstream out;
TeleMessage::TeleMessage() { }
TeleMessage::~TeleMessage() //释放单链表
- 5 -
Head=new TeleNumber; //头插法建立单链表 Head->Next=new TeleNumber; End=Head->Next;
in.open(\打开外存文件,看是否有数据存在 if(!in) { }
cout<<\输入任意字母继续\cin>>a;
while(!in.eof()) //如果有,则打开,并将数据读取到程序 { }
in.close();
cout<<\读取电话号码系统成功!\
End->ReadFile(in);
if(End->name[0]=='\\0')break; End->Next=new TeleNumber; End=End->Next;
cout<<\电话系统中没有任何号码\else