版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河北工业大学计算机软件技术基础(VC)课程设计报告学院信息工程学院班级-----姓名-------学号--------成绩______一、题目:设计一个电子通讯录管理系统(04)二、设计思路1、总体设计㈠分析程序的功能电子通讯录是一个小信息系统,记录通讯信息,包括姓名,性别,出生日期,通讯地址,电话号码。具有浏览,增加,删除,查询,插入等功能。㈡系统总体结构:该程序分为:显示功能、追加功能、删除功能、查询功能、插入功能和调用界面(主函数)六个模块①显示功能,电子通讯录的浏览,完成全部通讯录信息的显示;②追加功能,在原有数据资料的基础上按顺序增加记录,可以一次完成若干条信息的输入;③删除功能,按照记录的ID或姓名等删除通讯信息,执行删除后,查询是否被删除,显示通讯录的内容;④查询功能,给出姓名,查找该记录并显示;⑤插入功能,给出插入位置,执行插入后,查询是否被插入,显示通讯录的内容;⑥调用界面,使各个功能的操作界面清晰美观。2、各功能模块的设计:①显示功能,通讯录信息利用循环使其输出;②追加功能,询问输入个数,使其能将要输入的信息用循环录入;③删除功能,先显示出信息,让使用者选择要删除的数据,用后面数据覆盖掉;④查询功能,分别使用折半查找法和顺序查找法进行查找;⑤插入功能,利用循环使数据分别向后移动,新数据插入空出位置;⑥调用界面,是主函数,利用switch与break实现各功能的调用。3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。1)开始数据结构没有理清楚,认真学习完,能把它弄明白;2)程序设计要求采用多个cpp文件的方式,需要独立自主的学习,也是设计中的一个难题4、你所设计的程序最终完成的功能说明你编制的程序能完成的功能具有浏览,插入,增加,删除,查询,结束等功能。准备的测试数据及运行结果浏览插入增加查询删除结束三、程序清单本程序包含main.cpp、read.cpp、append.cpp、delete.cpp、search.cpp、insert.cpp、和head.h七个文件1、main.cpp文件清单#include<iostream.h>#include<string.h>#include"head.h"voidmain()//主程序文件{ intt=3,x; recorddate[50]={{"莎莎","女",{1991,10,28},{"江西抚州","344700"}, {,"317291121"}},{"苟斌","男",{1990,11,22}, {"青海西宁","081257"},{,"571286435"}},{"小罗","男", {1988,10,24},{"四川自贡","643222"},{,"732096630"}}};//存储三条通讯信息while(1) { cout<<"\t\t-------------------主菜单--------------------\n"<<endl; cout<<"\t\t\t1.Read(浏览记录)"<<endl; cout<<"\t\t\t2.Append(追加记录)"<<endl; cout<<"\t\t\t3.Delete(删除记录)"<<endl; cout<<"\t\t\t4.Search(查询记录)"<<endl; cout<<"\t\t\t5.Insert(插入记录)"<<endl; cout<<"\t\t\t6.Exit(程序结束)"<<endl; cin>>x; switch(x) { case1:date_read(date,t,x);break; case2:date_append(date,t,x);break; case3:date_delete(date,t,x);break; case4:date_search(date,t,x);break; case5:date_insert(date,t,x);break; case6:break; default:cout<<"error(输入错误,重输)\n"<<endl;break; } if(x==6) break; } }2、read.cpp文件清单#include<iostream.h>//浏览通讯录程序块#include"head.h"voiddate_read(recorddate[],intt,int&x)//定义浏览通讯录信息函数{ cout<< "序号姓名性别出生日期住址邮编电话号码QQ号码" <<endl; for(inti=0;i<t;i++) cout<<i+1<<""<<date[i].name<<""<<date[i].sex<< ""<<date[i].birth.year<<"."<<date[i].birth.month<<"."<<date[i].birth.day<< ""<<date[i].add.addr<<""<<date[i].add.post<<""<<date[i].num.tel<< ""<<date[i].num.QQ<<endl; cout<<endl;}3、append.cpp文件清单4#include<iostream.h>//增加通讯录程序块#include"head.h"voiddate_append(recorddate[],int&t,int&x)//定义增加通讯录函数{ intn; cout<<"请输入将要录入信息的通讯人个数:"; cin>>n; for(inti=t;i<t+n;i++) { cout<<"姓名:"; cin>>date[i].name; cout<<"性别:"; cin>>date[i].sex; cout<<"出生年月日:"; cin>>date[i].birth.year>>date[i].birth.month>>date[i].birth.day; cout<<"家庭住址:"; cin>>date[i].add.addr; cout<<"邮编:"; cin>>date[i].add.post; cout<<"电话号码:"; cin>>date[i].num.tel; cout<<"QQ号码:"; cin>>date[i].num.QQ; } t+=n; cout<<"增加通讯录信息后通讯录信息记录如下:"<<endl; date_read(date,t,x);//引用浏览通讯录函数 cout<<endl;}4、delete.cpp文件清单#include<iostream.h>//删除某条通讯记录信息程序块#include"head.h"voiddate_delete(recorddate[],int&t,int&x)//定义删除通讯录信息函数{ intn; date_read(date,t,x); cout<<"请输入要删除的通讯人序号:"; cin>>n; for(inti=n-1;i<t;i++) date[i]=date[i+1]; t--; cout<<"删除该条通讯信息后记录信息如下:"<<endl; date_read(date,t,x);//引用浏览通讯录函数 cout<<endl;}5、search.cpp文件清单#include<iostream.h>//按姓名查询通讯录信息程序块#include<string.h>#include"head.h"voiddate_search(recorddate[],intt,int&x)//定义查询通讯录函数{charnam[20]; intM; cout<<"请输入要查询的通讯人姓名:"; cin>>nam; cout<<"查询方法:\n1.顺序查找法\n2.折半查找法"<<endl; cin>>M; if(M==1) { for(inti=0;i<t;i++) { if(strcmp(date[i].name,nam)==0)//顺序法查询通讯录中是否有该通讯人 break; } if(i==t)//如果没有该通讯人 cout<<"通讯录中没有该通讯人。"<<endl; if(i<t)//如果存在该通讯人 cout<<"序号姓名性别出生日期住址邮编电话号码QQ号码"<<endl; cout<<i+1<<""<<date[i].name<<""<<date[i].sex<< ""<<date[i].birth.year<<"."<<date[i].birth.month<<"."<<date[i].birth.day<< ""<<date[i].add.addr<<""<<date[i].add.post<<""<<date[i].num.tel<< ""<<date[i].num.QQ<<endl; cout<<endl; } elseif(M==2)//折半法查找查询通讯录中是否有该通讯人 { inti,j; recordperson; for(i=0;i<t-1;i++) for(j=0;j<t-1-i;j++) if(strcmp(date[j].name,date[j+1].name)>0) { person=date[j]; date[j]=date[j+1]; date[j+1]=person; } intlow=0,high=t-1,mid; while(low<=high) { mid=(low+high)/2; if(strcmp(nam,date[mid].name)==0) { cout<<"序号姓名性别出生日期住址邮编电话号码QQ号码"<<endl; cout<<mid+1<<""<<date[mid].name<<""<<date[mid].sex<< ""<<date[mid].birth.year<<"."<<date[mid].birth.month<<"."<<date[mid].birth.day<< ""<<date[mid].add.addr<<""<<date[mid].add.post<<""<<date[mid].num.tel<< ""<<date[mid].num.QQ<<endl; break; } elseif(strcmp(nam,date[mid].name)<0) high=mid-1; else low=mid+1; } if(low>high)cout<<"通讯录中没有该通讯人。\n"<<endl; cout<<endl; }}6、insert.cpp文件清单#include<iostream.h>//在指定位置插入通讯记录信息程序块#include"head.h"voiddate_insert(recorddate[],int&t,int&x)//定义插入通讯录信息函数{ intn; do { date_read(date,t,x); cout<<endl; cout<<"请输入要插入通讯信息的位置序号"<<"(小于"<<t+1<<"):"; cin>>n; if(n>=t+2) cout<<"输入位置序号错误。"<<endl; }while(n>=t+2); for(inti=t;i>n-1;i--) date[i]=date[i-1]; cout<<"姓名:"; cin>>date[n-1].name; cout<<"性别:";cin>>date[n-1].sex;cout<<"出生年月日:";cin>>date[n-1].birth.year>>date[i].birth.month>>date[i].birth.day;cout<<"家庭住址:";cin>>date[n-1].add.addr;cout<<"邮编:";cin>>date[n-1].add.post;cout<<"电话号码:"; cin>>date[n-1].num.tel;cout<<"QQ号码:"; cin>>date[n-1].num.QQ; t++; cout<<"插入该通讯信息后记录信息如下:"<<endl; date_read(date,t,x);//引用浏览通讯录函数}7、head.h文件清单structbirthday//出生日期结构体{ intyear; intmonth; intday;};structaddress//通讯地址结构体{charaddr[50]; charpost[10];};structnumber//通讯号码结构体{ chartel[20]; charQQ[10];};structrecord//通讯记录结构体{charname[20]; charsex[10]; birthdaybirth; addressadd; numbernum;};voiddate_read(record
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025山东滨州无棣县中政土地产业集团有限公司及权属公司招聘工作人员14人笔试历年典型考点题库附带答案详解
- 吕梁市柳林县2025-2026学年第二学期三年级语文第八单元测试卷(部编版含答案)
- 黄石市铁山区2025-2026学年第二学期二年级语文期末考试卷部编版含答案
- 青岛市城阳区2025-2026学年第二学期四年级语文第八单元测试卷(部编版含答案)
- 张掖地区临泽县2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- 地质灾害风险评估与验收技术方案
- 黔南布依族苗族自治州瓮安县2025-2026学年第二学期二年级语文第七单元测试卷部编版含答案
- 吐鲁番地区托克逊县2025-2026学年第二学期三年级语文第七单元测试卷(部编版含答案)
- 2026湖北长江产业资产经营管理有限公司所属企业招聘12人备考题库及参考答案详解(a卷)
- 2026广东省盐业集团有限公司校园招聘备考题库含答案详解(综合题)
- 《批判性思维 原书第10版 》读书笔记PPT模板思维导图下载
- 静力切割拆除施工方案
- GB/T 26542-2011陶瓷砖防滑性试验方法
- 团队领导力课件
- 丰收罗鼓民乐合奏乐谱
- 主体分部工程验收方案
- 工业机器人第六章操作臂动力学课件
- 砂子岭社区财务公开表(XX3年一季度)
- 贵州理工《中国近现代史纲要》教案第3章 辛亥革命与君主专制制度的终结
- 造粒车间生产管理制度
- 给排水专业主要设备材料技术要求2020
评论
0/150
提交评论