MFC制作一个简单的通讯录
课程设计MFC通信录
通信录MFC课程设计说明书目录设计总说明 ......................................................................................................................... I I 第1章绪论 (1)选题背景 (1)目的和意义 (1)第2章系统设计 (2)系统总设计 (2)2.1.1题目要求 (2)2.1.2系统功能结构 (2)2.1.3通信录系统流程图 (3)数据库设计 (4)2.2.1数据库需求分析和设计 (4)信息表:用于对用户的大体信息的管理。
(4)E-R图 (4)2.2.1创建数据库 (5)2.2.2创建数据表 (6)系统详细设计 (6)2.3.1创建工程 (6)2.3.2公共类设计 (7)参考文献 (13)设计总说明通信录管理系统是典型的管理系统,其开发主要包括数据库的成立和保护前端应用程序的开发两个方面。
对于前者要求成立起数据库一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易利用等特点。
通过度析,咱们利用MICROSOFT公司的VISUAL C++开发工具,利用其提供的各类面向对象的开发工具,尤其是MFC界面编程,运用对话框、控件等资源,实现界面化的通信录,使其不但具有美观的界面,同时方面用户的操作。
关键词:通信录;Visual C++;数据库选题背景现今时期,网络已经成为人们生活中不可缺少的一部份,世界上的第三媒体—Internet ,它打破了地域时间限制,改变了人们的工作和生活方式,,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的普遍应用,Web站点向用户提供的服务将愈来愈丰硕,愈来愈人性化.计算机在管理中应用的普及,利用计算机实现各类管理势在必行,那咱们此刻如何管理与咱们联系的人的信息呢?有多种方式,比如说,有贮存电话号码得电话上的,有记录电话等信息到本子上的,还有效名片夹寄存名片的,也有记录在WORD文档中或打印出来的,等等很多种形式。
实验二 电话簿的设计
实验二电话簿的设计一、实验目的:使用MFC编写一个具有添加、删除、显示、选择等基本功能的电话簿。
二、实验过程:首先打开C++软件,新建MFC AppWizard[exe],创建基本对话框类型的应用程序,其余选项保持其默认值不变。
在新建立的对话框中添加Button、EditBox,ComboBox,CheckBox,分别编辑名字和排布。
具体如图:其中性别默认为男,关系和职业默认第一项,且只可选一项。
typedef struct info{CString name;名字CString sex;性别CString tel;电话号码int age;年龄BOOL vip;是否vipint relation;关系int job;职业} INFO;建立结构体INFO,保存对话框各控件传递的参数。
在CAddressBook11Dlg中,增加public变量CListBox m_info,CString m_sex,BOOLm_vip,CString m_name,int m_relation,int m_job,int m_age,CString m_tel,增加private变量vector<INFO> vinfo,int curpos。
在头文件中包含#include <vector>,#include <fstream>。
在程序初始化调用CAddressBook11Dlg构造函数时curpos = 0首先编写添加功能,创建添加按钮响应函数void CAddrBook11Dlg::OnInsert(){// TODO: Add your control notification handler code hereUpdateData(TRUE);传入信息INFO info;创建结构体 = m_name;info.sex = m_sex;info.tel = m_tel;info.age = m_age;info.vip = m_vip;info.relation = m_relation;info.job = m_job;把输入的各项信息传入结构体中vinfo.push_back(info); 把结构体压入数组curpos = vinfo.size()-1;把项数传给curposm_list_info.AddString(m_name);在屏幕上显示m_list_info.SetCurSel(curpos);保存项数}编写删除函数,添加删除键响应函数void CAddrBook11Dlg::OnDelete(){// TODO: Add your control notification handler code here if(curpos <0 || curpos >= vinfo.size())如果不在范围内return;m_list_info.DeleteString(curpos);删除curpos对应项vinfo.erase(vinfo.begin()+curpos);if(vinfo.size() == 0)如果所有对象都已经删除{m_sex = _T("男");m_vip = FALSE;m_name = _T("");m_relation = 0;m_job = 0;m_age = 0;m_tel = _T("");UpdateData(FALSE);恢复初始值并且清空屏幕}if(curpos >= vinfo.size())如果选中项超过范围则回至第一项curpos = 0;m_list_info.SetCurSel(curpos);保存项数OnSelchangeListInfo();}下面编写如何通过“上一条”按键使屏幕选中上一条void CAddrBookDlg11::OnLast(){// TODO: Add your control notification handler code here int size = vinfo.size();把数组大小传给sizeif(size == 0) return;为空则返回curpos--;当前项项数减1if(curpos < 0)若小于0则返回至最后一项curpos = size -1;INFO info = vinfo.at(curpos);m_name = ;m_sex = info.sex;m_teleph = info.tel;m_vip = info.vip;m_relation = info.relation;m_job = info.job;把选中项上一项的信息传给当前参数m_list_info.SetCurSel(curpos);保存项数UpdateData(FALSE);显示信息}“下一条”按钮编写原理类似:void CAddrBookDlg11::OnNext(){// TODO: Add your control notification handler code here int size = vinfo.size();if(size == 0) return;curpos++;当前所在项项数加1if(curpos >= size)若超出范围curpos = 0;返回至第一条INFO info = vinfo.at(curpos);m_name = ;m_sex = info.sex;m_telephone = info.telephone;m_vip = info.vip;m_relationship = info.relationship;m_job = info.job;m_list_info.SetCurSel(curpos);UpdateData(FALSE);}下面是鼠标点击选中void CAddrBookDlg11::OnSelchangeListInfo(){// TODO: Add your control notification handler code here curpos = m_list_info.GetCurSel();获得当前鼠标选中项项数INFO info = vinfo.at(curpos);m_name = ;m_sex = info.sex;m_tel = info.tel;m_vip = info.vip;m_relation = info.relation;m_job = info.job;UpdateData(FALSE);}然后编写保存功能void CAddressBook11Dlg::OnSave(){// TODO: Add your control notification handler code here ofstream fout("info.txt");创建文件fout << vinfo.size() << "\n";输出大小for(int i=0;i<vinfo.size();i++)对于每一项{fout << vinfo.at(i).name.GetBuffer(0) <<"\n";fout << vinfo.at(i).sex.GetBuffer(0) <<"\n";fout << vinfo.at(i).age <<"\n";fout << vinfo.at(i).tel.GetBuffer(0) <<"\n";fout << vinfo.at(i).vip <<"\n";fout << vinfo.at(i).relation <<"\n";fout << vinfo.at(i).job <<"\n";输出各信息}fout.close();输出完毕}最后在OnInitDialog中加入:ifstream fin("info.txt");输入info.txt中内容if(fin.fail())如果文件不存在return TRUE;int size = 0;fin>>size;INFO info;char buffer[256];设置缓冲fin.getline(buffer,256);for(int i=0;i<size;i++)输入每一项信息{fin.getline(buffer,256); = CString(buffer);fin.getline(buffer,256);info.sex = CString(buffer);fin.getline(buffer,256);info.tel = CString(buffer);fin>>info.age;fin>>info.vip;fin>>info.relation;fin>>info.job;输入至info结构体fin.getline(buffer,256);vinfo.push_back(info);将此项压入数组m_info.AddString();在屏幕上显示该项姓名}fin.close();输入完毕if(vinfo.size()<=0) return TRUE;数组为空curpos = 0;默认选中第一项info = vinfo.at(curpos);m_name = ;m_sex = info.sex;m_age = info.age;m_tel = info.tel;m_vip = info.vip;m_relation = info.relation;m_job = info.job;将当前项信息传递m_info.SetCurSel(curpos);保存项数UpdateData(FALSE);输出信息return TRUE;三、实验总结:第二个实验比起第一个要稍微复杂些,但是上课时老师仔细讲过编写方法,所以虽然耗时更长,而且费了很大劲回忆,但还是有惊无险地编完了。
简单的通讯录管理系统设计与实现MFC通讯录报告
//将指针指向需要插入的记录处
while(curp->next && k<pos)
{
curp=curp->next;
k++;
//记录当前记录数
}
node *p=new node("","","",0);
//增加一个新节点
// 插入新节点 p->prev=curp->prev; curp->prev->next=p; p->next=curp; curp->prev=p;
(三)高级功能
(1)增加以电话号码为关键字,查找并显示该记录;
(2)在追加记录的函数中,增加:若追加记录中姓名与通讯录中已有记录同名,则不能追 加;
(3)插入记录:给出插入位置,执行插入后,查询并显示是否被插入。
二、程序运行界面截图及其说明 (一)基本功能界面
(1)开启界面
按钮仅追加和退出可使用。编辑框均为灰色,处于只读状态,当前记录为 0/0。
// 在指定位置完成插入
1、单击“追加”按钮,调用追加函数 OnBtinsert();
2、单击“追加搜索”按钮,调用 OnBtsure() 函数。
3、查找追加记录的名字是否重复(参考“按姓名查找”函数)。
将 curp 指针从头指针开始向后移,保存当前记录数 k。
4、找到姓名时,如果 (k >= 总记录数),则表明:遍历了所有记录,没有找到重复 姓名。否则,表明:未遍历完就找到相同姓名。
5、若重复姓名,删除追加的记录。
将 curp 指针移到最后,删除节点。
附:
//============== 追加查询,同名不能追加 ===============
mfc界面的通讯录管理系统
课程设计(论文)题目:通讯录管理系统院(系):__________________ 专业班级:姓名:学号:指导教师:年月日设计总说明我的题目是“通讯录管理系统”,具有对联系人进行增删改查等功能,只有一个窗口,窗口左边是联系人的详细信息,右边是联系人姓名列表。
窗口上列出所有的“通讯录管理系统”的操作。
例如:增加联系人,删除联系人,插入联系人,按姓名查找联系人,按电话查找联系人等,界面简洁方便,功能齐全。
本程序利用MFC界面编程,运用对话框,控件等资源实现界面化的通讯录,使其不但具有美观的界面,同时方便了用户的操作。
关键字:通讯录,信息管理系统方便效率目录设计总说明 (2)1.设计目的 (3)2.问题描述 (4)3.需求分析 (4)3.1 数据需求 (4)3.2 基本功能需求 (4)3.3 非功能性需求 (4)4.概要设计 (5)4.1 数据结构 (5)4.2 系统包含的函数 (5)4.3 函数间的关系 (6)4.4 系统功能模块图 (7)5.详细设计 (8)5.1 结构体的详细定义 (8)5.2 系统函数详细介绍 (8)5.3 系统功能模块介绍 (10)5.4 具体模块设计 (10)5.4.1增加联系人: (11)5.4.2:插入联系人 (12)5.4.3:删除联系人 (13)5.4.4:保存联系人 (14)5.4.5:查找联系人 (15)5.4.6:其它辅助功能 (15)6.调试分析 (16)7.使用说明 (17)8.设计总结 (20)9.参考文献 (21)《数据结构》课程设计通讯录管理系统1.设计目的“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。
对于从事计算机科学及其应用的科技工作者来说,数据结构与算法是必须透彻地掌握的重要基础。
学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。
课程设计是加强学生实践能力的一个强有力手段。
基于MFC的通讯录设计(含源文件)
基于MFC的通讯录设计学院:通信与信息工程学院专业:通信与信息系统基于MFC的通讯录设计摘要本设计实现一个简单电子通讯录。
该通讯录通过对学生的姓名,学号,电话,EMAIL的记录,便于信息的高效利用。
它的设计过程严格遵从软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性。
使用人员能快捷简单地进行操作。
即时准确地获得需要的查询的结果,充分降低了查找的难度和节约了时间,对人们的生活有一定的帮助。
在课程设计中,系统开发平台为Windows XP,程序设计环境采用Visual C++6.0,在程序设计中,采用了面向对象解决问题的方法。
关键词 Visual C++;通讯录;MFC;按钮控件The design of the address bookbased on the MFCfanzhong(Grade 2010 class 4in Communication College S100101025)Abstract: the aim of the design is a simple electronic address book, which is the realization of the efficient use of the information through the records of the names, the students’ numbers, telephone numbers and EMAIL of students. The procedures of its design must comply with the methods of the software engineering strictly. Its system is provided with a good interface, necessary interactive information and a better stability. The users can have operation quickly and simply on it and acquire the results of searching which is needed timely and accurately, so that the difficulties of searching, reduced and the time is saved and some help is offered for the people. In the design of the project, the development platform of system is Windows XP, the design circumstance of program is Visual C++6.0, the method adopted is the object-orientedly solving the problems.Key words: Visual C++; the address book; MFC; button control0引言本课程通过设计一个简单通讯录,来减少查询通信信息的时间,提高工作效率。
MFC《个人通讯录》课程设计报告
前言21世纪是IT普及的世界,到处都存在IT的身影,身处其中,实时通讯已是占据它不可或缺的地位。
因此,一个好的、强大的通讯录系统已成为企业、个人通讯工作的好坏不但可以直接影响到企业、个人人际关系,而且会间接的影响到企业、个人经济利益和社会地位。
随着社会的发展,科技的进步,计算机的应用在社会各领域中都得到了普及,越来越多的人都感受到利用计算机进行各类管理的科学和便捷;认识到通讯信息系统对于通讯工作的重要性。
利用计算机进行通讯管理是必然趋势,通讯录系统是各类工作中不可缺少的。
所以在这次课程设计中,我选择开发通讯录管理系统。
通讯录管理系统的功能主要有增加记录,删除记录。
这就要求它应该能够为用户提供有好美观的窗口界面、充足可靠的信息数据、简单方便的维护手段和灵活多变的查询方式以及快捷而准确的查询结果。
所以,对于通讯录管理系统的设计主要包括数据库的建立、维护以及应用程序的开发两个方面。
对于前者而言要求建立起数据一致性及完整性强、数据安全性好的数据库。
对于后者而言则要求具备应用程序功能全,易使用等,运行稳定等特点。
因此,拟选用的开发软件是Microsoft公司出品的Visual C++6.0 MFC平台进行系统的开发。
目录1 课题综述 (1)1.1通讯录管理信息系统来源 (1)1.2通讯录管理系统的意义 (1)1.3预期目标 (1)1.4面对的问题 (2)1.5需解决的关键技术等 (2)2 通讯录管理系统分析 (2)2.1涉及的基础知识 (2)2.2解决问题的基本思路 (8)2.3总体方案 (8)2.4功能模块框图 (8)3 通讯录管理系统设计 (9)3.1部署连接(图) (9)3.2算法描述 (9)3.3详细流程图 (10)4 代码编写 (11)4.1插入记录的代码 (11)4.2删除记录的代码 (11)4.3刷新记录的代码 (12)4.4修改记录的代码 (12)5 运行与测试 (12)1 课题综述通讯录管理系统是一个数据库应用系统,员工的所有信息都是保存在数据库中。
c语言课程设计通讯录
c语言课程设计通讯录好的,我可以帮助您设计一个简单的通讯录程序。
下面是一个示例代码,实现了通讯录的基本功能,包括添加联系人、显示联系人列表、查找联系人、删除联系人和修改联系人信息。
c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100 // 通讯录最大容量// 定义联系人结构体typedef struct {char name[20]; // 姓名char phone[15]; // 电话号码char email[30]; // 邮箱地址} Contact;// 定义通讯录结构体typedef struct {Contact contacts[MAX_CONTACTS]; // 联系人数组int size; // 当前联系人数量} AddressBook;// 添加联系人void add_contact(AddressBook *book) {if (book->size >= MAX_CONTACTS) {printf("通讯录已满,无法添加联系人。
\n"); return;}printf("请输入联系人姓名:");scanf("%s", book->contacts[book->size].name); printf("请输入联系人电话号码:");scanf("%s", book->contacts[book->size].phone); printf("请输入联系人邮箱地址:");scanf("%s", book->contacts[book->size].email); book->size++;printf("联系人已添加。
C语言简单通讯录
C语言简单通讯录#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<windows.h>#define LEN sizeof(struct student)#define TITLE_T "╔═══════════════╗\n"#define NAME "║※姓名: 号码: ║\n"#define GESHI "║※%-15s %-11s ║\n"#define BOTTOM_B "╚═══════════════╝\n"#define NEIRONG stu[i].name,stu[i].numstruct student //定义通讯录结构体{char name[15]; //姓名char num[12]; //号码};struct student stu[50]; //定义结构体数组void in(); //添加联系人void show(); //显示联系人void order(); //按字符排序void del(); //删除联系人void modify(); //修改联系人void menu(); //主菜单void total(); //计算总人数void search(); //查找联系人void main() //主函数{system("title 某某某通讯录"); //设置cmd窗口标题system("mode con cols=85 lines=35");break;case 5:modify();break;case 6:total();break;default:printf("输入编码有误!正在返回...");Sleep(3000);break;}menu(); //执行完功能再次显示菜单界面scanf("%d",&n);}}void menu() //自定义函数实现菜单功能{system("cls");system("date /t");system("time /t");printf("\n\n\n\n\n");printf("\t\t╔══════════某某某通讯录══════════╗\n");printf("\t\t║※0. 退出║\n");printf("\t\t║※ 1. 添加║\n");printf("\t\t║※ 2. 查看║\n");printf("\t\t║※ 3. 查找║\n");printf("\t\t║※ 4. 删除║\n");printf("\t\t║※ 5. 修改║\n");printf("\t\t║※ 6. 联系人总数║\n");printf("\t\t╚══════════════════════════╝\n\n");printf("\t\t请选择(0-6):");}void in() //添加联系人{int i,m=0; //m是记录的条数char ch[2];FILE *fp; //定义文件指针if((fp=fopen("data","ab+"))==NULL) //打开指定文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;//统计当前记录条数}fclose(fp);if(m==0)printf("当前无记录!\n");else{system("cls");printf(TITLE_T);printf(NAME);for(i=0;i<m;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}if((fp=fopen("data","wb"))==NULL) //以只写二进制方式打开文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}for(i=0;i<m;i++)fwrite(&stu[i] ,LEN,1,fp); //如果原来有记录,就将记录写入到磁盘文件中printf("是否添加?(y/n):");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要添加联系人{back: printf("请输入联系人姓名:");scanf("%s",&stu[m].name); //输入姓名for(i=0;i<m;i++)if(strcmp(stu[i].name,stu[m].name)==0){printf("您输入的联系人已存在!\n");goto back;}printf("请输入联系人号码:");scanf("%s",stu[m].num);if(fwrite(&stu[m],LEN,1,fp)!=1) //将新录入的信息写入指定的磁盘文件{printf("保存'%s'失败!是否继续?(y/n):",stu[m].name);scanf("%s",ch);continue;}else{printf("添加'%s'成功!\n",stu[m].name);m++;}printf("是否继续?(y/n):"); //询问是否继续scanf("%s",ch);}printf("正在返回...");fclose(fp);order();return;}void show() //显示联系人{FILE *fp;int i,m=0;if((fp=fopen("data","ab+"))==NULL) //打开指定文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;}fclose(fp);if(m>0){printf(TITLE_T);printf(NAME);for(i=0;i<m;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}elseprintf("当前无记录!");printf("按任意键返回...");getch();}void del() //删除联系人函数{FILE *fp;int i,j,m=0;char sname[15];char ch[2];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件,正在返回...\n");return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}printf("请输入联系人姓名:");scanf("%s",sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) break;if(i==m){printf("找不到'%s'!正在返回...",sname);return;}printf("已找到'%s',是否删除?(y/n)",sname);scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要进行删除{for(j=i;j<m;j++)stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置m--;//记录的总个数减1printf("删除'%s'成功!\n",sname);}if((fp=fopen("data","wb"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}for(j=0;j<m;j++)//将更改后的记录重新写入指定的磁盘文件中if(fwrite(&stu[j] ,LEN,1,fp)!=1){printf("保存失败!正在返回...\n");Sleep(3000);}fclose(fp);show();}void search() //自定义查找函数{FILE *fp;int i,m=0;char sname[15];char ch[2];if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}back1: printf("请输入联系人姓名:");scanf("%s",&sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) //查找输入的号码是否在记录中{printf("已找到'%s',是否显示?(y/n)",sname);scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf(TITLE_T);printf(NAME);printf(GESHI,NEIRONG); //将查找出的结果按指定格式输出printf(BOTTOM_B);}else{printf("正在返回...");Sleep(3000);return;}}if(i==m+1){printf("找不到'%s',是否继续?(y/n):",sname); //未找到要查找的信息scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要继续查找联系人goto back1;printf("正在返回...");Sleep(3000);return;}printf("按任意键返回...\n");getch();}void modify(){ FILE *fp;int i,j,m=0;char sname[15];if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}printf("请输入联系人姓名:\n");scanf("%s",&sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) //检索记录中是否有要修改的信息break;if(i<m){printf("已找到'%s',请修改!\n",sname);printf("请输入联系人姓名:\n");scanf("%s",stu[i].name);//输入名字printf("请输入联系人号码:\n"); //输入号码scanf("%s",stu[i].num);}else{printf("找不到'%s'!正在返回...",sname);Sleep(3000);return;}if((fp=fopen("data","wb"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}for(j=0;j<m;j++) //将新修改的信息写入指定的磁盘文件中if(fwrite(&stu[j] ,LEN,1,fp)!=1){printf("保存'%s'失败!正在返回...",sname);Sleep(3000);return;}fclose(fp);order();show();}void total() //自定义计算总人数函数{FILE *fp;int m=0;if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;printf("此通讯录总共有%d名联系人!\n",m); //将统计的个数输出fclose(fp);printf("\n按任意键返回...\n");getch(); //输入任意键返回}void order() //自动排序函数{FILE *fp;struct student t; //用于交换信息int i=0,j=0,m=0; //i,j用于循环if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m] ,LEN,1,fp)==1)m++;for(i=0;i<m-1;i++)for(j=i+1;j<m;j++) //双重循环实现联系人比较并交换if((strcmp(stu[i].name,stu[j].name))>0){t=stu[i];stu[i]=stu[j];stu[j]=t;}if((fp=fopen("data","wb"))==NULL){printf("文件打开失败!正在返回...\n");Sleep(3000);return;}for(i=0;i<m;i++)//将重新排好序的内容重新写入指定的磁盘文件中if(fwrite(&stu[i],LEN,1,fp)!=1){printf("排序失败!正在返回...");Sleep(3000);return;}fclose(fp);}。
使用MFC和ADO实现不规则窗口通讯录
pr fte otcn lg s s s tiis t l fr x lnn o t b n b u p ct n i F n DO. a s h s t h o i . r u , sn a e o pa igh w r gaot p lao s t M C adA to eW e o e A a el t b e i i o i a i i wh
关 键 词 : 据 库 ; 户界 面 ; DO ; C; c e 数 用 A MF A c s s 中图 分 类 号 : P 1 T 31 文 献标 识 码 : A 文 章编 号 : 0 9 3 4 (0 00 — 5 2 0 1 0 — 0 42 1 )7 1 4 — 2
Th e i ton ofp e R al za i hon boo wih FC nd e k t M a AD O
I SSN 1 0 — O 4 9 3 4 0
E m i j @cc. t n — a :s cc e. l h n a
h t : w w. n sn t n t / w d z .e . p/ a T l 8 — 5 — 6 0 6 5 9 9 4 e: 6 5 5 9 9 3 + 1 60 6
L a U Tin—c a ho
(c o l f o ue Sin ea dT c n lg , ia iesyo nn dT c n lg , z o 2 6 C ia S h o mp tr c c n eh o yCh v r t f oC e o n Un i Mii a eh o y Xu h u2 1 , hn ) g n o 1 1
C mp  ̄ K o l g n e h oo y电脑 知 识 与技术 o u r n we ea dT c n l d g
简单的MFC VC C++ 通讯录设计步骤
}
}
10)删除记录
void CC02View::OnButtonDelete()
{
// TODO: Add your control notification handler code here
ቤተ መጻሕፍቲ ባይዱtry
{
//设置为删除记录
m_pSet->Delete();
//更新数据集
m_pSet->Requery();
6.添加代码
1)给C02View添加函数
2)用数据集的内容更新视图
void CC02View::RefreshData()
{
//将数据集的内容赋给相应的成员变量
m_sname=m_pSet->m_name;
m_sqq=m_pSet->m_qq;
m_stel=m_pSet->m_tel;
m_semail=m_pSet->m_email;
ResizeParentToFit();
try
{
//创建并打开数据集
m_pSet=new CC02Set();
m_pSet->Open();
//用数据集中的数据更新视图
RefreshData();
}
catch(CDBException* pe)
{
//报告相应错误
AfxMessageBox(pe->m_strError);
5)移动到最后一条记录
void CC02View::OnRecordLast()
{
// TODO: Add your command handler code here
//移动到最后一条记录
MFC制作简单电话本
Visual C++课程设计题目名称:电话号码本班级:计算1001姓名:王立学号:1101220115指导教师:徐琳茜完成时间:2012.1.61绪论随着计算机软件、硬件技术的飞速发展,管理系统已应用于各个领域之中.班级通讯录管理系统实现了由复杂、重复性手工操作向人机简便操作的转化,它运用计算机完成数据收集、修改、查询、删除以及统计等工作,提高了管理人员工作效率,避免繁重的业务量造成的人为错误,还可运用信息共享加快信息传达。
2题目描述利用Visual C++实现一个简单的电话本系统。
该系统能够实现电话本的一些基本操作。
3功能分析(1)程序能够建立一个可存放30条以上记录的电话号码本。
(2)程序能够对记录进行增加、删除、修改操作。
(3)记录字段包含姓名、电话、单位内容。
姓名可用英文、或拼音代替;电话号码可以是手机、或座机号码;单位字段的内容可简单填写办公室号码(4)能够通过姓名、或电话查询记录并显示查询结果。
4系统设计4.1 系统整体结构根据系统功能的要求,可以将系统分解成几个功能模块,它如图1所示。
4.2 主要模块设计4.2.1基类的设计对话框类的层次如图2所示:删除修改查询图2 电话本对话框类层次4.2.2主要算法描述增加人员信息功能描述:打开文件,判断文件是否为空,若为空,将标题信息写入文件。
刷新数据,再将添加的对话框数据赋值给已定义的结构体数组,再把信息重新写入文件保存。
删除人员信息功能描述:先获取要删除人员的姓名,再打开文件,判断文件是否为空,为空,提示,不为空,然后查找要删除人员的姓名,若无,提示,若有,删除该人员信息,再在循环中将已删除人员后面的所有人员向前移,再把信息重新写入文件保存。
查找人员信息功能描述:打开文件,判断文件是否为空,为空,提示,不为空,根据选择,按姓名查找,若有,则用DisplayOne输出,按号码查找,若有,用DisplayOne输出。
4.2.3文件存储文件存储格式文件的存储格式主要有文本格式和二进制格式。
原创c语言课程设计通讯录
原创C语言课程设计通讯录1. 引言通讯录是一种用于存储联系人信息的工具,对于个人和组织来说,它是必不可少的。
在本篇文章中,我将介绍一个基于C语言的通讯录设计方案。
通过这个课程设计项目,我们可以学习到如何使用C语言实现基本的数据处理和文件操作。
2. 功能需求分析在设计通讯录之前,我们需要明确所要实现的功能。
根据常见的通讯录需求,以下是我们的功能设计:•添加联系人信息:通过输入姓名、手机号码、邮箱等信息,将联系人添加到通讯录中。
•删除联系人信息:根据姓名或手机号码查找并删除指定联系人。
•修改联系人信息:根据姓名或手机号码查找并修改指定联系人的信息。
•查找联系人信息:根据姓名或手机号码查找并显示指定联系人的信息。
•显示全部联系人信息:将通讯录中的所有联系人信息按照一定的格式显示出来。
•保存通讯录:将通讯录中的联系人信息保存到文件中。
3. 数据结构设计在实现通讯录的功能之前,我们需要设计合适的数据结构来存储联系人信息。
考虑到联系人的信息较为复杂,并且需要支持动态增删改查的操作,我们选择使用链表来存储联系人信息。
每个节点包含姓名、手机号码、邮箱等信息,以及指向下一个节点的指针。
struct Contact {char name[50];char phone[20];char email[50];struct Contact *next;};4. 程序流程设计4.1 主菜单设计通讯录程序的主要界面是一个菜单,让用户选择不同的功能。
使用一个无限循环来保持程序一直运行,用户可以输入不同的指令来选择要执行的功能。
```c while (1) { // 显示菜单 printf(。
MFC课程设计报告-一个简单的通讯录应用程序
一、设计目标与内容1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思路和方法;3.掌握用VC++开发应用程序的的一般步骤和方法;4.能够利用所学的基本知识,设计一个简单的通讯录应用程序,具有以下功能:①用文件来保存通讯录信息(必须实现的功能)②编程实现通讯录记录的添加、删除、修改、浏览和查询(必须实现的功能)。
二、设计要求1.用VC++进行编码,实现应用程序的功能。
注重编码质量,代码要有适当的注释;2.提交设计报告一份(课程设计任务书、目录、主要的数据结构、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。
总体设计通讯录应用程序,是一个基于单文档单视图的应用程序。
我们在基于但文档视图开发的同时,通过对文档菜单的操作和相应函数的响应实现一个简单的通讯录功能。
在通讯录中,我们能够添加学生信息、修改学生信息、删除学生信息、预览学生信息和保存学生信息。
进行一系列简单的操作。
详细设计新建工程COM_book2新建工程COM_kook2,默认选择单文档应用程序,完成。
在COM_book2View.cpp中初始化文档视图界面添加函数如下:void CCOM_book2View::OnInitialUpdate(){CListView::OnInitialUpdate();CListCtrl &m_ListCtrl=GetListCtrl();CString strHeader[5]={"姓名","专业","电话","QQ","生日"};int nLong[]={150,200,250,200,200};for(int nCol=0;nCol<5;nCol++)m_ListCtrl.InsertColumn(nCol,strHeader[nCol],LVCFMT_ LEFT,nLong[nCol]);UpdateData(FALSE);}程序运行后,界面如下程序运行主界面图1-1在这里,我们可以看到通过我们单文档视图中菜单“通讯录操作”可以进行相应的学生信息的添加、删除、修改、查询、浏览、保存和打开。
mfc通讯录c课程设计
mfc通讯录 c 课程设计一、课程目标知识目标:1. 让学生理解MFC(Microsoft Foundation Classes)的基本概念及其在Windows应用程序开发中的应用。
2. 掌握通讯录程序的基本功能,如添加、删除、修改和查询联系人。
3. 学习C++面向对象编程思想,理解类与对象的关系。
技能目标:1. 培养学生使用MFC进行Windows应用程序开发的能力。
2. 学会使用C++进行数据存储和读取,实现通讯录数据的持久化。
3. 提高学生的编程实践能力,能够独立完成一个简单的MFC通讯录程序。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,增强学习动力。
2. 培养学生良好的编程习惯,注重代码规范和可维护性。
3. 培养学生的团队协作精神,学会与他人共同解决问题。
课程性质:本课程属于实践性较强的编程课程,以MFC通讯录项目为主线,引导学生掌握C++编程和Windows应用程序开发。
学生特点:学生已经具备一定的C++基础,了解面向对象编程思想,但对MFC框架和Windows应用程序开发较为陌生。
教学要求:结合学生特点,课程以案例驱动,注重理论与实践相结合,强调动手实践,让学生在完成项目的过程中掌握MFC通讯录的开发技能。
通过课程学习,使学生能够具备独立开发类似项目的能力。
二、教学内容1. MFC基础- 理解MFC框架结构及其工作原理。
- 掌握MFC应用程序的创建和运行步骤。
2. C++面向对象编程- 复习C++中的类与对象、继承与多态等基础知识。
- 应用面向对象编程思想设计通讯录程序。
3. 通讯录功能实现- 实现联系人信息的添加、删除、修改和查询功能。
- 数据存储:文件读写操作,实现数据的持久化。
4. 界面设计与事件处理- 学习使用MFC控件设计用户界面。
- 掌握MFC事件处理机制,实现界面与程序逻辑的交互。
5. 调试与优化- 学习使用调试工具进行程序调试。
- 分析并优化程序性能,提高通讯录程序运行效率。
做一个通讯录
求助!帮忙做个个人通讯录2.建立Contact项目(1)新建名为Contact的Windows Application应用程序(2)在Visual Studio的编辑界面中选中MainForm,设置其Name属性为MainForm,其Text 属性为“个人通讯录”。
(3)向MainForm窗体添加Listview控件,Label控件、TextBox和Button控件,按照图所示控件位置。
控件类型Name属性Text属性Enable属性Label lblName 姓名:TrueLabel lblPhone 电话:TrueLabel lblAddress 地址:TrueTextBox txtName FalseTextBox txtPhone FalseTextBox txtAddress FalseButton btnOK 确定FalseButton btnRE 取消FalseButton btnAdd 添加联系人信息TrueButton btnEdit 修改选中联系人信息TrueButton btnDel 删除选中联系人信息TrueButton btnAbout 关于本软件True设置txtAddress控件的Multiline属性为True、设置ListView控件的Name属性为listView,FullRowSelect属性为True,Gridlines属性为True,View属性为Details。
为ListView添加四列,Name属性为fContactID、fName、fPhone和fAddress,对应列的Text 属性分别为编号、姓名、电话、联系地址。
如图所示:3.显示联系人信息(1)注意:需要导入System.Data.SqlClient命名空间(2)该段程序作用是读取数据库中联系人信息方法:显示联系人信息这部分程序步骤首先应先连接数据库,再读取数据库中的信息。
由于读取数据库中的信息这部分程序在后面的模块中还会使用到,因此可以采用自定义方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
目录 退出
三、案例设计
1.“通讯录”对话框的设计 从控件列表框中【选择】按钮控件和列 表控件置于对话框上,【修改】按钮控 件的属性,其设计结果如图所示。
第6页 共46页
目录
目录 退出
对话框的设计结果
第7页 共46页
目录
目录 退出
在“查看”菜单中选择Class
Wizard命令,在打 开的对话框中切换到Member Variable选项卡。 选中列表控件的IDC_LIST1,单击【Add Variable】按钮,添加成员变量的名称为m_list, 类型为CListCtrl,单击【OK】按钮返回,设计 结果如图所示。
第12页 共46页
目录
目录 退出
输入对话框设计结果
第13页 共46页
目录
目录 退出
在“通讯录”对话框中,双击【插入记录】按
钮,弹出对话框,如图所示,保持函数名默认 值为OnBUTTONinsert(),单击【OK】按钮进 行代码编辑。依此类推,处理其他按钮。
添加成员函数
第14页 共46页
目录
目录
目录 退出
第33页 共46页
目录
目录 退出
第34页 共46页
目录
目录 退出
第35页 共46页
目录
目录 退出
第36页 共46页
目录
目录 退出
第37页 共46页
目录
目录 退出
第38页 共46页
目录
目录 退出
第39页 共46页
目录
目录 退出
第40页 共46页
目录
目录 退出
第41页 共46页
第15页 共46页
目录
目录 退出
四、案例实现
第16页 共46页
目录
目录 退出
第17页 共46页
目录
目录 退出
第18页 共46页
目录
目录 退出
第19页 共46页
目录
目录 退出
第20页 共46页
目录
目录 退出
第21页 共46页
目录
目录 退出
第22页 共46页
目录
目录 退出
第23页 共46页
目录 退出
(1)【插入记录】按钮的成员函数为: void CExample5Dlg::OnBUTTONinsert() (2)【删除记录】按钮的成员函数为: void CExample5Dlg::OnBUTTONdelete() (3)【修改记录】按钮的成员函数为: void CExample5Dlg::OnBUTTONmodify() (4)【保存记录】按钮的成员函数为: void CExample5Dlg::OnBUTTONsave() (5)【导入】按钮的成员函数为: void CExample5Dlg::OnBUTTONload()
目录
目录 退出
第24页 共46页
目录
目录 退出
第25页 共46页
目录
目录 退出
第26页 共46页
目录
目录 退出
第27页 共46页
目录
目录 退出
第28页 共46页
目录
目录 退出
第29页 共46页
目录
目录 退出
第30页 共46页
目录
目录 退出
第31页 共46页
目录
目录 退出
第32页 共46页
第8页 共46页
目录
目录 退出
对话框类成员变量的设计结果
第9页 共46页
目录
目录 退出
在文件视图FileView中单击Source Files目录,双击 Example5Dlg.cpp选项打开该文件。在文件中找到 OnInitDialog()函数,在// TODO: Add extra initialization here的提示下,添加以下代码: m_list.ModifyStyle(0,LVS_REPORT); //修改显示风格 m_list.InsertColumn(0,"姓名 ",LVCFMT_CENTER,70,NULL); //添加“姓名”列 m_list.InsertColumn(1,"电话 ",LVCFMT_CENTER,100,NULL); //添加“电话”列 m_list.InsertColumn(2,"Email",LVCFMT_CENTER ,150,NULL); //添加“Email”列
目录
目b)“通讯录”对话框 目录 目录 退出
功能说明
插入记录:用于输入个人信息,包括姓名、电
话和E-mail。 删除记录:用于删除一条选定的记录。 修改记录:用于修改个人信息。 保存记录:用于将个人信息写入文件。 导入:用于将个人信息从文件中导入。 退出:退出应用程序。
目录 目录 退出
第10页 共46页
2.“输入信息”对话框设计
添加对话框,双击该对话框,创建一个新类,添加类名为Inputdlg, 如图所示。
创建输入对话框类1
第11页 共46页
目录
目录 退出
在“查看”菜单中选择Class
Wizard命令, 在打开的对话框中切换到Member Variable选项卡。选中列表控件的 IDC_EDIT1选项,单击【Add Variable】 按钮,添加Member variable name为 m_name,类型为CString,单击【OK】 按钮返回,依次处理IDC_EDIT2、 IDC_EDIT3,最终设计结果如图所示。
案例三十 通讯录
本案例知识要点 文件操作 对话框设计 CListCtrl的使用
第1页 共46页
目录
目录 退出
一、案例需求
案例描述
使用C++输入/输出流设计一个基于对话框的通
讯录,用于编辑和保存用户的姓名、电话和Email信息。
案例效果图
本案例的效果如图(a)和图(b)所示。
第2页 共46页
目录
目录 退出
第42页 共46页
目录
目录 退出
第43页 共46页
目录
目录 退出
第44页 共46页
目录
目录 退出
五、案例总结与提高
案例总结
本案例重点在于ListView控件的使用,如果读
者感觉有难度,那么只要理解【插入记录】按 钮和【导入】按钮函数的实现就可以了,要认 真体会本案例是如何读入和存储数据的。 本案例在输入个人信息时,在Email的EDIT控 件中检查了是否有“@”字符的存在。 通讯录是以book.txt文件保存在当前目录下的, 请读者打开观看,同时也可以直接在book.txt文 件中添加人员,并在程序中导入。
第4页 共46页
目录
目录 退出
二、案例分析
根据案例需求,需要利用MFC环境定义一个对话框类, 提供程序的初始界面,其中包括一个列表控件用于显 示通讯录的信息,同时还包括【插入记录】单击、 【删除记录】单击、【修改记录】按钮、【保存记录】 按钮、【导入数据】按钮和【退出】按钮;另外定义 了一个用于插入记录和修改记录的对话框,其中包括 用于编辑通讯录信息的文本框等控件。 案例的核心是列表控件的使用,记录的插入、删除、 修改、判断是否为空等功能都直接利用了列表控件本 身的方法。案例没有使用数据库进行系统的开发,记 录的保存是基于输入/输出流使用文件实现了信息的存 储。
第45页 共46页
目录
目录 退出
案例提高 修改【退出】按钮,使其具有检查插入内容 是否保存的功能,如果没有保存,则进行提 示。 修改【保存】和【导入】按钮,在单击时调 用系统的“保存”和“打开”对话框,可以 由用户选择保存和导入路径。
第46页 共46页
目录
目录 退出