收藏 分销(赏)

C程序设计通讯录管理系统.doc

上传人:a199****6536 文档编号:3902051 上传时间:2024-07-23 格式:DOC 页数:31 大小:244KB 下载积分:12 金币
下载 相关 举报
C程序设计通讯录管理系统.doc_第1页
第1页 / 共31页
C程序设计通讯录管理系统.doc_第2页
第2页 / 共31页


点击查看更多>>
资源描述
C程序设计通讯录管理系统 31 2020年4月19日 文档仅供参考 《c++通讯录管理系统》 学号: 班级:软件八班 姓名:付博 指导教师:沙晨明 目录 1系统设计目标及意义、功能介绍································· 3 2系统的详细设计思路 ·································3 3系统运行效果图 ·································11 4系统设计、开发过程中的问题 ·································13 5课程设计心得体会 ·································13 6附录源代码及简要说明 ·································13 一、系统设计目标及意义、功能介绍 (一) 系统设计的目标及意义 通讯录管理系统的建立是为了有效节省同学,朋友,客户间日常交流的投资(指时间,精力),其设计理念很简单,变传统的纸张与笔录方式为计算机自动化进行通讯录信息管理系统,既省时间又提高效率。本通讯录管理系统是一个非常通用的管理系统,运用Visual C++,构建MFC平台,用户能够经过图像窗口菜单进行信息录入、删除、查找,直观方便。 (二) 系统设计的功能介绍 1、录入成员信息。基本信息:姓名、性别、出生年月日、民族等。 2、删除一个成员信息。 3、修改成员信息并保存。 4、能够按姓名对成员信息进行检索并将检索结果显示在屏幕上。 5、能够按专业对成员信息进行检索并将检索结果显示在屏幕上。 6、显示所有成员信息。 7、能够利用图形菜单的形式进行管理。 二、系统的详细设计思路 (一)系统的总体框架 (二) 通讯录对象的主要属性 (三)功能分析 1、联系人管理者 (1)增加联系人: 联系人信息包括姓名、就读学校、班级、专业、家庭地址、家庭联系电话、邮编、本人联系电话这些信息。添加时,内容不能为空。 (2)修改联系人资料: 对已存的联系人信息进行变更、修改。正常情况下,联系人的姓名是不会发生变化的,但考虑到更名的情况还是偶有发生,因此设计为联系人所有资料都允许更改,这样能够灵活应对这些不太常见的情况。 (3)删除联系人: 对选定联系人执行删除操作,为了防止误删除,给使用者一个反悔的机会,在执行删除前要询问使用者是否真的要删除,在得到确认后执行删除操作。 2、联系人信息查询与显示 通讯录使用频率最高的功能就是查询联系人的信息。查询能够查询某个学院、某个专业、某个班级下所有的联系人。而且提供了按姓名和按学号查询的功能,而且同名的人都能够显示。联系人显示窗口示姓名、就读学校、班级、专业、家庭地址、家庭联系电话、邮编、本人联系电话这些信息。 三,系统运行效果图 1,主界面 2,添加联系人信息 3删除联系人信息 4显示所有联系人 5,修改信息 6,查询联系人信息 7,关闭系统 四,系统开发过程中遇到的问题 在初步完成该程序时,我发现程序有一个严重的漏洞,当系统保存的学生信息中有同名或者编号相同的同学时,这时若要执行查询或者删除学生信息时,只能查询到或删除第一个符合条件的同学,这就导致了程序的错误。后来我发现只需要将程序中一些“break”换成“continue”便能够解决这个问题,也就使程序在读到第一个符合条件的同学信息时不结束读取,而是继续读入,这样就能够将同名或编号相同的学生全部查询到,不会漏查。 五,课程设计心得体会 1.在编写程序的过程中,我将课本中的大部分知识又都熟悉了一遍,使我对课本又有了更深的记忆,同时又弄懂了一些以前不太明白的地方。 2.在编程过程中,我还明白了做事要有耐心,决不能心急,要一步一步地来,不清楚的地方一定要查书,用到什么就查什么,比如在用到输入、输出函数时,不知道整型、实型、字符型、字符串用什么格式,就要认真地去看一下教材,切不可自我放弃。 3.我还明白了只要我们肯用心,就没有什么是困难的。或许我们在编程时会遇到各种各样的困难,但只我们用心思考,我们总能从学过的知识中找到解决这些问题的方法,这些 方法或许是书上没有的,或许是没人用过的。当这些问题得到解决时,我发现自己真的很开心! 六,附录源代码及简要说明 #include <iostream> #include <string> #include <stdio.h> #include <string.h> #include <algorithm> #include <conio.h> using namespace std; //各种变量。。 int n; string d=" "; int flag=0; /**************************************************************/ // 上面是一些乱遭的遍量。。 class file{ public: file(string n,string s,string b,string t):name(n),sex(s),banji(b),telephone(t){}; file(){ } ~file(){} void set(string n,string s,string b,string t); // 一系列修改。。。 void alter_name(string n) { name=n; } void alter_sex(string s){ sex=s; } void alter_banji(string b){ banji=b; } void alter_telephone(string t){ telephone=t; } /***************************/ static int getnumber() { return number; } static void addnumber() { number++; } static void cutnumber() { number--; } bool judgename (string s) { string strA=name; transform(strA.begin(), strA.end(), strA.begin(), ::tolower); //全部改为小写 <algorithm> transform(s.begin(), s.end(), s.begin(), ::tolower); if(s==strA) return true; else return false; } bool judgetelephone (string s) { string strA=telephone; if(s==strA) return true; else return false; } void add(); void display(); private: // 名字 性别 生日 单位 参加工作时间 职称 住址 string name,sex,banji,telephone; int status; static int number ; }; file person[100]; int file::number = 2; // 静态 计数器。。。 void file::set(string n,string s,string b,string t) { name=n,sex=s,banji=b,telephone=t; } void file::add() { cout<<"请输入档案信息:"<<endl; cout<<"姓名 "<<"性别 "<<"班级 "<<"电话 "<<endl; string n,s,b,t; cin>>n>>s>>b>>t; name=n,sex=s,banji=b,telephone=t; addnumber(); } void file::display() { cout<<name<<d<<sex<<d<<banji<<d<<telephone<<endl; } /***************************************************************/ // 上面是类的各种定义 下面是系统的各种函数 void init() { person[0].set("Dongquan" ,"man","15-6",""); person[1].set("Tourist" ,"man","15-8",""); return ; } void menu() { cout<<"序号"<<" 姓名"<<" 性别"<<" 班级"<<" 电话"<<endl; } void show() { menu(); for(int i=0;i<file::getnumber() ;i++) { cout<<i+1<<"\t"; person[i].display(); } } int name_search(string s) { int num=-1; for(int i=0;i<file::getnumber() ;i++) { if(person[i].judgename(s)) { person[i].display(); num=i; } } return num; } int telephone_search(string s) { int num=-1; for(int i=0;i<file::getnumber();i++) { if(person[i].judgetelephone(s)) { person[i].display(); num=i; } } return num; } void Main_screen() { system("CLS"); cout<<"\n\n\n\n"<<endl; if(!flag) { cout<<"\t\t---------欢迎使用档案信息管理系统--------"<<endl; } else { cout<<"\t\t-----------------------------------------"<<endl; } cout<<" "<<endl <<"\t\t(1) 浏览数据"<<endl <<"\t\t(2) 增加数据"<<endl <<"\t\t(3) 修改数据"<<endl <<"\t\t(4) 查询数据(按姓名,按电话)"<<endl <<"\t\t(5) 删除数据"<<endl <<"\t\t(0) 退出程序"<<endl <<""<<endl; flag=1; return ; } int main(int argc, char** argv) { init(); head: //重新进入主界面 Main_screen(); cin>>n; system("CLS"); if(n==1) //浏览 { if(!file::getnumber()) { cout<<"列表内无数据"<<endl; cout<<"添加数据请按 1 "<<endl<<"按其它任意键返回主界面。 "<<endl; int x; cin>>x; if(x==1) { system("CLS"); goto plus; } } else { show(); cout<<"列表浏览成功,"<<endl; cout<<"按任意键返回主菜单"<<endl; getch(); system("CLS"); } } else if(n==2) //增加 { plus: ; person[file::getnumber()].add(); cout<<"添加成功,"<<endl; cout<<"按任意键返回主菜单"<<endl; getch(); } else if(n==3) //修改 { { cout<<"是否先浏览一下数据?[Y(y)/N(n)])"<<endl; string s1; cin>>s1; if(s1=="Y"||s1=="y") show(); cout<<"请输入需要修改的档案序号"<<endl; int n3; cin>>n3; //修改什么???? //多个数据修改 单个数据修改。。 cout <<"全部数据修改请按 1) 单个数据修改请按 2)"<<endl; int n4; cin>>n4; if(n==1) { cout<<"姓名"<<"性别"<<"班级"<<"电话"<<endl; string n,s,b,t; cin>>n>>s>>b>>t; person[n3-1].set(n,s,b,t) ; } else { cout<<"修改姓名请按1,性别请按2,班级请按3,电话请按4"<<endl; int n5; cin>>n5; if(n5==1) {cout<<"请输入新的姓名"<<endl; string s4; cin>>s4; person[n3-1].alter_name(s4); } else if(n5==2) { cout<<"请输入新的性别"<<endl; string s4; cin>>s4; person[n3-1].alter_sex(s4); } else if(n5==3) {cout<<"请输入新的班级"<<endl; string s4; cin>>s4; person[n3-1].alter_banji(s4); } else if(n5==4) {cout<<"请输入新的电话号码"<<endl; string s4; cin>>s4; person[n3-1].alter_telephone(s4); } } cout<<"修改成功"<<endl; } } else if(n==4) //查询 { query: cout <<"请选择查询方式: " <<endl<<"1) 姓名 2)电话 " <<endl; int x; cin>>x; if(x==1) { name_query: cout <<"请输入查询的姓名: " <<endl; string na; cin>>na; cout <<"查询结果: " <<endl; int nn=name_search(na); if(nn==-1) { cout <<"很抱歉,没有查询到相关信息: " <<endl; cout <<"重新查找请按 1 : " <<endl; cout <<"返回上级菜单请按 2 : " <<endl; cout <<"返回主页面请按 3 : " <<endl; int mm; cin>>mm; system("CLS"); if(mm==1) { goto name_query; } else if(mm==2) { goto query; } else if(mm==3) { goto head; } } } else { tele: cout <<"请输入查询的电话: " <<endl; string un; cin>>un; cout <<"查询结果: " <<endl; int nn=telephone_search(un); if(nn==-1) { cout <<"很抱歉,没有查询到相关信息: " <<endl; cout <<"重新查找请按 1 : " <<endl; cout <<"返回上级菜单请按 2 : " <<endl; cout <<"返回主页面请按 3 : " <<endl; int mm; cin>>mm; system("CLS"); if(mm==1) { goto tele; } else if(mm==2) { goto query; } else if(mm==3) { goto head; } } } cout<<"按任意键返回主菜单"<<endl; getch(); system("CLS"); } else if(n==5) //删除数据 { reduce : cout<<"是否先浏览一下数据?(Y/N)"<<endl; string s1; cin>>s1; if(s1=="Y"||s1=="y") show(); //删除方式 cout<<"请输入需要删除的数据序号"<<endl; int n2; cin>>n2; for(int i=0;i<file::getnumber();i++) { if(i>=n2) { person[i-1]=person[i]; } } file::cutnumber(); cout<<"删除成功。继续删除请按 1) 、返回主页请按其它任意键"<<endl; int n3; n3=getch(); if(n3==1) goto reduce; } else if(n==0) goto tail; else { cout<<"该选项不存在!按任意键返回主菜单"<<endl; getch(); system("CLS"); goto head; } goto head; tail: //退出程序 system("CLS"); cout<<endl<<endl<<"-----------感谢您使用档案信息管理系统!再见!-----------"<<endl<<endl; return 0; }
展开阅读全文

开通  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 

客服