通讯录程序设计
2023年程序设计通讯录管理系统 通讯录管理系统python课程设计(五篇)

2023年程序设计通讯录管理系统通讯录管理系统python课程设计(五篇)范文为教学中作为模范的文章,也经常用来指写作的模板。
经常用于文秘写作的参考,也可以作为演讲材料编写前的参考。
那么我们该如何写一篇较为完善的范文呢?下面是我为大家收集的优秀范文,供大家参考借鉴,盼望可以关心到有需要的伴侣。
cout“(2)删除:” cout“(2)按姓名排序:” 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;i35;i++)return 0;} {} if(!strcmp(st[i].no,“0”)){}if(x==0)break;strcpy(st[i].address,address);strcpy(st[i].e_mail,e_mail);strc py(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;//删除联系人void inter::del(char name[20]){int x=1;for(int i=0;i35;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:输入姓名错误!” 输入要修改的学号:”;char no1[13];cinno1;strcpy(st[i].no,no1);cout“修改胜利!” cins[h]-kind;箱:“ }cout“想连续修改吗(y/n)”c; }case '6':{存在!请检查输入的正确性!”;“ cout”指令错误!请重新输入!cinc;} }while(c=='y');break;char name[20];bool flag3=0;char c;do{cout“请输入您要删除的人的姓名:” cinname;for(int h=0;h {if(strcmp(name,s[h]-name)==0){flag3=1;i--;do{s[h]=s[h+1];h++;}while(h=i);}}if(flag3==0)cout“您要求删除的对象原来就不cout”要连续删除吗?(y/n)“ cinc;if(c!='y'c!='n'){cout”指令错误!请重新输入!cinc;}}while(c=='y');break;}case '0':{exit(0);break;}}cout“您想连续进行其他操作吗?(y/n)” bool flag4=0; docinw;if(w!='y'w!='n')cout“指令错误!请重新输入!” elseflag4=1;}while(flag4==0);if(w=='y'){cout“※※※※※※※※※※n”“2 按姓名查找n”“3 按类别查找n”“4 插入n”“5 修改n”“6 删除n”“0 退出n”;cinp;}else exit(0);}while(w=='y');for(int x=0;x delete s[x];cout“delete all members!” }</endl;}</i;x++){</endl;</endl;</endl;</i;h++)</endl;</endl;</endl;</endl;</endl;</endl;</i;h++)</endl;</endl;</endl;</endl;break;}</endl;</i;u++)</endl;</i;y++)</name<<“电话号码”<<tel<<“类别”<<kind<<“电子邮箱”<<email<<endl; </endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl<<“类别</endl;</endl;</endl;</endl;</endl;</endl<<“类别</endl;</i;j++)</endl;</endl;</endl;</endl;</endl;</i;u++)</endl;</i;y++)</name<<“电话号码”<<tel<<“类别”<<kind<<“电子邮箱”<<email<<endl; </endl;</endl;</endl;</endl;</endl;</endl;</endl;cout<<“-------”<<endl;print(k);x=1;</endl;</endl;cout<<“---------------”</st[i].e_mail<<endl;</st[i].post_code<<endl;</st[i].tel_no<<endl;</st[i].address<<endl;</st[i].name<<endl;</st[i].no<<endl;</endl;if(!strcmp(st[i].name,name)){</endl;</endl;</endl;return</endl;return</endl;return</endl;return</endl;return</en dl;cout<<“</endl;cout<<“</endl;cout<<“</endl;cout<<“</endl;cout<<“</endl;cout<<“</endl;</endl;}</endl;cout<<“</endl;</endl;char</endl;</endl;</endl;</endl;char</endl;char</endl;cout<<“</endl;</endl<<endl</endl</endl</endl</endl</endl</endl</endl</endl</endl;top:cout<<“tt</st[i].tel_no<<endl;cout<<“邮编:”<<st[i].post_code<<endl;cout<<“e_mail:”<<st[i].e_mail<<endl;</n){< /n)i++;if(i==n){</n)i++;if(i==n){</n)i++;if(i==n){</n)i++;if(i==n){</n-1;j++){</n)i++;if(i==n){</n+1;i++)。
通讯录程序设计

通讯录程序设计设计一个实用的小型通讯录程序,具有添加,查询和删除功能。
由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。
电话号码可由字符和数字组成。
实现功能:(1)系统以菜单方式工作(2)信息录入功能(3)信息浏览功能(4)信息查询功能(5)信息修改功能(6)系统退出功能//WREN编取材网路(适用于VC++)本题有细节上的缺陷,请自身予以修改。
#include <stdio.h>#include <conio.h>#include <string.h>#include <stdlib.h>#define PF printf#define SF scanfint n=0,i;struct address_book{char name[20];char place[20];long num1;long num2;char mail[40];}stud[200];void add(){char j;front1:system("cls");//清屏PF("\n请输入要添加的姓名:");SF("%s",stud[n].name);PF("\n请输入要添加的籍贯:");SF("%s",stud[n].place);PF("\n请输入要添加的电话号码一:");SF("%d",&stud[n].num1);PF("\n请输入要添加的电话号码二:");SF("%d",&stud[n].num2);PF("\n请输入要添加的电子邮箱:");SF("%s",stud[n].mail);getchar();n++;PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front1;//再次输入记录}void del(){int k=0,m,i;char j;front2:system("cls");//清屏PF("\n请输入要删除的联系人:");SF("%d",&m);getchar();for(i=0;i<n;i++)//查找记录if(strcmp(m,stud[i].name)==0){k=1;break;}if(k==1)//删除记录{for(k=i;k<n-1;k++)stud[k]=stud[k+1];n--;PF("已删除\n\n");}else{PF("找不到要删除的记录!\n");PF("按回车键返回:");getchar();}PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front2;getchar();}void arrange(){int k,i;struct address_book t;system("cls");//清屏PF("姓名籍贯电话号码一电话号码二电子邮箱\n");for(k=0;k<n-1;k++)for(i=0;i<n-k-1;i++)if(strcmp(stud[i].name,stud[i+1].name)<0){t=stud[i];stud[i]=stud[i+1];stud[i+1]=t;}for(i=0;i<=n-1;i++)PF("%-10s%-8s %-15ld %-15ld %-20s",stud[i].name,stud[i].place,stud[i].num1 ,stud[i].num2,stud[i].mail);PF("按回车键返回!");getchar();getchar();}void change(){int k=0;char j,m[20];front5:system("cls");//清屏PF("\n请输入要修改记录的姓名:");SF("%s",m);getchar();for(i=0;i<n;i++)//查找if(strcmp(m,stud[i].name)==0){k=1;break;}if(k==1){PF("\n");PF("\n请输入修改后的姓名:");SF("%s",stud[i].name);PF("\n请输入修改后的籍贯:");SF("%s",stud[i].place);PF("\n请输入修改后的电话号码一:");SF("%d",&stud[i].num1);PF("\n请输入修改后的电话号码二:");SF("%d",&stud[i].num2);PF("\n请输入修改后的电子邮箱:");SF("%s",stud[i].mail);PF("修改成功\n");getchar();}if(k==0){PF("找不到要修改的记录!\n");PF("按回车键返回:");getchar();}getchar();PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front5;}void find(){int k=0;char j,m[20];front3:system("cls");//清屏PF("\n请输入要修改记录的姓名:");SF("%s",m);getchar();for(i=0;i<n;i++)//查找if(strcmp(m,stud[i].name)==0){k=1;break;}if(k==1){PF("姓名籍贯电话号码一电话号码二电子邮箱\n");PF("%-10s%-8s %-15ld %-15ld %-20s",stud[i].name,stud[i].place,stud[i].num1 ,stud[i].num2,stud[i].mail);}else{PF("找不到该联系人!请重新输入!按回车返回!");getchar();goto front3;}PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front3;}void main(){char j;PF("\n\n\n\n\n\n\t\t\t 欢迎使用简单通讯录");PF("\n\n\n\t\t\t\t制作人:王靖焱");PF("\n\n\n\t\t\t\t 2012年2月");PF("\n\n\n\n\n\n\n\n\n\n\n\n按回车键进入主菜单:");getchar();loop:system("cls");PF("\n");PF("\t\t\t\t ************\n");PF("\t\t\t\t ***主菜单***\n");PF("\t\t\t\t ************\n\n\n\n\n\n");PF("\t\t 1、录入联系人信息2、删除联系人信息\n\n");PF("\t\t 3、查询联系人信息4、联系人信息游览\n\n");PF("\t\t 5、修改联系人信息6、保存退出系统\n\n");PF("\n\n\n\n\n\n\n\n\n请选择[1/2/3/4/5/6]:");j=getchar();if(j=='\n') goto loop;//返回主菜单switch(j){case '1': add();goto loop;//返回主菜单case '2': del();goto loop;case '3': find();goto loop;case '4': arrange();goto loop;case '5': change();goto loop;case '6':{FILE *fp;fp=fopen("student.dat","w");for(i=0;i<n;i++)fwrite(&stud[i],sizeof(struct address_book),1,fp);fclose(fp);exit(0);}default: goto loop;} }。
通讯录C语言程序设计

通讯录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("。
python通讯录程序设计总结

python通讯录程序设计总结Python通讯录程序设计总结一、需求分析1.1 需求描述本项目需要设计一个通讯录程序,能够实现以下功能:(1)添加联系人;(2)删除联系人;(3)修改联系人信息;(4)查询联系人信息;(5)显示所有联系人信息。
1.2 功能分析根据需求描述,可以将本项目的功能进行如下分析:(1)添加联系人:需要输入姓名、电话、邮箱等信息,并将这些信息保存到文件中。
(2)删除联系人:需要输入要删除的联系人姓名,然后从文件中删除对应的记录。
(3)修改联系人信息:需要输入要修改的联系人姓名,然后根据用户选择进行相应的修改操作。
(4)查询联系人信息:需要输入要查询的联系人姓名或电话号码,然后从文件中查找对应的记录并显示出来。
(5)显示所有联系人信息:从文件中读取所有记录并显示出来。
二、程序设计2.1 数据结构设计为了实现以上功能,我们需要使用一个数据结构来存储所有的联系人信息。
在本项目中,我们选择使用字典来存储每个联系人的信息。
具体来说,每个字典包含以下键值对:{'name': 'xxx', 'phone': 'xxx', 'email': 'xxx'}2.2 界面设计为了方便用户操作,在本项目中我们采用命令行界面。
具体来说,我们可以设计如下几个菜单:(1)添加联系人;(2)删除联系人;(3)修改联系人信息;(4)查询联系人信息;(5)显示所有联系人信息;(6)退出程序。
2.3 程序实现根据上述数据结构和界面设计,我们可以实现如下代码:# 定义全局变量,用于存储所有联系人信息contacts = []# 添加联系人def add_contact():name = input('请输入姓名:')phone = input('请输入电话号码:')email = input('请输入邮箱地址:')contact = {'name': name, 'phone': phone, 'email': email} contacts.append(contact)print('添加成功!')# 删除联系人def delete_contact():name = input('请输入要删除的联系人姓名:')for contact in contacts:if contact['name'] == name:contacts.remove(contact)print('删除成功!')returnprint('未找到该联系人!')# 修改联系人信息def modify_contact():name = input('请输入要修改的联系人姓名:')for contact in contacts:if contact['name'] == name:print('1. 修改姓名\n2. 修改电话号码\n3. 修改邮箱地址') choice = int(input('请选择要修改的内容:'))if choice == 1:new_name = input('请输入新的姓名:')contact['name'] = new_nameprint('修改成功!')returnelif choice == 2:new_phone = input('请输入新的电话号码:')contact['phone'] = new_phoneprint('修改成功!')returnelif choice == 3:new_email = input('请输入新的邮箱地址:')contact['email'] = new_emailprint('修改成功!')returnelse:print('输入有误,请重新选择!')print('未找到该联系人!')# 查询联系人信息def query_contact():keyword = input('请输入要查询的关键字(姓名或电话号码):') for contact in contacts:if keyword in contact['name'] or keyword incontact['phone']:print(contact)print('查询完毕!')# 显示所有联系人信息def show_all_contacts():for contact in contacts:print(contact)# 主函数def main():while True:print('\n1. 添加联系人\n2. 删除联系人\n3. 修改联系人信息\n4. 查询联系人信息\n5. 显示所有联系人信息\n6. 退出程序')choice = int(input('请选择操作:'))if choice == 1:add_contact()elif choice == 2:delete_contact()elif choice == 3:modify_contact()elif choice == 4:query_contact()elif choice == 5:show_all_contacts()elif choice == 6:breakelse:print('输入有误,请重新选择!')if __name__ == '__main__':main()三、总结反思本项目通过实现一个通讯录程序,加深了我们对Python语言和数据结构的理解。
C++程序设计_通讯录程序

C++程序设计_通讯录程序在当今数字化的时代,通讯录程序成为了我们日常生活和工作中不可或缺的工具。
无论是与亲朋好友保持联系,还是在工作中与同事协作沟通,一个高效、便捷的通讯录程序都能发挥重要作用。
接下来,让我们一起深入了解如何使用 C++来设计一个实用的通讯录程序。
首先,我们需要明确通讯录程序的基本功能。
它应该能够实现联系人信息的存储、查找、添加、修改和删除等操作。
为了实现这些功能,我们可以使用结构体来定义联系人的数据类型。
```c++struct Contact {std::string name;std::string phoneNumber;std::string email;};```上述代码中,我们定义了一个名为`Contact`的结构体,其中包含了联系人的姓名、电话号码和电子邮件等信息。
接下来,我们可以使用数组或者链表来存储联系人信息。
这里为了简单起见,我们先使用数组来实现。
```c++const int MAX_CONTACTS = 100; //假设最多存储 100 个联系人Contact contactsMAX_CONTACTS;int numContacts = 0; //记录当前联系人数量```有了数据存储的结构,下面我们来实现添加联系人的功能。
```c++void addContact(){if (numContacts < MAX_CONTACTS) {Contact newContact;std::cout <<"请输入联系人姓名: ";std::cin >> newContactname;std::cout <<"请输入联系人电话号码: ";std::cin >> newContactphoneNumber;std::cout <<"请输入联系人电子邮件: ";std::cin >> newContactemail;contactsnumContacts++= newContact;std::cout <<"联系人添加成功!"<< std::endl;} else {std::cout <<"通讯录已满,无法添加新联系人!"<< std::endl;}}```在添加联系人时,我们首先检查通讯录是否已满。
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通讯录程序设计是计算机编程中的一个常见项目,旨在通过编写代码来实现对联系人信息的存储、查询、修改和删除等功能。
以下是关于通讯录程序设计的详细内容。
一、设计目标通讯录程序的主要目标是提供一个用户界面,允许用户添加、查找、更新和删除联系人信息。
联系人信息通常包括姓名、电话号码、电子邮件地址、住址等。
二、需求分析1. 用户界面:简洁直观,易于操作。
2. 数据存储:能够持久化存储联系人信息。
3. 功能需求:- 添加联系人:允许用户输入并保存新的联系人信息。
- 查询联系人:根据姓名或其他信息搜索联系人。
- 修改联系人:允许用户更新已存在的联系人信息。
- 删除联系人:允许用户删除不再需要的联系人信息。
三、技术选型1. 编程语言:根据项目需求和团队熟悉度选择合适的编程语言,如C、Java、Python等。
2. 数据存储:可以使用文件系统、数据库或内存中的数据结构。
3. 开发环境:选择适合的IDE(集成开发环境)进行编码,如Visual Studio、Eclipse等。
四、系统设计1. 数据结构:设计合适的数据结构来存储联系人信息,如使用结构体或类。
2. 功能模块:- 输入模块:负责接收用户输入的联系人信息。
- 存储模块:负责将联系人信息存储到指定的存储介质。
- 查询模块:提供搜索功能,根据用户输入的关键字查找联系人。
- 修改模块:允许用户修改已存储的联系人信息。
- 删除模块:允许用户删除联系人信息。
五、界面设计1. 主界面:显示所有功能选项,如添加、查询、修改、删除。
2. 输入界面:当用户选择添加或修改联系人时,提供输入界面。
3. 查询结果界面:显示查询结果,可能包括联系人列表或详细信息。
六、实现步骤1. 定义数据结构:根据需求定义联系人的数据结构。
2. 编写功能模块:逐一实现添加、查询、修改和删除功能。
3. 集成测试:将各个模块集成到一起,进行系统测试。
4. 用户测试:让实际用户测试程序,收集反馈并进行优化。
通讯录管理程序的设计与实现

通讯录管理程序的设计与实现通讯录管理程序的设计与实现1、引言1.1 目的1.2 范围1.3 术语定义2、需求分析2.1 功能需求2.1.1 添加联系人2.1.2 删除联系人2.1.3 修改联系人信息2.1.4 查找联系人2.1.5 显示所有联系人2.2 非功能需求2.2.1 用户友好性2.2.2 数据安全性2.2.3 性能要求3、概要设计3.1 系统结构设计3.2 模块设计3.2.1 添加联系人模块3.2.2 删除联系人模块3.2.3 修改联系人信息模块 3.2.4 查找联系人模块3.2.5 显示所有联系人模块 3.3 数据库设计3.3.1 联系人表设计3.3.2 数据库操作类设计4、详细设计4.1 添加联系人模块详细设计 4.1.1 输入验证处理4.1.2 数据库操作4.2 删除联系人模块详细设计4.2.1 输入验证处理4.2.2 数据库操作4.3 修改联系人信息模块详细设计 4.3.1 输入验证处理4.3.2 数据库操作4.4 查找联系人模块详细设计4.4.1 输入处理4.4.2 数据库查询4.5 显示所有联系人模块详细设计 4.5.1 数据库查询4.5.2 结果显示5、测试计划5.1 单元测试5.2 集成测试5.3 系统测试6、部署计划6.1 硬件需求6.2 软件需求6.3 安装步骤6.4 配置文件说明7、维护与支持计划7.1 维护计划7.2 支持计划附件:1、数据库设计图2、测试用例法律名词及注释:1、版权:对作品(如文本、音乐、软件等)拥有独立的知识产权,并享有复制、分发等权利的法律概念。
2、隐私权:个人享有对个人信息保密的权利,包括不被未经授权的收集、使用、公开或者披露。
3、数据保护:保护个人数据安全,防止未经授权的获得、使用和共享。
C++程序设计(班级通讯录)

C++程序设计(班级通讯录)C++程序设计(班级通讯录)一、引言1.1 目的本文档旨在介绍一个用C++编写的班级通讯录程序,该程序可以用来管理和维护班级成员的联系信息。
1.2 范围本程序设计主要包括以下功能:- 添加新的成员信息- 显示所有成员信息- 查找指定成员信息- 修改成员信息- 删除成员信息二、设计概述2.1 程序结构程序将采用面向对象的设计思路,主要分为以下几个类:- Contact:表示一个班级成员的联系信息- ContactList:管理和维护成员信息的类- Menu:提供菜单选项的类2.2 数据结构程序中将使用以下数据结构存储成员的联系信息:- 数组:用于存储成员的姓名、方式、邮箱等基本信息- 链表:用于管理成员信息的添加、修改、删除等操作三、详细设计3.1 Contact类3.1.1 属性- 姓名- 方式- 邮箱3.1.2 方法- 构造函数:用于初始化Contact对象- get/set方法:用于获取和设置对象的属性值3.2 ContactList类3.2.1 属性- 成员列表:用于存储所有成员联系信息的链表3.2.2 方法- 添加成员信息:将一个新的成员信息添加到链表中- 显示所有成员信息:遍历链表并逐个显示成员信息- 查找成员信息:根据姓名查找指定成员的联系信息- 修改成员信息:根据姓名修改指定成员的联系信息- 删除成员信息:根据姓名删除指定成员的联系信息3.3 Menu类3.3.1 方法- 显示菜单选项:显示主菜单选项供用户选择四、测试计划4.1 测试环境- 操作系统:Windows 10- 编译器:g++ 9.3:04.2 测试用例- 添加新的成员信息,并验证信息是否正确存储- 显示所有成员信息,并检查显示结果是否正确- 查找指定成员信息,并验证查找结果是否正确- 修改指定成员的联系信息,并验证修改结果是否正确- 删除指定成员的联系信息,并验证删除结果是否正确五、维护和支持5.1 项目维护- 维护人:李明- 联系方式:li_min5.2 技术支持- 支持人员:张华- 联系方式:zhang_hu附件:无法律名词及注释:- 本文档中未涉及到法律名词和注释。
c语言通讯录程序(共5篇)

c语言通讯录程序(共5篇)第一篇:c语言通讯录程序C语言程序设计实践——通讯录管理系统六、程序源代码及注释#include #include #include #include #define SUM 100 #define STOP 1000typedef struct /*结构体,存放通讯录成员信息,重新定义成member型变量*/ { char name[10]; char tel[15]; char cla[5]; char mail[20]; char qq[15]; }member;member info[SUM]; //所有成员空间FILE *fp;//文件指针,用于打开或保存通讯录文件int count=0; //全局变量,用于计数已存入数量/*-----------------------*/int load(char filename[])//打开通讯录文件{ member *p; int i=0; if((fp=fopen(filename,"rb"))==NULL)return i; else{while(!feof(fp)){p=(member *)malloc(sizeof(member));if(fread(p,sizeof(member),1,fp)==1){strcpy(info[i].name,p->name);strcpy(info[i].tel,p->tel);strcpy(info[i].cla,p->cla);strcpy(info[i].mail,p->mail);strcpy(info[i].qq,p->qq);i++;}free(p);}return i;} } /*------------------*/void save(char filename[]) //保存通讯录文件 {int i;member *p;if((fp=fopen(filename,"wb"))==NULL){printf("无法保存!打开文件%s时出错\n",filename); exit(1);}elsefor(i=0;i{p=(member *)malloc(sizeof(member));strcpy(p->name,info[i].name);strcpy(p->tel,info[i].tel);strcpy(p->cla,info[i].cla);strcpy(p->mail,info[i].mail);strcpy(p->qq,info[i].qq);fwrite(p,sizeof(member),1,fp);free(p);}fclose(fp); } /*-----------------*/ void display(void) //分类查看功能 { system("cls");char dis;char way[5];int i,j=0;choice:printf("**********请选择查看分类***********\n");printf("**********1.亲友**********\n");printf("**********2.同学**********\n");printf("**********3.老师**********\n");printf("**********4.其他**********\n");printf("**********5.查看全部**********\n");printf("**********0.返回上一级菜单**********\n");printf("*****************************************\n"); printf("请选择(1~5或0):");dis=getchar();getchar();switch(dis){case '1':strcpy(way,"亲友");break;case '2':strcpy(way,"同学");break;case '3':strcpy(way,"老师");break;case '4':strcpy(way,"其他");break;case '5':printf("*******全部通讯成员*******\n"); for(i=0;iprintf("姓名:%s\n",info[i].name);printf("电话号码:%s\n",info[i].tel);printf("电子邮箱:%s\n",info[i].mail);printf("QQ号:%s\n",info[i].qq);printf("分类:%s\n",info[i].cla);printf("*****************************\n");j++;}if(j==0){printf("************************\n");printf("无任何通讯成员\n");}j=0;Sleep(STOP);goto choice; break;case '0':return; break;default:printf("*************************\n");printf("输入指令有误!\n");printf("*************************\n");Sleep(STOP);goto choice;}printf("********通讯成员之%s*******\n",way); for(i=0;iif(strcmp(info[i].cla,way)==0){printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("**********************************\n"); j++;}}if(j==0){printf("该分类中无通讯成员\n");printf("******************\n");}j=0;Sleep(STOP);goto choice; }/*------*/ int add(void)//增加新的成员 {member temp;int i;reinput_name:printf("请输入新成员的姓名:");gets();for(i=0;iif(strcmp(info[i].name,)==0){ printf("该姓名已存在!\n");Sleep(STOP);goto reinput_name;}reinput_tel:printf("请输入新成员的电话号码:"); gets(temp.tel);for(i=0;iif(strcmp(info[i].tel,temp.tel)==0){ printf("该电话号码已存在!\n");Sleep(STOP);goto reinput_tel;}printf("请输入新成员的电子邮箱:"); gets(temp.mail);printf("请输入新成员的QQ号:");gets(temp.qq);printf("请输入新成员的分类:");gets(temp.cla);info[count]=temp;count++;return count; }/*-----*/ int search(char sname[]) //查找功能 { int flag=0,i;for(i=0;iif(strcmp(info[i].name,sname)==0){printf("*****************************\n"); printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("******************************\n"); flag=1;}return flag; }/*---------*/ int rework(char rname[])//修改功能 {int flag=0,i;for(i=0;iif(strcmp(info[i].name,rname)==0){printf("*********************");printf("请输入新的姓名:");gets(info[i].name);printf("请输入新的电话号码:");gets(info[i].tel);printf("请输入新的电子邮箱:");gets(info[i].mail);printf("请输入新的QQ号:");gets(info[i].qq);printf("请输入新的分类:");gets(info[i].cla);printf("********************");flag=1;}return flag; }/*-----------------------------*/ int erase(char ename[]) //删除功能 {int flag=0,i,j;for(i=0;iif(strcmp(info[i].name,ename)==0){for(j=i;jinfo[j]=info[j+1];count--;flag=1;}return flag; } /*-----------------------------*/ int call(void)//拨号功能 {int i,j,flag=0;char cname[10];printf("**************************\n");for(i=0;iprintf("%s ",info[i].name);}putchar('\n');printf("请输入需要拨号的姓名:");gets(cname);for(i=0;iif(strcmp(info[i].name,cname)==0){printf("正在拨号:");for(j=0;info[i].tel[j]!='\0';j++){printf("%c",info[i].tel[j]);Sleep(300);}putchar('\n');flag=1;}return flag; } /*-----------------------*/ int main(void)//主函数{ char filename[40]; char c,save_j; int t; char s_r_e_name[10];printf("欢迎使用通讯录系统!请输入通讯录文件的有效路径(若文件不存在则自动创建新通讯录)\n"); gets(filename); count=load(filename); system("cls");printf("======================================\ n");printf("==========欢迎使用我的通讯录==========\n");printf("============ 制作:石贵清===========\n");begin:printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("※※\n");printf("※通迅录※\n");printf("※※\n");printf("※1. 添加新联系人.5. 分类显示查询.※\n");printf("※※\n");printf("※2. 删除联系人.6.拨出电话.※\n");printf("※※\n");printf("※3. 查询通讯成员.7.保存通讯文件.※\n");printf("※※\n");printf("※4. 修改信息.0. 关闭通迅录.※\n");printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("友情提醒:请在退出本程序之前按7保存通讯文件! \n"); printf("请输入您选择的操作:");c=getchar();getchar(); switch(c) {case '1':if(count==SUM){printf("======= 通讯录空间已满,无法继续录入!===\n"); Sleep(STOP);goto begin; break;}t=add();printf("===== 信息已建立,请尽快保存!=====\n");if(t==SUM){printf("===== 通讯录空间已满,无法继续录入!=====\n"); }Sleep(STOP);goto begin;break; case '2': if(count==0){printf("========================\n");printf("=== 通讯录中无任何成员!====\n");printf("======================\n");Sleep(STOP);goto begin;break; }printf("请输入要删除成员的姓名:");gets(s_r_e_name);t=erase(s_r_e_name);if(!t) {printf("=================\n");printf("==== 查无此人====\n");printf("=================\n"); } else {printf("======================\n");printf("======已成功删除======\n");printf("======================\n"); } Sleep(STOP); goto begin;break; case '3':printf("请输入要查找的成员姓名:");gets(s_r_e_name);t=search(s_r_e_name);if(!t){printf("======================\n");printf("===== 查无此人 =======\n");printf("======================\n");}Sleep(STOP);goto begin;break;case '7':save(filename);printf("==============================\n");printf("======保存成功!=======\n");printf("==============================\n"); Sleep(STOP); goto begin;break;case '4':printf("请输入要修改的成员姓名:");gets(s_r_e_name);t=rework(s_r_e_name);if(!t) {printf("=======查无此人====\n"); }else{printf("=========================\n"); printf("====修改成功====\n");}Sleep(STOP);goto begin;break;case '5':display();Sleep(STOP);goto begin;break;case '6':t=call();if(!t){printf("=============================\n"); printf("====== 输入姓名错误! =======\n");printf("============================\n"); }else{printf("=========================\n");printf("======电话已经拨出=====\n");printf("=======================\n");}Sleep(STOP);goto begin;break;case '0':printf("是否保存数据文件?(Y:是/N:否)");save_j=getchar();if(save_j=='Y'||save_j=='y'){save(filename);printf("====== 保存成功!=======\n");printf("======= 感谢您的使用!再见! ======\n");}else{printf("========================\n");printf("=== 感谢您的使用!再见! ===\n");printf("========================\n");}exit(0); default:printf("=====Sleep(STOP);goto begin; } return 0; }输入指令无效!====");第二篇:C语言程序设计学生通讯录管理系统#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #define null 0 struct record { char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; struct LinkList { struct record US; struct LinkList *next; }a; struct LinkList *head=null; int num=0; FILE *fp; int menu_select(); int adduser(); int list(); int search(); int display(); int add(); int listbyname(); int dele(); int save(); int exit();void main() {system("cls"); for(;;) { switch(menu_select()) { case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() { char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\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. Quit\n"); printf("\t\t***********************************************\n");do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); return a; }adduser() { printf("\n\t\t**************** 请输入用户信息****************\n"); printf("\n\t\t输入姓名:"); scanf("%s",&student[num].name); printf("\n\t\t输入电话号码:"); scanf("%s",&student[num].phone); printf("\n\t\t输入地址:"); scanf("%s",&student[num].adress); printf("\n\t\t输入邮编:"); scanf("%s",&student[num].postcode); printf("\n\t\t输入e-mail:"); scanf("%s",&student[num].e_mail); num++; printf("\n\t\t是否继续添加?(Y/N):"); if (getch()=='y') adduser(); return(0); } list() { int i; system("cls"); if(num!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;iprintf("\n\t\t姓名:%s",student[i].name); printf("\n\t\t电话:%s",student[i].phone); printf("\n\t\t地址:%s",student[i].adress); printf("\n\t\t邮编:%s",student[i].postcode); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\t\t"); if (i+1add() { int i; if ((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t文件打开失败"); } for (i=0;isave() { int j; FILE*fp; fp=fopen("student.txt","w"); if (fp==NULL) printf("can't open the file."); if(num!=0) { for(j=0;j fwrite(student,sizeof(student),1,fp); } } printf("保存成功!"); fclose(fp); return(0); }第三篇:C语言作业:学通讯录学生通讯录一、语言和环境1.实现语言:C语言。
C++程序设计(班级通讯录)

C++程序设计(班级通讯录)一、项目简介本项目是一个用C++语言实现的班级通讯录管理系统。
通过该系统,用户可以方便地管理班级成员的联系信息,包括姓名、学号、方式等。
二、功能列表1. 添加联系人:用户可以输入学生的信息,包括姓名、学号、方式等,并将其添加到通讯录中。
2. 删除联系人:用户可以输入学生的学号,将对应的联系人从通讯录中删除。
3. 修改联系人:用户可以输入学生的学号,修改对应的联系人的信息。
4. 查询联系人:用户可以输入学生的学号或姓名,查询对应的联系人的信息。
5. 显示所有联系人:用户可以查看通讯录中所有联系人的信息。
6. 清空通讯录:用户可以选择清空通讯录,将所有联系人信息清空。
三、实现思路1. 创建一个学生类,包含姓名、学号、方式等属性,并提供相应的成员函数用于获取和设置这些属性。
2. 创建一个通讯录类,用于管理学生信息。
包括添加联系人、删除联系人、修改联系人、查询联系人和显示所有联系人等功能。
3. 在主函数中,显示主菜单,根据用户的选择调用相应的功能函数。
四、实现步骤1. 定义学生类,包含姓名、学号、方式等属性,并提供相应的成员函数用于获取和设置这些属性。
2. 定义通讯录类,包括添加联系人、删除联系人、修改联系人、查询联系人和显示所有联系人等功能函数。
3. 在主函数中,显示主菜单,根据用户的选择调用相应的功能函数。
五、项目优势1. 简单易用:用户界面友好,操作简便,不需要输入繁琐的指令。
2. 功能完善:涵盖了常用的联系人管理功能,满足用户的需求。
3. 数据安全:通讯录数据保存在内存中,不会外泄或丢失。
4. 可扩展性强:可以根据实际需求进行修改和扩展。
六、通过本项目的实现,我们学习了C++程序设计的基本语法和面向对象的编程思想。
也加深了对通讯录管理系统的理解和实现能力。
希望这个项目对大家学习和了解C++编程有所帮助。
c通讯录程序设计

C++程序设计课程设计报告——通讯录管理系统班级:1120551学号:03姓名:一课程设计题目与要求题目通讯录管理系统系统功能要求:(1)录入通讯录(2)修改通讯录(3)查询通讯录(可按姓名、电话、联系人类别查询)(4)删除通讯录(5)按姓名对通讯录进行排序一课程设计题目与要求题目通讯录管理系统系统功能要求:(1)录入通讯录(2)修改通讯录(3)查询通讯录(可按姓名、电话、联系人类别查询)(4)删除通讯录(5)按姓名对通讯录进行排序二需求分析2.1问题描述根据需求,该系统所应包含的信息有以下一些:通讯录的基本信息:姓名、地址、电话根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。
如:通讯录基本信息录入。
各种基本数据的修改。
即:允许对已经录入的数据重新进行编辑、修改。
例如修改通讯录中张三的电话信息各种基本数据的删除。
例如将张三的信息从通讯录中删除基于各种数据的查询。
例如输入张三姓名,查询张三的电话和地址。
数据导出:将通讯录中信息导出到指定文件。
数据导入:从指定文件导入通讯录信息到。
系统环境采用C++语言实现,开发环境为VC++,可以运行在操作系统windows98及以上皆可。
运行要求能不受限制的录入通讯录信息界面友好,操作方便,例如删除前需要提示用户是否删除三概要设计系统流程设计根据系统要求,设计如下的系统流程。
系统模块设计根据系统的功能设计,如下模块1.主界面模块:完成系统菜单的显示2.功能选择模块:根据用户的选择,完成其相应的功能(1)通讯录信息录入:完成用户从界面输入通讯录,保存入系统的功能(2)通讯录信息修改:完成用户从界面输入通讯录,在系统中查询定位,并将录入的数据保存入系统的功能(3)通讯录信息查询:完成用户从界面输入查询条件,在系统查询符合条件的通讯录信息,并在界面上显示的功能。
(4)通讯录信息导入:完成用户从界面输入需要导入的文件路径名称,读取该文件的内容,保存入系统,并在界面上显示导入内容的功能。
程序设计语言课程设计--通讯录

程序设计语言课程设计报告1课程设计目的和要求基本功能:a)添加个人信息b)查询个人信息c)删除个人信息d)修改个人信息e)信息排序f)输出全部信息拓展功能:采用文件形式对通讯录进行操作,包括:g)写入文件h)读取文件创新(自拟)功能:程序实现的其它功能由个人自拟。
1.2设计要求具体说明通讯录至少应该有以下数据项:姓名,家庭住址,手机号码,邮编,E-mail。
输入信息时要检查数据项手机、邮编、E-mail的合法性,手机号码:11位数字;邮编:6位数字;E-mail:包含@字符,且@两边都非空。
对通讯录应该包含有以下操作(包括基本功能和拓展功能):a)向通讯录中添加信息;b)在通讯录中按姓名或手机号查找个人信息;c)删除通讯录中的个人信息;d)修改通讯录中的个人信息,并保存入文件;e)按不同数据项排序后列表输出通讯录中所有人的信息。
通讯录中记录的数量没有限制。
f)将通讯录中的数据写入文件和从文件读入数据。
程序启动时先从文件读入数据,如果文件中没有数据则给出提示;写入文件时有两种方式,一为覆盖所有原有的内容; 二为只将本次操作所修改的个人信息写入文件g)程序启动时先从文件读入数据,如果文件中没有数据则给出提示退出程序。
1.3设计提示定义合适的结构体类型,使用链表或数组的方式组织数据。
2通讯录概述通讯录包括能够实现添加、查询、删除、修改、排序、输出全部信息以及写入文件、读取文件。
这里的学生通讯记录为姓名、家庭地址、手机号码、邮箱、邮编。
2.1程序的基本功能a)添加个人信息b) 查询个人信息c)删除个人信息d)修改个人信息e)信息排序f)输出全部信息2.2拓展功能:g)写入文件h)读取文件3通讯录的分析通讯录程序分析如结构图所示。
3.1主程序定义结构体数组,使用循环,让程序能够通过选择进行各种操作。
3.2(主界面)输入学生信息输入学生的姓名、手机号码、家庭地址、邮箱、邮编。
每次输入学生信息时判断其合法性。
c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统通讯录管理系统是一种常见的应用程序,用于管理个人或者组织的联系人信息。
本文将介绍一个基于C语言的通讯录管理系统的设计和实现。
一、需求分析通讯录管理系统需要满足以下功能需求:1. 添加联系人:可以添加新的联系人,包括姓名、电话号码、邮箱等信息。
2. 查找联系人:可以根据姓名或者电话号码查找已存在的联系人。
3. 删除联系人:可以根据姓名或者电话号码删除已存在的联系人。
4. 修改联系人:可以修改已存在联系人的信息,包括姓名、电话号码、邮箱等。
5. 显示所有联系人:可以显示当前通讯录中的所有联系人信息。
二、设计思路1. 数据结构:使用结构体来表示一个联系人的信息,包括姓名、电话号码、邮箱等字段。
使用数组来存储多个联系人的信息。
2. 添加联系人:通过用户输入的方式获取联系人信息,然后将联系人信息添加到联系人数组中。
3. 查找联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并显示其详细信息。
4. 删除联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并将其从数组中删除。
5. 修改联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并允许用户修改其信息。
6. 显示所有联系人:遍历联系人数组,逐个显示联系人的详细信息。
三、代码实现下面是一个简单的通讯录管理系统的C语言代码实现:```c#include <stdio.h>#include <string.h>#define MAX_CONTACTS 100typedef struct {char name[50];char phone[20];char email[50];} Contact;Contact contacts[MAX_CONTACTS];int numContacts = 0;void addContact() {printf("Enter name: ");scanf("%s", contacts[numContacts].name);printf("Enter phone number: ");scanf("%s", contacts[numContacts].phone);printf("Enter email: ");scanf("%s", contacts[numContacts].email);numContacts++;printf("Contact added successfully!\n");}void findContact() {char search[50];printf("Enter name or phone number to search: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Name: %s\n", contacts[i].name);printf("Phone: %s\n", contacts[i].phone);printf("Email: %s\n", contacts[i].email);found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void deleteContact() {char search[50];printf("Enter name or phone number to delete: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {for (int j = i; j < numContacts - 1; j++) {strcpy(contacts[j].name, contacts[j + 1].name);strcpy(contacts[j].phone, contacts[j + 1].phone);strcpy(contacts[j].email, contacts[j + 1].email);}numContacts--;printf("Contact deleted successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void modifyContact() {char search[50];printf("Enter name or phone number to modify: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Enter new name: ");scanf("%s", contacts[i].name);printf("Enter new phone number: ");scanf("%s", contacts[i].phone);printf("Enter new email: ");scanf("%s", contacts[i].email);printf("Contact modified successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void displayContacts() {printf("Contacts:\n");for (int i = 0; i < numContacts; i++) {printf("Name: %s\n", contacts[i].name); printf("Phone: %s\n", contacts[i].phone); printf("Email: %s\n", contacts[i].email); printf("\n");}}int main() {int choice;do {printf("1. Add contact\n");printf("2. Find contact\n");printf("3. Delete contact\n");printf("4. Modify contact\n");printf("5. Display all contacts\n"); printf("0. Exit\n");printf("Enter your choice: ");scanf("%d", &choice);switch (choice) {case 1:addContact();break;case 2:findContact();break;case 3:deleteContact();break;case 4:modifyContact();break;case 5:displayContacts();break;case 0:printf("Exiting...\n");break;default:printf("Invalid choice!\n");break;}} while (choice != 0);return 0;}```四、总结本文介绍了一个基于C语言的通讯录管理系统的设计和实现。
通讯录程序设计

