C++通讯录管理系统课程设计_第1页
C++通讯录管理系统课程设计_第2页
C++通讯录管理系统课程设计_第3页
C++通讯录管理系统课程设计_第4页
C++通讯录管理系统课程设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通讯录管理问题描述编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。基本要求程序应提供的基本管理功能有:添加:即增加一个人的记录到通信录中显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。存储:即将通讯录信息保存在一个文件中。装入:即将文件中的信息读入程序。查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。修改:可修改一个人的除姓名外其它信息。测试数据程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。实现提示程序可用一个动态数组来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类Cperson来实现,作为动态数组的值指针指向这些Cperson类对象,通过动态数组的遍历可以操作这些数据。目录【摘要】 第1章概述1.1系统实现的目标1.2系统实现方案 1.3系统实现环境 1.4具体的开发方法第2章系统设计 2.1总体设计 2.2类设计 2.3数据结构 2.4界面设计 第3章系统实现 【摘要】日益繁多的人际交往使得我们很难记住与每个人之间的联系方式,通讯录能够便捷的给我们带来所需要的相关信息。而随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机或者手机中的电话簿程序来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。1.1系统实现的目标(1)录入:通讯录信息包括:姓名,电话,地址,E-mail,邮编等信息。(2)更新:能插入、删除通讯录信息。.(3)浏览:能够查看所有的通讯录信息。(4)查询:能实现指定姓名信息查询或指定编号查询功能。(5)系统以菜单方式工作,界面友好,易于操作。1.2系统实现方案为实现系统功能,本程序主要分为五个模块。它们分别为:输入一个信息、删除一个信息、查询一个信息、插入一个信息、列出所有的信息、退出该程序。这五个函数再通过主函数调用分别得以实现。主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用通讯录的哪种功能。然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。1.3系统实现环境通过VC++6.0用C++语言对程序进行编写设计在windows界面下用DOS访问1.4具体的开发方法用面向对象的程序设计方法,运用C++语言编写程序进行该学生考勤管理系统的详细设计,使之能提供录入、显示、查找、删除、修改的功能。最后在VC++6.0环境下编写和调试程序,进而完成系统的实现。第2章系统设计2.1总体设计功能:1.输入联系人的信息2.显示联系人的信息3.查找联系人的信息4.删除联系人的信息5.编辑人的信息一程序分析阶段该程序有六项功能,即添加、显示、存储、装入、查询、修改,要完成此六项功能必须有六项实现该功能的函数,和类的构造相联系知此六项功能即为类的行为,此为行为抽象。该程序又有四项属性,即姓名、地址、电话号码、邮政编码,又因为地址有三项成员,即省、市、街道,由此可知可将数据成员分为两个类,即Cperson类和Address类,此为类的数据成员。此为数据抽象。至此类的数据成员和行为成员形成。二程序设计阶段由于人员信息较多,可考虑使用对象数组来管理人员信息,作为动态数组的值指针指向这些Cperson类对象,通过动态数组的遍历可以操作这些数据。程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。当人员同名是应该考虑其他的属性。三程序编程阶段1:编程之前应该先画出该类的UML图。Cperson—phonenumber:int—Cperson—phonenumber:int—lastdate:int—name:string—address:Address—postnumber:string—balance:double—time:double—<<const>>price:double—<<static>>n:int+Cperson():void+getbalance():void+gettime():void+record(date:int,account:double):double+show():void+select(name:string):void+alter(phonenumber:int):void+insert(phonenumber:int):voidAddress—province:string—city:string—street:string+Address()+getAddress()+Address(Address&add)第三章系统实现//Address类的设计#ifndefAddress_h#defineAddress_h#include<string>classAddress{private: std::stringprovince; std::stringcity; std::stringstreet;public: Address(){} Address(std::stringprovince,std::stringcity,std::stringstreet); voidgetaddress(std::stringprovince,std::stringcity,std::stringstreet); Address(Address&address1); ~Address();};#endif//Cperson类的设计#ifndefCperson_h#defineCperson_h#include<string>classCperson//通信用户类{public:Cperson(); Cperson(intphonenumber,intdate,char*name1,Address&address,std::stringpostnumber); doublegetbalance()const{returnbalance;} doublegettime()const{returntime;} voidinputmoney(intdate,doubleaccount); voidrecord(intdate,doubleaccount); voidsettle(intdate,doubletime); staticunsignedintgettotal(){returnn;} voidinput(intphonenumber,char*name1,Address&address,std::stringpostnumber,doublebalance,doubletime); voidshow()const;voidselect(char*name); voidalter(intphonenumber1,char*name1); voidinsert(intphonenumber); ~Cperson();private: intphonenumber;//电话号码 intlastdate;//充值日期 char*name;//用户姓名 Addressaddress;//用户地址 std::stringpostnumber;//用户所在地的邮政编码 doublebalance;//余额 doubletime;//通话时间 staticdoubleprice;//话费单价 staticunsignedintn;//用户总人数};#endif//Address类的实现#include"Address.h"#include<string>usingnamespacestd;Address::Address(stringprovince,stringcity,stringstreet){province=province; city=city; street=street;}Address::getaddress(stringprovince,stringcity,stringstreet){address=province+city+street;}Address::~Address(){}Address::Address(Address&address1){province=vince; city=address1.city; street=address1.street;}//Cperson类的实现#include"Address.h"#include"Cperson.h"#include<iostream>#include<string>#include<cmath>usingnamespacestd;Cperson::Cperson(){}Cperson::Cperson(intdate,intphonenumber,char*name1,Address&address1,stringpostnumber){ lastdate=date; phonenumber=phonenumber;name=newchar[strlen(name1)+1]; //申请动态内存空间 strcpy(name,name1); //字符串的赋值 Address=address1; postnumber=postnumber; balance=0; time=0; price=price;cout<<"\t#"<<name<<"iscreated"<<endl; n++;}voidCperson::record(intdate,doubleaccount){ lastdate=date;balance=balance+account; cout<<date<<"\t#"<<name<<"\t"<<account<<"\t"<<balance<<endl;}voidCperson::inputmoney(intdate,doubleaccount){ cout<<"你已经成功充值"<<account<<endl; record(date,account);}voidCperson::settle(intdate,doubletime){doubleaccount; account=floor(time*price+0.5); if(account>getbalance()) cout<<"你的话费不足,请及时缴费!"<<endl; else record(date,-account);}voidCperson::select(char*name1){for(inti=0;i<n;i++)if(strcmp(name,name1)==0) cout<<"你查找的用户为"<<name<<endl; else cout<<"你查找的用户不存在"<<endl;}voidCperson::input(intphonenumber,char*name1,Address&address1,stringpostnumber,doublebalance,doubletime){phonenumber=phonenumber; name=newchar[strlen(name1)+1];//为name申请动态的内存空间strlen()是查出字符串长度的函数 strcpy(name,name1);//字符串的赋值 address=address1;postnumber=postnumber; balance=balance; time=time;}voidCperson::show()const{cout<<"phonenumber="<<phonenumber<<endl; cout<<"name="<<name<<endl; cout<<"address="<<Address(province,city,street)<<endl; cout<<"postnumber="<<postnumber<<endl; cout<<"balance="<<balance<<endl; cout<<"time="<<time<<endl;}voidCperson::alter(intphonenumber1,char*name1){ Cperson*person;person=newCperson[n]; for(inti=0;i<n;i++) if(person->phonenumber==phonenumber1) cout<<"chae";// name=(*name1); else cout<<"你要修改的用户不存在!"<<endl;//person=newCperson[n];}voidCperson::insert(intphonenumber){}Cperson::~Cperson(){delete[]name;//释放动态内存空间}//Cperson类的测试#include"Address.h"#include"Cperson.h"#include<iostream>#include<fstream>#include<iomanip>#include<string>usingnamespacestd;doubleCperson::price=0.8;unsignedintCperson::n=1;intmain(){ intdate; doubleaccount;intlastdate; intm; intn=1; intphonenumber; charname[20];stringprovince,city,street; stringpostnumber; doublebalance; doubletime; AddressAdd;Cperson*person=newCperson[n];/*Cpersonp(12,23,"韩波","息县","123"); cout<<"date="<<lastdate<<endl; cout<<"address="<<address<<endl;*/ for(inti=0;i<n;i++) { cout<<"请输入第"<<i+1<<"个人的信息"<<endl; cout<<"date="; cin>>lastdate; cout<<"phonenumber="; cin>>phonenumber; cout<<"name="; cin>>name;cout<<"province="; cin>>province; cout<<"city="; cin>>city; cout<<"street="; cin>>street; Address.getaddress(province,city,street);cout<<"postnumber="; cin>>postnumber;cout<<"balance="; cin>>balance; cout<<"time="; cin>>time; person[i].input(phonenumber,name,(province,city,street),postnumber,balance,time); for(inti=0;i<n;i++) { cout<<"请输入第"<<i+1<<"个用户的姓名,电话号码,地址,邮政编号"; cin>>person[i].name>>person[i].phonenumber>>person[i].address>>person[i].postnumber; } fstreamMyfile1,Myfile2;Myfile1.open("D:\\用户信息.txt",ios::out);Myfile1<<"***********用户信息***********"<<endl<<endl; Myfile1<<"姓名"<<"电话号码"<<"地址"<<"邮政编码" <<endl<<"***************************************************************"<<endl;for(i=0;i<n;i++) Myfile1<<"NO."<<setw(2)<<n+1<<""<<setw(6)<<person[i].name<<""<<person[i].phonenumber<<""<<setw(8)<<person[i].address<<""<<person[i].postnumber<<endl;Myfile1.close();cout<<"你输入的数据为:"<<endl; cout<<"date="<<lastdate<<endl; cout<<"phonenumber="<<phonenumber<<endl;cout<<"name="<<name<<endl;cout<<"address="<<Add.getaddress(province,city,street)<<endl;cout<<"postnumber="<<postnumber<<endl;cout<<"balance="<<balance<<endl;cout<<"time="<<time<<endl;} Cpersonperson1; cout<<"********************************************"<<endl; cout<<"你要进行的操作是:"<<endl; cout<<"1:显示"<<"\t"<<"2:查询"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论