通讯录程序ppt
- 格式:ppt
- 大小:83.00 KB
- 文档页数:79
通讯录C语言程序设计通讯录C语言程序设计是一个常见的编程练习项目,它可以帮助初学者熟悉C语言的基本语法和数据结构。
下面是一个简单的通讯录程序设计示例,包括了程序的基本框架、功能实现和代码实现。
程序设计目标设计一个通讯录程序,能够实现以下功能:1. 添加联系人2. 删除联系人3. 修改联系人信息4. 显示所有联系人5. 按姓名查找联系人6. 保存联系人信息到文件7. 从文件加载联系人信息程序设计思路1. 数据结构设计:使用结构体`struct Contact`来存储联系人信息,包括姓名、电话号码、电子邮件等。
2. 功能模块划分:将程序分为多个功能模块,如添加、删除、修改、显示、查找、保存和加载。
3. 用户界面设计:设计一个简单的文本界面,使用循环让用户选择相应的操作。
4. 文件操作:使用C语言的文件操作函数来实现联系人信息的持久化存储。
数据结构定义```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100#define MAX_NAME 50#define MAX_PHONE 20#define MAX_EMAIL 50struct Contact {char name[MAX_NAME];char phone[MAX_PHONE];char email[MAX_EMAIL];};struct Contact contacts[MAX_CONTACTS];int contactCount = 0;```功能实现1. 添加联系人```cvoid addContact() {if (contactCount >= MAX_CONTACTS) {printf("Contact list is full.\n"); return;}printf("Enter name: ");scanf("%49s", contacts[contactCount].name);printf("Enter phone: ");scanf("%19s", contacts[contactCount].phone);printf("Enter email: ");scanf("%49s", contacts[contactCount].email);contactCount++;}```2. 删除联系人```cvoid deleteContact() {int i, index;printf("Enter name of the contact to delete: ");scanf("%49s", contacts[index].name);for (i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, contacts[index].name) == 0) {index = i;break;}}if (i == contactCount) {printf("Contact not found.\n");} else {for (; i < contactCount - 1; i++) {contacts[i] = contacts[i + 1];}contactCount--;printf("Contact deleted.\n");}}```3. 修改联系人信息```cvoid modifyContact() {// 类似于删除联系人,找到联系人后修改信息}```4. 显示所有联系人```cvoid displayContacts() {for (int i = 0; i < contactCount; i++) {printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}}```5. 按姓名查找联系人```cvoid findContact() {char name[MAX_NAME];printf("Enter name to find: ");scanf("%49s", name);for (int i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, name) == 0) { printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);return;}}printf("Contact not found.\n");}```6. 保存联系人信息到文件```cvoid saveContactsToFile() {FILE *file = fopen("contacts.txt", "w");if (file == NULL) {printf("Error opening file.\n");return;}for (int i = 0; i < contactCount; i++) {fprintf(file, "%s,%s,%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}fclose(file);printf("Contacts saved to file.\n");}```7. 从文件加载联系人信息```cvoid loadContactsFromFile() {FILE *file = fopen("contacts.txt", "r");if (file == NULL) {printf("。
西安科技大学2009级C++实验报告面向对象技术实验报告(通讯录程序)1.实验目的1.1课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C++语言又是最常见,功能最强大的一种高级语言,因此做好C++语言课程设计是十分必要的。
2.功能简介1.1实现以下功能:1) 通讯录编辑(添加、删除);2) 按不同的项进行查找;3) 对已存在的通讯录按不同的项排序;4) 将通讯录写入文件;5) 从文件读入通讯录。
3.流程图4.代码#include<iostream.h>#include<fstream.h>#include<string.h>struct student //结构体{char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];};class inter{private:student st[35];public:void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();void format();int back(){cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back;cin>>back;if(back=='R'||back=='r')return 1;elsereturn 0;}void print(int i){cout<<"学号:"<<st[i].no<<endl;cout<<"姓名:"<<st[i].name<<endl;cout<<"地址:"<<st[i].address<<endl;cout<<"电话号码:"<<st[i].tel_no<<endl;cout<<"邮编:"<<st[i].post_code<<endl;cout<<"E_MAIL:"<<st[i].e_mail<<endl;}};//主函数首页int main(){inter a;a.format();char select1;cout<<endl;top:cout<<"\t\t 通信技术0901 " <<endl <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl<<"\t\t※※" <<endl<<"\t\t※通迅录※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 1. 通讯录编辑. 4. 按序排列 . ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 2. 查询联系人. 5. 将文件读入程序. ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 3. 将资料写入文件. 6. 格式化(慎用). ※" <<endl<<"\t\t※※" <<endl<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl<<"\t\t"<<endl<<endl<<"\t\t\t选择 :" ;cin>>select1;switch(select1){case '1':cout<<" (1)添加:"<<endl;cout<<" (2)删除:"<<endl;cout<<" (3)修改:"<<endl;char select2;cout<<" 请选择:"<<endl;cin>>select2;switch(select2){case '1':cout<<" 输入添加的资料:"<<endl;char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];cout<<" 输入学号:"<<endl;cin>>no;cout<<" 输入姓名:"<<endl;cin>>name;cout<<" 输入地址:"<<endl;cin>>address;cout<<" 输入电话号码:"<<endl;cin>>tel_no;cout<<" 输入邮编:"<<endl;cin>>post_code;cout<<" 输入E_mail:"<<endl;cin>>e_mail;a.add(no,name,address,tel_no,post_code,e_mail);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_add;cin>>back_add;if(back_add=='R'||back_add=='r')goto top;elsegoto bottom;break;case '2':cout<<" 输入要删除人的姓名:"<<endl;char name2[20];cin>>name2;a.del(name2);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_del;cin>>back_del;if(back_del=='R'||back_del=='r')goto top;elsegoto bottom;break;case '3':cout<<" 输入需要修改人的姓名:"<<endl;char name3[20];cin>>name3;if(a.correct(name3))goto top;else goto bottom;break;}break;case '2':cout<<" (1)根据姓名查找"<<endl;cout<<" (2)根据学号查找"<<endl;char select3;cout<<" 请选择: ";switch(select3){case '1':char name4[20];cout<<" 输入姓名: ";cin>>name4;a.find2(name4);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')goto top;elsegoto bottom;break;case '2':char no4[13];cout<<" 输入学号: ";cin>>no4;a.find1(no4);cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_f2;cin>>back_f2;if(back_f2=='R'||back_f2=='r')goto top;elsegoto bottom;break;}break;case '3':a.write();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')goto top;elsegoto bottom;break;case '4':cout<<" (1)按学号排序:"<<endl;cout<<" (2)按姓名排序:"<<endl;cout<<" 请选择:";cin>>select4;switch(select4){case '1':a.list1();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back;cin>>back;if(back=='R'||back=='r')goto top;elsegoto bottom;break;case '2':a.list2();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;elsegoto bottom;break;}break;case '5':a.read();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_r;cin>>back_r;if(back_r=='R'||back_r=='r')goto top;elsegoto bottom;break;case '6':cout<<" 请确认删除所有资料!(Y/N) ";char select5;cin>>select5;if(select5=='Y'||select5=='y')a.format();cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ";char back_f;cin>>back_f;if(back_f=='R'||back_f=='r')goto top;elsegoto bottom;break;}bottom:cout<<" ★★★★★★★★★★★★欢迎使用本软件!★★★★★★★★★★★ "<<endl;return 0;}//添加联系人void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){int x=1;for(int i=0;i<35;i++){if(!strcmp(st[i].no,"0")){strcpy(st[i].address,address);strcpy(st[i].e_mail,e_mail);strcpy(st[i].name,name);strcpy(st[i].no,no);strcpy(st[i].post_code,post_code);strcpy(st[i].tel_no,tel_no);x=0;}if(x==0)break;}}//删除联系人void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name)){strcpy(st[i].address,"0");strcpy(st[i].e_mail,"0");strcpy(st[i].name,"0");strcpy(st[i].no,"0");strcpy(st[i].post_code,"0");strcpy(st[i].tel_no,"0");}else x=0;}if(x==0)cout<<" error:输入姓名错误!"<<endl; }//修改联系人int inter::correct(char name[30]){int x;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name))x=i;}char select;cout<<" (1)修改姓名:"<<endl;cout<<" (2)修改学号:"<<endl;cout<<" (3)修改地址:"<<endl;cout<<" (4)修改邮编:"<<endl;cout<<" (5)修改电话号码:"<<endl;cout<<" (6)修改E_MAIL:"<<endl;cout<<" 请选择:";cin>>select;switch(select){case '1':cout<<" 输入要修改的姓名:";char name1[30];cin>>name1;strcpy(st[x].name,name1);cout<<" 修改成功!"<<endl;return back();break;case '2':cout<<" 输入要修改的学号:";char no1[13];cin>>no1;strcpy(st[i].no,no1);cout<<" 修改成功!"<<endl;return back();break;case '3':cout<<" 输入要修改的地址:";char address1[100];cin>>address1;strcpy(st[x].address,address1);cout<<" 修改成功!"<<endl;return back();break;case '4':cout<<" 输入要修改的邮编:";char post_code1[7];cin>>post_code1;strcpy(st[x].post_code,post_code1);cout<<" 修改成功!"<<endl;return back();break;case '5':cout<<" 输入要修改的电话号码:";char tel_no1[12];cin>>tel_no1;strcpy(st[x].tel_no,tel_no1);cout<<" 修改成功!"<<endl;return back();break;case '6':cout<<" 输入要修改的E_MAIL:";char e_mail1[40];cin>>e_mail1;strcpy(st[x].e_mail,e_mail1);cout<<" 修改成功!"<<endl;return back();break;}}//按学号查询联系人void inter::find1(char no[13]){int x,y=1,z=1;for(int i=0;i<35;i++){if(!strcmp(st[i].no,no)){x=i;z=0;}else y=0;if(z==0)break;}if(y==0)cout<<" 输入的学号查找不到!!!"<<endl;print(x);}//按姓名查询联系人void inter::find2(char name[20]){int x,y=1,z=1;for(int i=0;i<35;i++){if(!strcmp(st[i].name,name)){x=i;z=0;}else y=0;if(z==0)break;}if(y==0)cout<<" 输入的姓名查找不到!!!"<<endl;print(x);}//读取文件void inter::read(){char name1[20];cout<<" 输入你要导入的文件名: ";cin>>name1;strcat(name1,".txt");ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){for(int k=0;k<35;k++){if(time==0){strcpy(no,line);time=1;for(int i=0;i<120;i++){if(no[i]==':'){i++;for(int j=0;j<13;j++){st[k].no[j]=no[i];i++;}}}file.getline(line,120,'\n');}if(time==1){strcpy(name,line);time=2;for(int i=0;i<120;i++){if(name[i]==':'){i++;for(int j=0;j<20;j++){st[k].name[j]=name[i];i++;}}}file.getline(line,120,'\n');}if(time== 2){strcpy(address,line);time=3;for(int i=0;i<120;i++){if(address[i]==':'){i++;for(int j=0;j<100;j++){st[k].address[j]=address[i];i++;}}}file.getline(line,120,'\n');}if(time==3){strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){if(tel_no[i]==':'){i++;for(int j=0;j<12;j++){st[k].tel_no[j]=tel_no[i];i++;}}}file.getline(line,120,'\n');}if(time==4){strcpy(post_code,line);time=5;for(int i=0;i<120;i++){if(post_code[i]==':'){i++;for(int j=0;j<7;j++){st[k].post_code[j]=post_code[i];i++;}}}file.getline(line,120,'\n');}if(time==5){strcpy(e_mail,line);time=0;for(int i=0;i<120;i++){if(e_mail[i]==':'){i++;for(int j=0;j<40;j++){st[k].e_mail[j]=e_mail[i];i++;}}}file.getline(line,120,'\n');}}}file.close();}//写入文件void inter::write(){char name[20];cout<<" 输入要保存的文件名 ";cin>>name;strcat(name,".txt");ofstream savefile(name);for(int i=0;i<35;i++){savefile << "学号:"<<st[i].no<<endl;savefile << "姓名:"<<st[i].name<<endl;savefile << "地址:"<<st[i].address<<endl;savefile << "电话号码:"<<st[i].tel_no<<endl;savefile << "邮编:"<<st[i].post_code<<endl;savefile << "E_MAIL:"<<st[i].e_mail<<endl;}savefile.close();}//按学号排序void inter::list1(){for(int i=0;i<34;i++){for(int j=0;j<35-i;j++){if(strcmp(st[j].no,st[j+1].no)>0){char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);strcpy(st[j+1].no,no);strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);strcpy(address,st[j].address);strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address);strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no);strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code);strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail);}}}for(int k=0;k<35;k++){int x=0;if(strcmp(st[k].no,"0")){print(k);x=1;}if(x==1){cout<<endl;cout<<"-----------------------------------------------------------------------------"<<endl;}}}//按姓名排序void inter::list2(){for(int i=0;i<34;i++){for(int j=0;j<35-i;j++){if(strcmp(st[j].name,st[j+1].name)>0){char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];strcpy(no,st[j].no);strcpy(st[j].no,st[j+1].no);strcpy(st[j+1].no,no);strcpy(name,st[j].name);strcpy(st[j].name,st[j+1].name);strcpy(st[j+1].name,name);strcpy(address,st[j].address);strcpy(st[j].address,st[j+1].address);strcpy(st[j+1].address,address);strcpy(tel_no,st[j].tel_no);strcpy(st[j].tel_no,st[j+1].tel_no);strcpy(st[j+1].tel_no,tel_no);strcpy(post_code,st[j].post_code);strcpy(st[j].post_code,st[j+1].post_code);strcpy(st[j+1].post_code,post_code);strcpy(e_mail,st[j].e_mail);strcpy(st[j].e_mail,st[j+1].e_mail);strcpy(st[j+1].e_mail,e_mail);}}}for(int k=0;k<35;k++){int x=0;if(strcmp(st[k].no,"0")){print(k);x=1;}if(x==1){cout<<endl;cout<<"---------------------------------------------------------------------"<<endl;}}}//格式化void inter::format(){for(int i=0;i<35;i++){strcpy(st[i].address,"0");strcpy(st[i].e_mail,"0");strcpy(st[i].name,"0");strcpy(st[i].no,"0");strcpy(st[i].post_code,"0");strcpy(st[i].tel_no,"0");}}5.代码分析结构数组:struct student //结构体{char no[13]; //学号char name[20]; //姓名char address[100]; //地址char tel_no[12]; //电话char post_code[7]; //邮编char e_mail[40]; //E-mail}class inter //派生类{private: //派生类增加或替代的私有成员student st[35];public: //派生类增加或替代的公有成员void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);//成员函数,添加联系人void del(char name[20]);//成员函数,删除联系人void find1(char no[13]);//成员函数,按学号查找联系人void find2(char name[20]);//成员函数,按姓名查找联系人void list1();//成员函数,排序联系人void list2();//成员函数,排序联系人int correct(char name[20]);//成员函数,修改联系人void read();//成员函数,读取文本文件void write();//成员函数,写入文本文件void format();//成员函数,格式化内存保存的数据int back()//成员函数,返回首页void print(int i)//成员函数,输出显示}6.改进措施1)用string指针增加QQ项,显示所有联系人及查询联系人项目,除去格式化项目,以免造成不必要的麻烦。
通讯录课程设计程序一、教学目标本节课的学习目标包括以下三个方面:1.知识目标:学生需要掌握通讯录的基本概念、结构和常见格式,了解通讯录在日常生活和工作中的应用。
2.技能目标:学生能够熟练使用手机或电脑中的通讯录软件,创建、编辑和管理联系人信息,以及运用通讯录进行电话拨号、短信发送等功能。
3.情感态度价值观目标:培养学生珍惜人际关系、尊重他人隐私的良好品质,意识到通讯录在人际沟通中的重要作用,提高生活和工作效率。
二、教学内容本节课的教学内容主要包括以下几个部分:1.通讯录的基本概念和结构:介绍通讯录的定义、分类和常见格式,让学生了解通讯录的组成要素,如姓名、电话号码、邮箱地址等。
2.通讯录软件的使用方法:讲解如何在手机或电脑上安装、打开通讯录软件,以及如何创建、编辑和管理联系人信息。
3.通讯录的应用场景:举例说明通讯录在日常生活和工作中的应用,如电话拨号、短信发送、聚会邀请等。
4.尊重他人隐私:教育学生珍惜人际关系,尊重他人隐私,不随意泄露他人联系方式。
三、教学方法本节课采用以下几种教学方法:1.讲授法:教师讲解通讯录的基本概念、结构和常见格式,以及通讯录软件的使用方法。
2.演示法:教师现场演示如何在手机或电脑上操作通讯录软件,让学生直观地了解具体操作步骤。
3.案例分析法:教师提供一些实际应用场景,让学生分析通讯录在这些场景中的作用,提高学生对通讯录重要性的认识。
4.小组讨论法:学生分组讨论如何创建、编辑和管理联系人信息,以及如何在实际生活中运用通讯录。
四、教学资源本节课的教学资源包括以下几个方面:1.教材:教师自编的教材或教学大纲,内容包括通讯录的基本概念、结构和常见格式,以及通讯录软件的使用方法。
2.参考书:为学生提供一些关于通讯录的参考书籍,以便学生在课后进一步巩固所学知识。
3.多媒体资料:教师准备的一些教学课件、视频或图片,用于辅助讲解和演示。
4.实验设备:为学生提供手机、电脑等设备,让学生实地操作通讯录软件,提高实际操作能力。