通讯录程序设计通讯录程序设计是一个涉及数据结构、用户界面设计和编程技巧的综合性项目。
设计一个通讯录程序,需要考虑以下几个关键方面:1. 需求分析在设计通讯录程序之前,首先要明确用户需求。
通讯录的基本功能包括:- 添加联系人- 删除联系人- 修改联系人信息- 搜索联系人- 显示所有联系人2. 数据结构设计通讯录程序的核心是联系人信息的存储和管理。
常见的数据结构有:- 数组:简单但不利于动态扩展。
- 链表:便于动态添加和删除。
- 哈希表:快速检索。
联系人信息通常包括:- 姓名- 电话号码- 邮箱地址- 地址- 备注信息3. 程序架构通讯录程序可以分为以下几个模块:- 用户界面(UI):提供用户交互界面,如输入框、按钮、列表等。
- 数据管理:负责联系人数据的增删改查。
- 搜索模块:实现联系人的快速查找功能。
- 数据持久化:将联系人信息存储到文件或数据库中。
4. 技术选型根据项目需求和开发环境,选择合适的编程语言和开发工具。
例如:- C/C++:适合底层开发,性能高。
- Java:跨平台,适合大型应用开发。
- Python:语法简洁,开发效率高。
- 前端技术:如HTML/CSS/JavaScript,用于开发Web版通讯录。
5. 用户界面设计用户界面应简洁直观,易于操作。
常见的设计元素包括:- 主界面:展示所有联系人列表。
- 添加界面:填写新联系人信息。
- 编辑界面:修改现有联系人信息。
- 搜索框:输入关键字进行搜索。
6. 功能实现- 添加联系人:用户输入信息后,程序将其存储到数据结构中。
- 删除联系人:根据用户选择,从数据结构中移除联系人。
- 修改联系人:允许用户更新现有联系人的信息。
- 搜索联系人:根据用户输入的关键字,快速定位联系人。
- 显示联系人:将所有或筛选后的联系人信息展示给用户。
7. 数据持久化为了使联系人信息在程序关闭后依然可用,需要实现数据持久化。
常见的方法有:- 将数据写入文本文件。
c语言通讯录设计与实现

