收藏 分销(赏)

通讯录信息管理系统(C--).doc

上传人:仙人****88 文档编号:8944053 上传时间:2025-03-08 格式:DOC 页数:23 大小:255KB 下载积分:10 金币
下载 相关 举报
通讯录信息管理系统(C--).doc_第1页
第1页 / 共23页
通讯录信息管理系统(C--).doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
学 号 1307010225 高级程序设计语言C++课程设计 设计说明书 通讯录信息管理系统 起止日期: 2014年 6 月 16日 至 2014 年 6 月 20日 学生姓名 **** 班级 计算机科学与技术(2)班 成绩 指导教师(签字) 计算机与信息工程学院 2014 年 6 月20日 21 高级程序设计语言C++课程设计 目 录 1、设计目的 5 2、总体设计 5 3、详细设计: 6 3.1、程序具体功能 6 3.2、调试分析 7 4、源程序和运行结果 8 4.1、源程序 8 4.2、运行结果 20 4.3、心得体会 24 工资管理系统 1、 设计目的 .通过实验实现对学生信息系统的管理操作; .进一步掌握和利用C++进行程设计的能力; .进一步理解和运用结构化程序设计的思想和方法; .初步掌握开发一个小型实用系统的基本方法; .学会利用流程图或N-S图表示算法; .掌握书写程设计开发文档的能力(书写课程设计报告); 2、总体设计 通讯录信息管理系统 录入功能 文件读取功能 文件保存功能 浏览功能 查询功能(按ID,类别) 修改功能(按ID) 删除供能(按ID) 排序供能(按ID,类型) 退出功能 3、详细设计: 3.1、程序具体功能: 1、联系人信息录入功能 2、联系人信息文件读取功能 3、联系人信息文件保存功能v 4、联系人信息浏览功能 5、查询功能: l 1)按ID查询 l 2)按类型查询 6、修改功能: 根据ID修改相应信息; 7、删除联系人功能: 删除相应ID的联系人信息。 8、排序功能(由用户指定按照联系人类型或ID;指定升序或降序) 9、退出 3.2、调试分析 上机调试之前我们对所编的程序作了纸面上的检查,先改正一些不该犯错误,如{ }没有搭配完整,漏写 ,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决、避免的。而且还可以减少机器时间。往往一连串的错误是由于漏写或写错一个字符引起的。 在上机调试过程中,对文件这一节的知识还不够熟悉,所以在解决输入输出流的过程中出了很多问题。 问题如下: (1)定义了count这menu类的成员,使count的寿命在执行系统操作时一直延续,但是保存文件后,不知如何读取,进一步又了解到输入流的读取方式。除此之外,还发现无法读取保存文件中的汉字,会出现乱码。(2)文件输入输出时要保证读取和保存的数据顺序一致。(3)读取之前要先保存文件 1、类函数声明后,要在括号后加逗号。 2、头文件的声明(如string,iomanip等)。 3、派生类构造函数的定义问题,(如基类构造函数为空时,派生类无需再定义,以及个数问题)。 4、if判断,for循环语句,中括号不成对,以及括号所包围的内容。 5、类的私有成员只能通过共有的成员函数和友元函数来调用。 6、定义的变量在全体函数中的寿命。 4、源程序和运行结果 4.1、源程序 #include <iostream> #include <string> #include <fstream> #include <iomanip> using namespace std; ////////////////////////////////// class Date { private: int year; int day; int month; public: Date(); void set_Date(); void Date_display(); int get_year(); int get_day(); int get_month(); string get_data(); void Date_sweep(); void change_year(int n); void change_month(int n); void change_day(int n); void set_all(int y,int m,int d); }; void Date::set_all(int y,int m,int d) { year = y; month = m; day =d ; } Date::Date() { year=0; month=0; day=0; } void Date::change_month(int n) { month=n; } void Date::change_year(int n) { year=n; } void Date::change_day(int n) { day=n; } void Date::Date_sweep() { year=0; month=0; day=0; } void Date::set_Date() { cout<<"存储日期"<<endl; cout<<"年:"; cin>>year; cout<<"月:"; cin>>month; cout<<"日:"; cin>>day; cout<<endl; } void Date::Date_display() { cout<<"年:"<<year<<endl; cout<<"月:"<<month<<endl; cout<<"日:"<<day<<endl; } int Date::get_year() { return year; } int Date::get_month() { return month; } int Date::get_day() { return day; } string Date::get_data() { cout<<year; return("年month月day日"); } ///////////////////////////////////////// class people:public Date { private: int ID; int ID1; int ID2; int relation1; int relation2; string mobilephone; string telephone; string address; string name; string sex; string relation; public: int get_ID(); string get_mobilephone(); string get_telephone(); string get_address(); string get_name(); string get_sex(); string get_relation(); void change_mobilephone(string n); void change_telephone(string n); void change_address(string n); void change_sex(string n); void change_name(string n); void change_relation(string n); void set_people(); void in_ID(); void people_display(); void people_sweep(); int compare_relation1(people &a,string b); int compare_relation2(people &a,people &b); int compare_ID1(people &a,people &b); int compare_ID2(people &a,int b); void set_allE(int I,string na,string se,string re,string mo,string te,string ad,int y,int m,int d); people():Date() { ID=0; ID1=4; ID2=4; relation1=4; relation2=4; mobilephone="?"; telephone="?"; address="?"; name="?"; sex="?"; relation="?"; } }; void people::set_allE(int I,string na,string se,string re,string mo,string te,string ad,int y,int m,int d) { ID=I; mobilephone=mo; telephone=te; address=ad; name=na; sex=se; relation=re; set_all(y,m,d); } void people::change_mobilephone(string n) { mobilephone=n; } void people::change_telephone(string n) { telephone=n; } void people::change_address(string n) { address=n; } void people::change_sex(string n) { sex=n; } void people::change_name(string n) { name=n; } void people::change_relation(string n) { relation=n; } void people::in_ID() { cout<<"ID:"; cin>>ID; } void people::set_people() { cout<<"姓名:"; cin>>name; cout<<"性别:"; cin>>sex; cout<<"关系:"; cin>>relation; cout<<"手机:"; cin>>mobilephone; cout<<"座机:"; cin>>telephone; cout<<"地址:"; cin>>address; } void people::people_display() { cout<<"ID:"<<ID<<endl; cout<<"姓名:"<<name<<endl; cout<<"性别:"<<sex<<endl; cout<<"关系:"<<relation<<endl; cout<<"手机:"<<mobilephone<<endl; cout<<"座机:"<<telephone<<endl; cout<<"地址:"<<address<<endl; } int people::get_ID() { return ID; } string people::get_mobilephone() { return mobilephone; } string people::get_telephone() { return telephone; } string people::get_name() { return name; } string people::get_sex() { return sex; } string people::get_address() { return address; } string people::get_relation() { return relation; } int people::compare_relation1(people &a,string b) { if(a.relation>b) relation1=0; if(a.relation<b) relation1=2; if(a.relation==b) relation1=1; return(relation1); } int people::compare_relation2(people &a,people &b) { if(a.relation>b.relation) relation2=0; if(a.relation<b.relation) relation2=2; if(a.relation==b.relation) relation2=1; return(relation2); } int people::compare_ID1(people &a,people &b) { if(a.ID==b.ID) ID1=1; if(a.ID<b.ID) ID1=2; if(a.ID>b.ID) ID1=0; return(ID1); } int people::compare_ID2(people &a,int b) { if(a.ID==b) ID2=1; if(a.ID>b) ID2=0; if(a.ID<b) ID2=2; return(ID2); } void people::people_sweep() { Date_sweep(); mobilephone="?"; telephone="?"; address="?"; name="?"; sex="?"; relation="?"; } //////////////////////////////////////////////////////// class Menu { private: int count; people Re[1000]; public: Menu(); void menu();//显示菜单 void input_all();//输入所有联系人信息 void output_all();//输出所有联系人信息 void search_num();//查找指定联系人ID void read_fromfile();//联系人信息的读取 void save_tofile();//联系人信息的保存 void order_message();//联系人信息排序 void Clean_Message();//删除联系人信息 void change_message();//修改联系人信息 void op(); }; Menu::Menu() { count=1; } void Menu::menu() { cout<<endl<<endl<<"*********通讯录管理信息系统**********"<<endl<<endl; cout<<" 1、联系人信息的录入"<<endl; cout<<" 2、联系人信息文件的保存"<<endl; cout<<" 3、联系人信息文件的读取"<<endl; cout<<" 4、联系人信息的浏览"<<endl; cout<<" 5、查询联系人信息:"<<endl; cout<<" A)按联系人ID查询"<<endl; cout<<" B)按联系人关系查询"<<endl; cout<<" 6、修改联系人信息:"<<endl; cout<<" A)年"<<endl; cout<<" B)月"<<endl; cout<<" C)日"<<endl; cout<<" D)姓名"<<endl; cout<<" E)手机"<<endl; cout<<" F)座机"<<endl; cout<<" G)联系人关系"<<endl; cout<<" H)地址"<<endl; cout<<" I)性别"<<endl; cout<<" 7、删除联系人信息:"<<endl; cout<<" 8、联系人信息排序:"<<endl; cout<<" A)按照联系人关系"<<endl; cout<<" B)按照联系人ID"<<endl; cout<<" a.升序"<<endl; cout<<" b.降序"<<endl; cout<<" 9、退出"<<endl; } void Menu::order_message() { char a; cout<<"请输入以何种方式排序(A或B):"; cin>>a; if(a=='A') { for(int i=0;i<count;i++) for(int a=i+1;a<count;a++) if(Re[i].compare_relation2(Re[i],Re[a])==0) { people b; b=Re[a]; Re[a]=Re[i]; Re[i]=b; } } if(a=='B') { char c; cout<<"请输入(a升序,b降序):"; cin>>c; if(c=='a') { for(int i=0;i<count;i++) for(int a=i+1;a<count;a++) if(Re[i].compare_ID1(Re[i],Re[a])==0) { people b; b=Re[a]; Re[a]=Re[i]; Re[i]=b; } } if(c=='b') { for(int i=0;i<count;i++) for(int a=i+1;a<count;a++) if(Re[i].compare_ID1(Re[i],Re[a])==2) { people b; b=Re[a]; Re[a]=Re[i]; Re[i]=b; } } } op(); } void Menu::input_all() { for(int i=0;i<=count;i++) { char a; Re[i].in_ID(); for(int x=0;x<10;x++) for(int b=0;b<count;b++) { if(b!=i) { if(Re[b].get_ID()==Re[i].get_ID()) { cout<<"输入错误!,请重新输入:"; Re[i].in_ID(); } } } Re[i].set_people(); Re[i].set_Date(); cout<<"是否继续输入(回复“N(或n)”停止输入,回复“Y(或y)”继续输入):"; cin>>a; for(int c=0;c<10;c++) { if(a!='y'&&a!='Y'&&a!='n'&&a!='N') { cout<<"输入错误!,请重新输入:"; cin>>a; } else break; } count++; if(a=='n'||a=='N') { count--; break; } } op(); } void Menu::output_all() { if(count==0) cout<<"亲,你还没有存储的联系人哦!"; else for(int i=0;i<count;i++) { Re[i].people_display(); Re[i].Date_display(); } } void Menu::Clean_Message() { int number; int d; int a=0; cout<<"请输入要删除联系人的ID号:"; cin>>number; for(int c=0;c<10;c++) { for(int i=0;i<count;i++) if(Re[i].compare_ID2(Re[i],number)==1) { d=i; a=1; break; } if(a==0) { cout<<"输入有误!请重新输入:"; cin>>number; } } for(;d<=count;d++) Re[d]=Re[d+1]; count--; op(); } void Menu::change_message() { char a; int b; int number; string c; int d; int x=0; char e; cout<<"请输入要修改联系人的ID号:"; cin>>number; for(int f=0;f<10;f++) { for(int i=0;i<count;i++) if(Re[i].compare_ID2(Re[i],number)==1) { d=i; x=1; break; } if(x==0) { cout<<"输入有误!请重新输入:"; cin>>number; } } cout<<"请输入要修改联系人信息的方面(例如A,B):"; cin>>a; if(a=='A') { cout<<"请重新输入年:"; cin>>b; Re[d].change_year(b); } if(a=='B') { cout<<"请重新输入月:"; cin>>b; Re[d].change_month(b); } if(a=='C') { cout<<"请重新输入日:"; cin>>b; Re[d].change_day(b); } if(a=='D') { cout<<"请重新姓名:"; cin>>c; Re[d].change_name(c); } if(a=='E') { cout<<"请重新输入手机号:"; cin>>c; Re[d].change_mobilephone(c); } if(a=='F') { cout<<"请重新输入座机号:"; cin>>c; Re[d].change_telephone(c); } if(a=='G') { cout<<"请重新输入联系人关系:"; cin>>c; Re[d].change_relation(c); } if(a=='H') { cout<<"请重新输入地址:"; cin>>c; Re[d].change_address(c); } if(a=='I') { cout<<"请重新输入性别:"; cin>>c; Re[d].change_sex(c); } cout<<"是否查看修改后的信息(回复“N(或n)”否,回复“Y(或y)”是):"; cin>>e; if(e=='y'||e=='Y') { Re[d].people_display(); Re[d].Date_display(); } op(); } void Menu::search_num() { char choice; cout<<"请选择以何种方式查询(A或B):"; cin>>choice; if(choice=='A') { int number; int d; int a=0; cout<<"请输入要查询联系人的ID号:"; cin>>number; for(int c=0;c<100;c++) { for(int i=0;i<count;i++) if(Re[i].compare_ID2(Re[i],number)==1) { d=i; a=1; break; } if(a==0) { cout<<"输入有误!请重新输入:"; cin>>number; } } if(a==1) { Re[d].people_display(); Re[d].Date_display(); } } if(choice=='B') { int a=0; int d; string Name; cout<<"请输入要查询联系人的关系:"; cin>>Name; for(int c=0;c<100;c++) { for(int i=0;i<count;i++) if(Re[i].compare_relation1(Re[i],Name)==1) { d=i; a=1; break; } if(a==0) { cout<<"输入有误!请重新输入:"; cin>>Name; } } if(a==1) { Re[d].people_display(); Re[d].Date_display(); } } op(); } void Menu::read_fromfile() { int I; string mo; string te; string ad; string na; string se; string re; int y,m,d; ifstream infile("people.txt",ios::in); if(!infile) { cerr<<"err!"<<endl; exit(1); } infile>>count; for(int i=0;i<count;i++) { infile>>I>>na>>se>>re>>mo>>te>>ad>>y>>m>>d; Re[i].set_allE(I,na,se,re,mo,te,ad,y,m,d); } infile.close(); op(); } void Menu::save_tofile() { ofstream outfile("people.txt",ios::out); if(!outfile) { cerr<<"err!"<<endl; exit(1); } outfile<<count<<endl; for(int i=0;i<count;i++) { outfile<<setiosflags(ios::left); outfile<<setw(10)<<Re[i].get_ID()<<" "<<setw(6)<<Re[i].get_name()<<" "<<setw(4)<<Re[i].get_sex()<<" "<<setw(8)<<Re[i].get_relation()<<" "<<setw(11)<<Re[i].get_mobilephone()<<" "<<setw(7)<<Re[i].get_telephone()<<" "<<setw(4)<<Re[i].get_address()<<" "; outfile<<setw(4)<<Re[i].get_year()<<setw(2)<<Re[i].get_month()<<setw(2)<<Re[i].get_day()<<endl; } outfile.close(); op(); } void Menu::op() { while(1) { menu(); cout<<"请输入操作序号:"; int n; cin>>n; switch(n) { case 1:input_all();break; case 2:save_tofile();break; case 3:read_fromfile();break; case 4:output_all();break; case 5:search_num();break; case 6:change_message();break; case 7:Clean_Message();break; case 8:order_message();break; case 9:exit(1);break; } } } ////////////////////////////////// int main() { Menu em; em.op(); return 0; }4.2、运行结果 4.3、心得体会 感觉这次的课程设计就像一次小型的复习,在设计中自己学习中的一些记忆不牢固,不清楚的知识点逐一显现,同时又锻炼自己设计程序时的全局观。“我就是程序,程序就是我”希望自己在不断实践中达到如此境界。这次课程设计,通过向别人请教、自己琢磨、向同学解答的形式完成。向别人请教时,不同的思路,不同的见解在交流中交汇,对程序的使用方法的理解更加深刻;自己琢磨时,可以理清自己的设计思路;向同学解答时,锻炼自己对程序专有名词的运用,表达能力。由于,这一学期学的是基础,在自己设计的通讯录管理系统中,总感觉和如今生活中的程序有很大差别,想使自己的程序更完美,却又发现知识有限,从另一方面,激发好奇心,求知欲。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服