C 语言通讯录设计与实现本文主要介绍了如何使用 C 语言设计并实现一个通讯录程序,包括通讯录的存储、添加、查找、修改和删除等基本操作,同时考虑了数据的持久化存储问题。
下面是本店铺为大家精心编写的4篇《C 语言通讯录设计与实现》,供大家借鉴与参考,希望对大家有所帮助。
《C 语言通讯录设计与实现》篇1引言通讯录是一个常见的应用程序,用于存储和管理联系人的信息,包括姓名、电话号码、电子邮件地址等。
在现代智能手机中,通讯录已经成为了一个不可或缺的应用程序。
在本文中,我们将使用 C 语言来设计和实现一个简单的通讯录程序。
通讯录的设计通讯录程序需要存储联系人的信息,包括姓名和电话号码等。
我们可以使用结构体来存储联系人的信息,如下所示:```struct contact {char name[20];char phone[20];};```通讯录程序需要具有添加、查找、修改和删除联系人信息的功能。
我们可以使用数组来存储联系人的信息,并使用索引来标识每个联系人。
以下是通讯录程序的基本设计:```#define MAX_CONTACTS 100 // 通讯录最大容量struct contact contacts[MAX_CONTACTS]; // 通讯录数组int num_contacts; // 当前通讯录中的联系人数量// 添加联系人信息void add_contact(char *name, char *phone) {if (num_contacts == MAX_CONTACTS) {printf("通讯录已满,无法添加联系人");return;}contacts[num_contacts].name = name;strcpy(contacts[num_contacts].phone, phone);num_contacts++;}// 查找联系人信息void find_contact(char *name) {int i;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) {printf("找到联系人 %s,电话号码为 %s", name, contacts[i].phone);return;}}printf("未找到联系人 %s", name);}// 修改联系人信息void modify_contact(char *name, char *phone) { int i;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) {contacts[i].phone = phone;printf("修改联系人 %s的电话号码为 %s", name, phone);return;}}printf("未找到联系人 %s", name);}// 删除联系人信息void delete_contact(char *name) {int i, j;for (i = 0; i < num_contacts; i++) {if (strcmp(contacts[i].name, name) == 0) { for (j = i; j < num_contacts - 1; j++) { contacts[j] = contacts[j + 1];}num_contacts--;printf("删除联系人 %s成功", name);return;}}printf("未找到联系人 %s", name);}```通讯录的实现为了实现通讯录程序,我们需要将设计转化为代码。
C++程序设计_通讯录程序[1]
![C++程序设计_通讯录程序[1]](https://img.taocdn.com/s3/m/d9f4101eabea998fcc22bcd126fff705cc175c35.png)
C++程序设计_通讯录程序[1]C++程序设计_通讯录程序1.引言1.1 目的本文档旨在提供一个完整的通讯录程序的设计和实现说明,以便开发人员能够理解并按照该说明创建功能完善的应用程序。
1.2 范围本文档将包括通讯录程序的需求分析、设计、实现和测试等方面的内容。
具体包含以下几个章节:2.需求分析2.1 功能需求在通讯录程序中,用户可以添加联系人、查找联系人、编辑联系人信息、删除联系人等。
2.2 性能需求通讯录程序应具有良好的性能,能够快速响应用户的操作,并处理大量的联系人信息。
3.设计3.1 概述通讯录程序将采用面向对象的设计方法,将联系人信息封装成一个Contact类,并通过一个ContactManager类来管理联系人。
3.2 类设计3.2.1 Contact类Contact类表示一个联系人,包含联系人的姓名、方式号码、地质等属性,还提供了相应的访问和修改方法。
3.2.2 ContactManager类ContactManager类用于管理联系人,提供了添加联系人、查找联系人、编辑联系人信息、删除联系人等功能的方法。
4.实现4.1 环境要求通讯录程序要求在支持C++编程的环境中运行,推荐使用Visual Studio作为开发工具。
4.2 实现步骤4.2.1 创建Contact类根据设计,在C++中创建Contact类,定义联系人的属性和方法。
4.2.2 创建ContactManager类根据设计,在C++中创建ContactManager类,实现联系人的管理功能。
4.2.3 编写用户界面使用C++的图形界面库或命令行界面实现用户界面,提供用户操作通讯录的接口。
5.测试5.1 单元测试对Contact类和ContactManager类中的各个方法进行单元测试,保证其功能的正确性。
5.2 功能测试测试整个通讯录程序的功能是否满足需求,包括添加联系人、查找联系人等功能。
6.附件本文档涉及的附件包括源代码文件、测试数据文件等。
c通讯录程序课程设计

c 通讯录程序课程设计一、课程目标知识目标:1. 让学生理解通讯录程序的基本原理和功能需求;2. 使学生掌握使用编程语言(如Python)实现通讯录程序的基本方法;3. 帮助学生了解数据结构在通讯录程序中的应用,如列表和字典。
技能目标:1. 培养学生运用所学知识,独立设计并编写简单通讯录程序的能力;2. 提高学生在编程过程中解决问题的能力,包括调试和优化代码;3. 培养学生运用计算思维分析问题、设计算法和实现程序的能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养积极的学习态度;2. 培养学生良好的团队协作精神,学会与他人分享和交流;3. 增强学生的自信心,让他们在完成通讯录程序设计的过程中,体验成就感。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握编程技能和计算思维。
学生特点:考虑到学生所在年级,已具备一定的编程基础,但实际操作能力和解决问题的能力还需加强。
教学要求:注重理论与实践相结合,强调学生的动手实践,以任务驱动的方式进行教学,培养学生自主学习和合作学习的能力。
通过课程目标的分解,使学生在完成具体学习成果的过程中,达到预期目标。
二、教学内容1. 通讯录程序基本原理与功能需求分析:介绍通讯录程序的核心功能,如添加、删除、查找和修改联系人信息,以及程序的整体设计思路。
- 教材章节:第3章 数据结构,第4章 程序设计基础。
2. 编程语言基础:回顾Python编程语言的基本语法,重点讲解列表和字典的使用方法。
- 教材章节:第1章 Python语言概述,第2章 基本数据类型。
3. 通讯录程序设计与实现:讲解如何利用Python编程语言和所学数据结构设计并实现通讯录程序。
- 教材章节:第5章 函数与模块,第6章 文件操作。
4. 程序调试与优化:介绍程序调试的基本方法,引导学生学会优化代码,提高程序性能。
- 教材章节:第7章 程序调试与优化。
5. 项目实践:安排学生分组进行通讯录程序的设计与实现,鼓励学生相互交流、协作,培养团队精神。
C语言通讯录程序课程设计

3.6 实例6 通讯录程序本实例希望设计一个通讯录程序,要求实现通讯录信息的录入,并具有添加、查询、删除、显示等功能;使用构造体存储通讯录中记录信息;使用链表来实现通讯录信息的添加、删除、查询及显示等操作;通讯录程序可实现文件读写,在通讯录信息录入完毕之后,可存入文件中,在下次程序运行时可将通讯录中的记录读取到程序中。
通讯录程序可采用基于Win32控制台程序构建或采用基于MFC应用向导.EXE的应用程序,下面对这两种方法进展详细介绍。
. 设计目的1、掌握构造体的根本工作原理和工作方式。
2、熟悉构造体与链表的使用方法。
3、熟悉C语言下数据的输入与输出。
4、掌握C语言下对TXT文件的读写操作。
5、熟悉函数的设计方法及调用方法。
. 根本要求1、本实例要求实现对通讯录信息的查找、添加、删除、显示等功能,每个功能模块均能实现随时从模块中退出,可以通过键盘对功能进展选择,完成一个通讯录管理系统的运行。
2、要使用构造体来实现对通讯录信息的存储。
3、使用链表来实现对通讯录信息的查找、添加、删除、浏览显示。
4、使用文件对记录进展存储,程序运行时还可以从文件中读取记录。
5、系统设计完成后应实现类似以下图所示界面。
设计构造及算法分析在进展程序设计时,选择一种合理的数据存储构造是非常关键的。
本实例根据题目要求,采用构造体来存放通讯录中的信息,并采用文件存储通讯录中的信息。
1、存储构造本实例存储数据时,除了采用最常用的根本类型存储外,采用构造体的方式来存储通讯录中的个人信息,构造体如下所示:struct stu{char name[20]; /*人名*/char telephone[20]; /* */char sex[4]; /*性别*/char company[20]; /*单位*/struct stu *next; /*链表节点*/};typedef struct stu STU;2、main〔〕主函数采用模块化设计,功能放在各模块函数中实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生通讯录系统学校:中北大学姓名:***学号:**********班级:A02学院:软件学院指导教师:***题目:学生通讯录实训目的:掌握C语言的基本语法规则,以及深入理解函数的调用,指针,结构体和链表的相关知识点。
做好项目的具体分析。
实训内容:完成对学生通讯录程序调试以及运行实训内容:设计一个实用的小型通讯录程序,具有添加,查询和删除功能。
由姓名,电话号码1,电话号码2,QQ号组成,姓名可以由字符和数字混合编码。
电话号码可由字符和数字组成。
实现功能:实训要求:(1)系统应显示这样的菜单,请选择系统功能项:a 信息录入功能b信息浏览功能c信息查询功能((按姓名查询)d信息修改功能e系统退出功能(2)执行一个具体的功能之后,程序将重新显示菜单。
(3)将通讯录基本信息保存到文件中。
*总体设计模块和程序规划结构图如图1.0,其中包含各个函数的调用程序详细结构图以及涉及到的核心代码:录入信息结构图1.1void input_record1()//输入函数总,包含了创建学生还有指针移动{//void print_menu_main();//输入菜单char continue_input = 'N';//判断是否继续输入stu *pLastStu = NULL;//最后学生的指针stu *pNewStu = (stu *)malloc(sizeof(stu));//创建学生节点返回其地址,这是链表pNewStu->next = NULL;//节点的指针指向空create_stu_by_input(pNewStu);//创建一个学生if(head == NULL){head = pNewStu;} else{pLastStu = get_last_student(head);//移动指针pLastStu->next = pNewStu;// 连接节点}printf("继续输入学生成绩?(Y 继续,N 返回菜单)");getchar();continue_input = getchar();if (continue_input == 'n' || continue_input == 'N'){print_menu_main();}else{input_record1();}}输出函数结构图以及核心代码void show_record1(){//输出函数总:包含了三部分表格头,表格尾巴,含有学生信息void print_menu_main();//stu *p = head;print_table_head();while(p != NULL) {print_table_row(p);p = p->next;}print_table_buttom();printf("按任意键返回菜单...\n");getch();print_menu_main();}保存文件结构图以及核心代码void save_to_file1(){//保存文件总void print_menu_main();//所调用的函数的声明void save_to_file();FILE *fp;char file[100];stu *p= head;printf("请输入文件名:");scanf("%s", file);save_to_file();fp=fopen(file, "w");while(p != NULL){fprintf(fp, "%d %s %s %s %s %s\n",p->xuhao, p->num, p->name, p->sex, p->QQ, p->phone);p = p->next;}fclose(fp);printf("保存成功!\n按任意键返回菜单..\n");getchar();getchar();print_menu_main();}加载信息结构图以及核心代码void load_from_file1(){//重新加载函数总void print_menu_main();void clear_record(stu *p);//所调用的函数声明FILE *fp;char file[100];clear_record(head); /*释放整个链表*/stu *p= head, *q;printf("请输入文件名:");scanf("%s", file);fp=fopen(file, "r");stu *pLastStu = NULL;while(!feof(fp)){//如果未遇到输入文件的结束标志stu *pNewStu = (stu *)malloc(sizeof(stu));pNewStu->next = NULL;fscanf(fp, "%d %s %s %s %s %s",&(pNewStu->xuhao),pNewStu->num, pNewStu->name, pNewStu->sex,pNewStu->QQ, pNewStu->phone);if(head == NULL){//指针移动head = pNewStu;}else{pLastStu = get_last_student(head);pLastStu->next = pNewStu;//将链表连接起来}}//释放加载后的空间q = head;while(q->next->next != NULL){q = q->next;}free(q->next);q->next = NULL;fclose(fp);printf("装载成功!\n按任意键返回菜单..\n");getchar();getchar();print_menu_main();}按名字查询信息核心代码以及结构图void inquire_name1(){void print_menu_main();stu *p = head;char name[20];printf("\n请输入你要查询的名字:");scanf("%s",&name);while(strcmp(p->name,name)!=0){p=p->next;}if(p==NULL){printf("\n你所输入的学生暂时不存在");printf("按任意键返回菜单...\n");getch();print_menu_main();}system("cls");printf("\n该学生的有关信息\n");printf("+----------+----------+----------+----------+-----------+------------+\n");printf("| 序号| 学号| 姓名| 性别| QQ | 电话|\n");printf("+----------+----------+----------+----------+-----------+------------+\n");printf("|%10d|%10s|%10s|%10s|%10s|%11s|\n",p->xuhao,p->num,p->name,p->sex,p->QQ,p->phone);printf("+----------+----------+----------+----------+-----------+------------+\n");printf("按任意键返回菜单...\n");getch();print_menu_main();}信息修改核心代码以及流程图void revise_message()printf("输入要修改的学生的姓名:\n");scanf("%s",name);while(strcmp(p->name,name)!=0){p=p->next;//寻找要修改的学生}if(p==NULL){printf("\n你所输入的学生暂时不存在");printf("按任意键返回菜单...\n");getch();print_menu_main();}else{printf("\n 您要修改那一项?\n");printf("\n 1序号\n");printf("\n 2学号\n");printf("\n 3姓名\n");printf("\n 4性别\n");printf("\n 5QQ\n");printf("\n 6电话\n");scanf("%d",&choice);switch(choice){case 1:printf("\n 请输入修改后的序号\n");scanf("%s",&p->xuhao);break;case 2:printf("\n 请输入修改后的学号\n");scanf("%s",p->num);break;case 3:printf("\n 请输入修改后的姓名\n");scanf("%s",p->name);break;case 4:printf("\n 请输入修改后的性别\n");scanf("%s",p->sex);break;case 5:printf("\n 请输入修改后的QQ\n");scanf("%s",p->QQ);break;case 6:printf("\n 请输入修改后的电话\n");scanf("%s",p->phone);break;}}system("cls");printf("修改信息成功\n");printf("按任意键返回菜单...\n");getch();print_menu_main();}程序运行截图1输入学生的成绩截图2显示学生的信息截图3保存文件截图4读取信息6查询截图附录程序完整代码#include <stdio.h>#include <stdlib.h>#include <conio.h>//conio 其中定义了通过控制台进行数据输入和数据输出的函数,//主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。