通讯录管理系统调试源代码

合集下载

使用C语言打造通讯录管理系统和教学安排系统的代码示例

使用C语言打造通讯录管理系统和教学安排系统的代码示例

使用C语言打造通讯录管理系统和教学安排系统的代码示例这篇文章主要介绍了使用C语言打造通讯录管理系统和教学安排系统的代码示例,利用C语言强大的数组和指针能够更加清晰地体现设计思路,需要的朋友可以参考下:通讯录管理系统实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。

完整的代码如下:#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针//#include <string.h>#include <stdlib.h> //标准库函数//#define NULL 0#define LEN sizeof(struct address_list) //计算字节//int n;struct address_list{char name[30]; //名字char work[30]; //职业char handset[30]; //手机char email[30]; //电子邮件char address[30]; //通讯地址struct address_list *next;};struct address_list *shifang(struct address_list *head); // 释放内存函数声明//创建函数,不带头结点的链表struct address_list *creat(void){struct address_list *head,*p1,*p2;char name[20];n=0;p1=(struct address_list *)malloc(LEN);p2=p1; //强制内存转换printf("请输入通讯录的内容!\n姓名输入为0时表示创建完毕!\n");printf("请输入姓名:");gets(name);if(strcmp(name,"0")!=0){strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);head=NULL;while(1){n=n+1; //记录通讯录人数个数if(n==1)head=p1;elsep2->next=p1;p2=p1;printf("请输入姓名:");gets(name);if(strcmp(name,"0")==0){break;}else{p1=(struct address_list *)malloc(LEN);strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);}}p2->next=NULL;return head;}elsereturn 0;}//输出函数void print(struct address_list *head){struct address_list *p;if(head!=NULL){p=head;printf("本通讯录现在共有%d人:\n",n);printf("---姓名-------职业--------手机-------Email-------通讯地址\n");printf("==================================\n");doprintf("== %s",p->name); printf(" ");printf("%s",p->work); printf(" ");printf("%s",p->handset); printf(" ");printf("%s",p->email); printf(" ");printf("%s",p->address); printf(" \n");p=p->next;}while(p!=NULL);printf("==================================\n");}elseprintf("通讯录为空,无法输出!\n");}//增加函数struct address_list *insert(struct address_list *head){struct address_list *p0,*p1,*p2;char name[20];p1=head;printf("请输入增加的内容:\n");printf("请输入姓名:"); gets(name);if(strcmp(name,"0")==0){printf("姓名不能为0,增加失败!\n");return(head);}else{p0=(struct address_list *)malloc(LEN);strcpy(p0->name,name);printf("请输入职业:"); gets(p0->work);printf("请输入手机:"); gets(p0->handset);printf("请输入电子邮件:"); gets(p0->email);printf("请输入通讯地址:"); gets(p0->address);n=n+1;if(head==NULL){head=p0;p0->next=NULL;return head;}else{while(strcmp(p0->name,p1->name)>0&&(p1->next!=NULL))p2=p1;p1=p1->next;}if(strcmp(p0->name,p1->name)<0 || strcmp(p0->name,p1->name)==0) {if(head==p1){head=p0;}else{p2->next=p0;}p0->next=p1;}else{p1->next=p0;p0->next=NULL;}return head;}}}struct address_list* delete_txl(struct address_list *head){struct address_list *p,*q;char name[30];if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p=head;printf("请输入需要删除的人的姓名:");gets(name);if(strcmp(head->name,name)==0){head=head->next;free(p);printf("删除操作成功!\n");return head;}{q=head,p=head->next;while(p!=NULL){if(strcmp(p->name,name)==0){q->next=p->next;free(p);printf("删除操作成功!\n");return head;}p=p->next;q=q->next;}}}//显示函数struct address_list *display(struct address_list *head){struct address_list *p1,*p2;char name[30];int m;if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p1=head;m=0;printf("请输入需要显示人的姓名:");gets(name);while(p1!=NULL){while((strcmp(p1->name,name))!=0 && p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("%s的通讯内容如下:\n",name);printf("---姓名--------职业--------手机-------Email------通讯地址\n");printf("==================================\n");printf("== %s",p1->name);printf(" ");printf("%s",p1->work);printf(" ");printf("%s",p1->handset);printf(" ");printf("%s",p1->email);printf(" ");printf("%s",p1->address); printf(" \n");printf("==================================\n");}p1=p1->next;}if(m==0){printf("此人未在本通讯录中!\n");}return(head);}//排序函数struct address_list *paixu(struct address_list *head){struct address_list *p1,*p2;int i,j;struct address_list1{char name[30];char work[30];char handset[30];char email[30];char address[30];};struct address_list1 px[200];struct address_list1 temp;if(head==NULL){printf("通讯录为空,无法排序!\n");return(head);}p1=head;for(i=0;i<n,p1!=NULL;i++){strcpy(px[i].name,p1->name);strcpy(px[i].work,p1->work);strcpy(px[i].handset,p1->handset);strcpy(px[i].email,p1->email);strcpy(px[i].address,p1->address);p2=p1;p1=p1->next;}head=shifang(head);for(j=0;j<n-1;j++){for(i=j+1;i<n;i++){if(strcmp(px[i].name,px[j].name)<0){temp=px[i];px[i]=px[j];px[j]=temp;}}}p1=(struct address_list *)malloc(LEN);p2=p1;strcpy(p1->name,px[0].name);strcpy(p1->work,px[0].work);strcpy(p1->handset,px[0].handset);strcpy(p1->email,px[0].email);strcpy(p1->address,px[0].address);head=p1;for(i=1;i<n;i++){p1=(struct address_list *)malloc(LEN);strcpy(p1->name,px[i].name);strcpy(p1->work,px[i].work);strcpy(p1->handset,px[i].handset);strcpy(p1->email,px[i].email);strcpy(p1->address,px[i].address);p2->next=p1;p2=p1;}p2->next=NULL;printf("按姓名排序后为:\n");print(head);return(head);}//姓名查找函数struct address_list *search(struct address_list *head){struct address_list *p1,*p2;int m;char name[30];if(head==NULL){printf("通讯录为空,无法分类查找!\n");return(head);}p1=head;printf("********************\n");printf("** 请输入需要查找的姓名**\n");printf("********************\n");m=0;gets(name);while(p1!=NULL){while(strcmp(p1->name,name)!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("你查找的内容是:\n");printf("+++++++++++++++++++++++++++++++++++\n");printf("++ %s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);printf("+++++++++++++++++++++++++++++++++++\n");}p1=p1->next;if(m==0){printf("此人未在本通讯录中!\n");}break;}return(head);}//释放内存函数struct address_list *shifang(struct address_list *head){struct address_list *p1;while(head!=NULL){p1=head;head=head->next;free(p1);}return(head);}//文件写入函数void save(struct address_list *head){FILE *fp;struct address_list *p1;char tong[30];if(head==NULL){printf("通讯录为空,无法存储!\n");return;}printf("请输入保存后的文件名:");gets(tong);fp=fopen("(tong).txt","w");if(fp==NULL){printf("cannot open file\n");return;}p1=head;fprintf(fp,"姓名职业手机Email 通讯地址\n");for(;p1!=NULL;){fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);p1=p1->next;}printf("保存完毕!\n");fclose(fp);}//文件读出函数struct address_list *load(struct address_list *head){FILE *fp;char tong[30];struct address_list *p1,*p2;printf("请输入要输出的文件名:");gets(tong);fp=fopen("(tong).txt","r");if(fp==NULL){printf("此通讯录名不存在,无法输出!\n");return(head);}else{head=shifang(head);}p1=(struct address_list *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address); if(feof(fp)!=0){printf("文件为空,无法打开!\n");return(head);}else{rewind(fp);p2=p1;head=p1;n=0;while(feof(fp)==0){fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address);if(feof(fp)!=0)break;p2->next=p1;p2=p1;p1=(struct address_list *)malloc(LEN);n=n+1;}p2->next=NULL;p1=head;head=head->next;n=n-1;free(p1);print(head);printf("打开完毕!\n");return(head);}fclose(fp);}//综合操作函数struct address_list *menu(struct address_list *head) {char num[10];while(1){printf("*********************\n");printf("*** 1 姓名查找****\n");printf("*** 2 单个显示****\n");printf("*** 3 增加****\n");printf("*** 4 退出****\n");printf("*********************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{head=search(head); //姓名查找print(head);}break;case '2':{head=display(head); //显示}break;case '3':{head=insert(head); //增加print(head);}break;case '4':return head;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"6")==0)break;}return head;}//主函数void main(){struct address_list *head=NULL;char num[10];printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); printf("*=* 程序说明*=*\n");printf("*=* 请及时保存创建完毕的通讯录内容! *=*\n"); printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); while(1){printf("************************\n");printf("*** 1 创建通讯录****\n");printf("*** 2 按名字排序****\n");printf("*** 3 综合操作****\n");printf("*** 4 保存****\n");printf("*** 5 打开****\n");printf("*** 6 删除****\n");printf("*** 7 退出****\n");printf("************************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{if(head==NULL){head=creat(); //创建print(head);}else{head=shifang(head);head=creat(); //重新创建print(head);}}break;case '2':{head=paixu(head); //排序}break;case '3':{head=menu(head); //综合操作}break;case '4':{save(head); //文件保存print(head);}break;case '5':{head=load(head); //文件输出}break;case '6':{head=delete_txl(head); //删除print(head);}break;case '7':head=shifang(head);break;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"7")==0)break;}}。

通讯录管理系统调试源代码

通讯录管理系统调试源代码

通讯录管理系统调试源代码预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制#include#include#include#include#includeusing namespace std;#define FILENAME "C:\\\\phonebook.txt"class Person{public:string name;string sex;string address;stringtel;stringshuxing;Person(string na){name=na;}Person(string na,stringse,stringadd,stringte,stringsx){name=na;sex=se;address=add;tel=te;shuxing=sx;}void display(){cout<<name<<" "<<address<<"="" "<<sex<<"="" "<<shuxing<<endl;<="" "<<tel<<"="" p="">}void add_Person1();void add_Person2();voidlist_Person();void Reach();voiddelete_Person();voiddisplay_diff();voidrenew_Person();};int main(){Person person1("hh");loop:cout<<"\★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\"<<endl;< p="">cout<<"\★★**********************欢迎使用通讯录系统******************* ★★\"<<endl;< p="">cout<<"\★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\"<<endl;< p="">cout<<"\★★************************************************* ***********★★"<<endl;< p="">cout<<"\★★ 1.查看所有联系人2.查找联系人3.添加联系人★★\"<<endl;< p="">cout<<"\★★************************************************* ***********★★\"<<endl;< p="">cout<<"\★★ 4.删除联系人5.修改联系人6.显示类别联系人★★\"<<endl;< p="">cout<<"\★★************************************************* ***********★★\"<<endl;< p="">cout<<"\★★7.退出程序★★\"<<endl;< p="">cout<<"\★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\"<<endl;< p="">cout<<"\ 开发者:"<<"黄龙吉"<<" "<<"张帆"<<" "<<"陈续旭"<<" "<<"程传奇"<<endl;< p="">cout<<"请输入菜单选项:";int a;do{cin>>a;if(a<0||a>8)cout<<"输入有误请重新输入!(1-7)"<<endl;< p=""> } while(a<0||a>8);switch(a){case 1: //显示所有联系人{system("cls");person1.list_Person();system("pause");system("cls");break;}case 2: //按姓名搜索 {system("cls");person1.Reach();system("pause");system("cls");break;}case 3: //添加联系人 { system("cls");person1.add_Person2();system("pause");system("cls");break;}case 4: //删除联系人{ system("cls");person1.delete_Person();system("pause");system("cls");break;}case 5: //修改联系人信息 { system("cls"); person1.renew_Person();system("pause");system("cls");break;}case 6: //按类别显示{ system("cls"); person1.display_diff();system("pause");system("cls");break;}case 7:{//退出break;}default:break;}if (a!=7){goto loop;}return 0;}void Person::add_Person1(){ofstreamfout;fout.open(FILENAME,ios::app);//文件不存在时会主动创建if (fout.fail()){cerr<<"open file with write error"<<endl;< p="">}fout<<name<<" "<<address<<"="" "<<sex<<"="" "<<shuxing<<endl;<="" "<<tel<<"="" p="">fout.close();}void Person::add_Person2(){string name;string sex;string address;stringtel;stringshuxing;ofstreamfout;fout.open(FILENAME,ios::app);//文件不存在时会主动创建if (fout.fail()){cerr<<"open file with write error"<<endl;< p="">}cout<<"请输入姓名:"<<endl;< p="">cin>>name;cout<<"请输入性别:"<<endl;< p="">cin>>sex;cout<<"请输入地址:"<<endl;< p="">cin>>address;cout<<"请输入电话:"<<endl;< p="">cin>>tel;cout<<"请输入属性:"<<endl;< p="">cin>>shuxing;fout<<setw(19)<<left<<name<<setw(5)<<left<<sex<<set w(13)<<left<<<setw(14)<<left<<tel<<setw(10)<<left<<shuxi ng<<endl;<="" p="">fout.close();}void Person::list_Person(){ //全部显示记录//read from fileifstream fin(FILENAME);if (fin.fail()){cerr<< "open file with read error" <<endl;< p="">_exit(-127);}//////////////////////////string s;//存储返回的字符串,即一行的内容//fin.seekg(20,ios::cur);cout<<"================================= ===================="<<endl;< p="">cout<<setw(19)<<left<<"姓名"<<setw(8)<<left<<"性别"<<setw(14)<<left<<"地址"<<setw(9)<<left<<"电话"<<setw(15)<<left<<"属性"<<endl<<endl;< p="">while(getline(fin,s)){//cout<<s.length()<<endl;< p="">cout<<s<<endl;< p="">}cout<<"================================= ===================="<<="" p="">}void Person::Reach(){ //查找记录ifstreaminput_file;char h[100];string s;string name;cout<<"请输入要查找人的姓名:"<<endl;< p="">cin>>name;input_file.open(FILENAME);if(!input_file){cout<<"Codefile.txt can't open file!"<<endl;< p="">return ;}int flag=0;while(input_file>>h){ //使用文件读取来判断文件是否到末尾//字符串运算使用双等于来比较比使用函数更方便if(h==name){cout<< h;getline(input_file,s);cout<<s<<endl;< p="">}else{flag=1;}}if(flag)cout<<"对不起通讯录中没有"+name+"的信息!"<<endl;< p="">input_file.close();//在c++中字符数组可以直接跟字符串作比较}void Person::delete_Person() //删除记录{ifstream fin(FILENAME);ofstreamfout("temp.txt");if (fin.fail()){cerr<< "open file with read error" <<endl;< p="">_exit(-127);}charch;//fin.seekg(20,ios::cur);while(fin.get(ch))//cout<<s.length()<<endl;< p="">fout.put(ch);cout<<="">cout<<"================================= ===================="<<="" p="">fout.close();ifstreamfinfile("temp.txt");ofstreamfoutfile(FILENAME);char h[100];string s;string name;cout<<"请输入要删除人的姓名:"<<endl;< p="">cin>>name;string name1;if(!finfile){cout<<"Codefile.txt can't open file!"<<endl;< p="">return ;}int flag=0;while(finfile>>h){ //使用文件读取来判断文件是否到末尾//字符串运算使用双等于来比较比使用函数更方便if(h!=name){foutfile<<h<<" ";<="" p="">getline(finfile,s);foutfile<<s<<endl;< p="">}else{flag=1;name1=name;getline(finfile,s);}}if(flag==1)cout<<"联系人"+name1+"已经被删除!"<<endl;< p=""> elsecout<<"对不起通讯录中无联系人"+name+"!"<<endl;< p=""> }void Person::renew_Person(){ifstream fin(FILENAME);ofstreamfout("temp.txt");if (fin.fail()){cerr<< "open file with read error" <<endl;< p="">_exit(-127);}charch;//fin.seekg(20,ios::cur);while(fin.get(ch))//cout<<s.length()<<endl;< p="">fout.put(ch);cout<<="">cout<<"================================= ===================="<<="" p="">fout.close();ifstreamfinfile("temp.txt");ofstreamfoutfile(FILENAME);char h[100];string s;string name;cout<<"请输入要修改的姓名:"<<endl;< p="">cin>>name;string name1;int flag;if(!finfile){cout<<"Codefile.txt can't open file!"<<endl;< p="">return ;}while(finfile>>h){ //使用文件读取来判断文件是否到末尾//字符串运算使用双等于来比较比使用函数更方便if(h!=name){foutfile<<h;< p="">getline(finfile,s);foutfile<<s<<endl;< p="">}else{flag=1;getline(finfile,s);string name;string sex;stringtel;string address;stringshuxing;cout<<"请输入记录:"<<endl;< p="">cout<<"姓名:";cin>>name;name1=name;cout<<"性别:";cin>>sex;cout<<"地址:";cin>>address;cout<<"电话:";cin>>tel;cout<<"属性:";cin>>shuxing;foutfile<<setw(19)<<left<<name<<setw(5)<<left<<sex<< setw(13)<<left<<address<<setw(14)<<left<<tel<<setw(10)<<left<<shuxing<< endl;<="" p="">}}if(flag==1)cout<<"联系人"+name+"已经成功修改为"+name1+"!"<<endl;< p="">elsecout<<"通讯录中没有联系人"+name+" 无法进行修改!"<<endl;< p="">}void Person::display_diff(){//分类显示函数ifstreaminfile(FILENAME);char name[100];char sex[100];chartel[100];charsx[100];char add[100];stringshuxing;cout<<"请输入想要查询的类型:"<<endl;< p="">cin>>shuxing;while(infile>>name){infile>>sex;infile>>add;infile>>tel;infile>>sx;if(sx==shuxing){cout<<setw(19)<<left<<name<<setw(5)<<left<<sex<<set w(13)<<left<<<setw(14)<<left<<tel<<setw(10)<<left<<shuxi ng<<endl;<="" p="">}}infile.close();}</setw(19)<<left<<name<<setw(5)<<left<<sex<<setw(13 )<<left<</endl;<></endl;<></endl;<></setw(19)<<left<<name<<setw(5)<<left<<sex<<setw(13 )<<left<<></endl;<></s<<endl;<></h;<></endl;<></endl;<></s.length()<<endl;<></endl;<></endl;<></endl;<></s<<endl;<></h<<"></endl;<></endl;<></s.length()<<endl;<></endl;<></endl;<></s<<endl;<></endl;<></endl;<></s<<endl;<></s.length()<<endl;<></setw(19)<<left<<"姓名"<<setw(8)<<left<<"性别"<<setw(14)<<left<<"地址"<<setw(9)<<left<<"电话"<<setw(15)<<left<<"属性"<<endl<<endl;<></endl;<></endl;<></setw(19)<<left<<name<<setw(5)<<left<<sex<<setw(13 )<<left<</endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></name<<"></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></name<<">。

(完整word版)个人通讯录管理系统源代码

(完整word版)个人通讯录管理系统源代码

个人通讯录管理系统import javax。

swing。

*;import java。

awt.*;import java。

awt.event。

*;import java.io.*;public class TongXunLu {public static void main(String[] args) {new menu();}}class menu implements ActionListener{JMenuItem zengjia,suoyou,beifen,quit,select,del;JFrame f;Container con;JMenuBar bar;String str1,str2,str3;JFileChooser fc1 = new JFileChooser();File fc2=new File("D://test。

txt”);menu(){f=new JFrame(”通讯录管理系统");f。

setDefaultCloseOperation(JFrame。

DISPOSE_ON_CLOSE);f。

setSize(500, 400);f。

setLocation(130, 150);con=f。

getContentPane();Color c=Color。

YELLOW ;Font fo=new Font("黑体",Font.BOLD,40); JPanel pan=new JPanel();JLabel lab=new JLabel(”通讯录管理系统");lab.setForeground(c);lab.setFont(fo);pan.add(lab);con。

add(pan);bar=new JMenuBar();f。

setJMenuBar(bar);JMenu menu1=new JMenu("文件"); JMenu menu2 =new JMenu(”查询"); JMenu menu3 =new JMenu("删除");zengjia=new JMenuItem("增加记录");suoyou=new JMenuItem(”所有记录”);beifen=new JMenuItem(”文件备份”);quit=new JMenuItem(”退出");select=new JMenuItem(”查询");del=new JMenuItem("删除");menu1.add(zengjia);(完整word版)个人通讯录管理系统源代码menu1。

c++通讯录管理系统源码

c++通讯录管理系统源码

C++通讯录管理系统源码//通讯录管理系统//显示菜单函数#include<iostream>#include<iomanip>#include<string>#define MAX 1000using namespace std;//设计联系人的结构体struct Person{string Name;string Phonenumber;//性别男为1,性别女为2int Sex;int Age;string Adress;};//设计通讯录的结构体struct Phonebook{struct Person personArray[MAX];int Size;};void showMenu() {cout << setw(60) <<"************************"<< endl;//设置输出规范化cout << setw(60) <<"***** 1.添加联系人 *****"<< endl;cout << setw(60) <<"***** 2.显示联系人 *****"<< endl;cout << setw(60) <<"***** 3.删除联系人 *****"<< endl;cout << setw(60) <<"***** 4.查找联系人 *****"<< endl;cout << setw(60) <<"***** 5.修改联系人 *****"<< endl;cout << setw(60) <<"***** 6.清空联系人 *****"<< endl;cout << setw(60) <<"***** 0.退出通讯录 *****"<< endl;cout << setw(57) <<"请输入你选择的选项"<< endl;cout << setw(60) <<"************************"<< endl; }//添加联系人的函数void addphonenumber(Phonebook * abs) {//先判断通讯录是否已经满人if (abs->Size==1000){cout <<"不好意思通讯录已经超过最大存储人数"<< endl;return;}else{//添加具体联系人string name;cout <<"请输入添加人的姓名"<< endl;cin >> name;abs->personArray[abs->Size].Name = name;//添加联系人性别int sex;cout <<"请输入联系人的性别"<< endl;cout <<"1--男"<< endl;cout <<"2--女"<< endl;while (true){cin >> sex;if (sex == 1 || sex == 2) {abs->personArray[abs->Size].Sex = sex;break;}cout <<"输入有误请重新输入"<< endl;}//请输入联系人的年龄int age;cout <<"请输入联系人的年龄"<< endl;cin >> age;abs->personArray[abs->Size].Age = age;//请输入联系人的地址string adress;cout <<"请输入联系人的家庭地址"<< endl;cin >> adress;abs->personArray[abs->Size].Adress = adress;//请输入联系人的电话号码string phonenumber;cout <<"请输入联系人的电话号码"<< endl;cin >> phonenumber;abs->personArray[abs->Size].Phonenumber = phonenumber;//添加一个联系人abs->Size++;cout <<"添加成功"<< endl;system("pause");//请按任意键继续system("cls");//清屏操作}}void showphonenumber(Phonebook * abs) {//首先判断通讯录是否为空if (abs->Size==0){cout << setw(60)<<"通讯录为空,没有联系人存在"<< endl;}else{for (int i = 0; i <abs->Size; i++){cout <<"姓名:"<<abs->personArray[i].Name <<"\t";if (abs->personArray[i].Sex == 1) {cout <<"性别:男"<<"\t";}else{cout <<"性别:女"<<"\t";}cout <<"年龄:"<<abs->personArray[i].Age <<"\t";cout <<"电话:"<<abs->personArray[i].Phonenumber <<"\t";cout <<"住址:"<<abs->personArray[i].Adress << endl;}system("pause");}}int Isexist(Phonebook* abs, string name) {for (int i = 0; i < abs->Size; i++){if (abs->personArray[i].Name ==name) {return i;}else{return -1;}}}void deletephonenumber(Phonebook * abs,string name) { int ret = Isexist(abs, name);if (ret == -1) {cout <<"查无此人"<< endl;}else{for (int i = ret; i < abs->Size; i++){abs->personArray[i] =abs->personArray[i + 1];cout <<"删除成功"<< endl;}abs->Size--;}}void Findphonenumber(Phonebook* abs, string name) { int ret = Isexist(abs, name);if (ret == -1) {cout <<"查无此人"<< endl;}else{cout <<"姓名:"<<abs->personArray[ret].Name <<"\t";if (abs->personArray[ret].Sex == 1) {cout <<"性别:男"<<"\t";}else{cout <<"性别:女"<<"\t";}cout <<"年龄:"<<abs->personArray[ret].Age <<"\t";cout <<"电话:"<<abs->personArray[ret].Phonenumber <<"\t";cout <<"住址:"<<abs->personArray[ret].Adress << endl;}}void ChangePhonenumber(Phonebook* abs, string name) {int ret = Isexist(abs, name);if (ret == -1) {cout <<"查无此人"<< endl;}else{cout <<"请输入要更改人的姓名"<< endl;cin >>name;abs->personArray[ret].Name =name;//添加联系人性别int sex;cout <<"请输入要更改人的性别"<< endl;cout <<"1--男"<< endl;cout <<"2--女"<< endl;while (true){cin >> sex;if (sex == 1 || sex == 2) {abs->personArray[ret].Sex = sex;break;}cout <<"输入有误请重新输入"<< endl;}//请输入联系人的年龄int age;cout <<"请输入要更改人的年龄"<< endl;cin >> age;abs->personArray[ret].Age = age;//请输入联系人的地址string adress;cout <<"请输入要更改人的家庭地址"<< endl;cin >> adress;abs->personArray[ret].Adress = adress;//请输入联系人的电话号码string phonenumber;cout <<"请输入要更改人的电话号码"<< endl;cin >> phonenumber;abs->personArray[ret].Phonenumber = phonenumber;cout <<"更改成功"<< endl;}}void Cleanperson(Phonebook* abs) {abs->Size = 0;cout <<"通讯录已清空"<< endl;system("pause");system("cls");}void main() {int select = 0;Phonebook abs;abs.Size = 0;while (true){showMenu();cin >> select;switch (select){case 1:addphonenumber(&abs);//添加联系人信息break;case 2://显示联系人信息showphonenumber(&abs);break;case 3: {string name;cout <<"请输入要删除的姓名"<< endl;cin >> name;deletephonenumber(&abs,name);break;}case 4:{string name;cout <<"请输入要查找的姓名"<< endl;cin >> name;Findphonenumber(&abs, name);break;}case 5:{string name;cout <<"请输入要修改通讯录的姓名"<< endl;cin >> name;ChangePhonenumber(&abs, name);break;}case 6:Cleanperson(&abs);break;case 0:cout <<"\n"<<"\n";cout <<setw(60)<<"退出系统成功,欢迎下次光临"<< endl;cout <<"\n";break;default:break;}}system("pause");}。

(完整word版)通讯录管理系统源代码

(完整word版)通讯录管理系统源代码

源代码:#include "stdio.h"#include ”stdlib。

h"#include "string.h”#include "conio.h”#include "stdlib.h”#define null 0struct 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:display();break;case 4:add();break;case 5:listbyname();break;case 6:dele();break;case 7:save();break;case 8: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。

个人通讯录管理系统,java源代码

个人通讯录管理系统,java源代码

/*** 业务类*/public class PABmanager {/*** 系统启动*/public static void main(String[] args) {Scanner input = new Scanner(System.in);UserDao userDao = new UserDaoImpl();TypeDao typeDao = new TypeDaoImpl();PersonDao personDao = new PersonDaoImpl();String in = input.next();if ("1".equals(in)) {boolean islogin = userDao.login();if(islogin){}else{System.exit(-1);}}else if ("2".equals(in)) {boolean modiFlag = userDao.modify();if(modiFlag){}else{}System.exit(-1);}else{System.exit(-1);}while(true){String in2 = input.next();if ("1".equals(in2)) {while(true){String num = input.next();if ("1".equals(num)) {String lbmc = input.next();String lbsm = input.next();String lbbz = input.next();Type type = new Type(lbmc,lbsm,lbbz);typeDao.createType(type);}else if ("2".equals(num)) {List<Type> types = typeDao.queryType();for (int i = 0; i < types.size(); i++) {Type type =types.get(i);}}else if ("3".equals(num)) {String lbmc = input.next();Type type = new Type(lbmc,null,null);typeDao.deleteType(type);}else if ("4".equals(num)) {break;}else{}}}else if ("2".equals(in2)) {while(true){String num = input.next();if ("1".equals(num)) {String lb = input.next();String xm = input.next();String dh = input.next();String sjh = input.next();String gzdw = input.next();String zz = input.next();String yzbm = input.next();Person person = new Person(lb,xm,dh,sjh,gzdw,zz,yzbm);personDao.createPerson(person);}else if ("2".equals(num)) {String name = input.next();Person p = personDao.queryPerson(name);}else if ("3".equals(num)) {int id = input.nextInt();String item = input.next();String val = input.next();personDao.updatePerson(id,item, val);}else if ("4".equals(num)) {String name = input.next();personDao.deletePerson(name);}else if ("5".equals(num)) {break;}else{}}}else if ("3".equals(in2)) {System.exit(-1);}else{}}}}。

通讯录管理系统代码

通讯录管理系统代码

#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct{ //通讯录结点类型char num[5]; //编号char name[9]; //姓名char sex[3]; //性别char phone[13]; //电话char addr[31]; //地址}DataType;typedef struct node{ //结点类型定义DataType data; //结点数据域struct node * next; //结点指针域}ListNode;typedef ListNode * LinkList;LinkList head;ListNode *p;//函数说明int menu_select( );LinkList CreateList(void);void InsertNode(LinkList head,ListNode *p);ListNode * ListFind(LinkList head);void DelNode(LinkList head);void PrintList(LinkList head);//主函数void main(){for(;;) {switch(menu_select()){case 1:printf("*********************************\n");printf("********通讯录链表的建立*********\n");printf("*********************************\n");head=CreateList();break;case 2:printf("*********************************\n");printf("* 通讯者信息的添加*\n");printf("*********************************\n");printf("编号(4) 姓名(8) 性别电话(11)地址\n");printf("*********************************\n");p=(ListNode *)malloc(sizeof(ListNode));//申请新结点scanf("%s%s%s%S%%s",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr);InsertNode(head,p);break;case 3:printf("*********************************\n");printf("* 通讯录信息的查询\n");printf("*********************************\n");p=ListFind(head);if(p!=NULL) {printf("编号姓名性别电话地址\n");printf("--------------------------------\n");printf("%S,%s,%s,%s,%S\n",p->data.num,p->,p->data.sex,p->data.phone,p->data.addr);printf("--------------------------------\n");}elseprintf("没查到要查询的通迅者!\n");break;case 4:printf("*********************************\n");printf("* 通讯录信息的删除\n");printf("*********************************\n");DelNode(head);//删除结点break;case 5:printf("*********************************\n");printf("* 通讯录链表的输出\n");printf("*********************************\n");PrintList(head);break;case 0:printf("\t 再见!\n");return;}}}//菜单选择函数int menu_select(){int sn;printf(" 通讯录管理系统\n");printf("=====================\n");printf(" 1 通讯录链表的建立\n");printf(" 2 通迅者结点的插入\n");printf(" 3 通讯者结点的查询\n");printf(" 4 通讯者结点的删除\n");printf(" 5 通讯录链表的输出\n");printf(" 0 退出管理系统\n");printf("=====================\n");printf(" 请选择0-5:" );for(;;){scanf("%d",&sn);if(sn<0||sn>5)printf("\n\t输入错误,重选0-5:");elsebreak;}return sn;}//用尾插法建立通讯录链表函数LinkList CreateList(void){//用尾插法建立带头结点的通讯录链表算法LinkList head=(ListNode *)malloc(sizeof(ListNode));//申请头结点ListNode *p,*rear;int flag=0;//结束标志置0rear=head;//尾指针初始指向头结点while(flag==0){p=(ListNode *)malloc(sizeof(ListNode));//申请新结点printf("编号(4)姓名(8)性别电话(11)地址(31)\n");printf("----------------------------------------------\n");scanf("%s%s%s%s%s",p->data.num, p->, p->data.sex, p->data.phone, p->data.addr);rear->next=p;//新结点链接到尾结点之后rear=p;//尾指针指向新结点printf("结束建表吗?(1/0):");scanf("%d",&flag);//读入一个标志数据}rear->next=NULL;//终端结点指针域置空return head;//返回链表头指针}//在通讯录链表head中插入结点void InsertNode(LinkList head,ListNode *p){ListNode *p1,*p2;p1=head;p2=p1->next;while(p2!=NULL && strcmp(p2->data.num,p->data.num)<0) {p1=p2;//p1指向刚访问过的结点p2=p2->next;//p2指向表的下一个结点}p1->next=p;//插入p所指向的结点p->next=p2;//链接表中剩余部分}//有序通讯率链表上的查找ListNode * ListFind(LinkList head){//有序通讯率链表上的查找ListNode *p;char num[5];char name[9];int xz;printf("==============\n");printf("1.按编号查询\n");printf("2.按姓名查询\n");printf("==============\n");printf(" 请选择\n");p=head->next;//假定通讯录表带头结点scanf("%s",&xz);if(xz==1){printf("请输入要查找者的编号:");scanf("%s",num);while(p && strcmp(p->data.num,num)<0)p=p->next;if(p==NULL || strcmp(p->data.num,num)>0)p=NULL;//没有查到要查找的通讯者}elseif(xz==2){printf("请输入要查找者的姓名:");scanf("%s",name);while(p && strcmp(p->,name)!=0)p=p->next;}return p;}//通讯链表上结点的删除void DelNode(LinkList head){char jx;ListNode *p,*q;p=ListFind(head);//调用查找函数if(p==NULL){printf("没有查到要删除的通讯者!/n");return;}printf("真的要删除该结点吗?(Y/N):");scanf("%c",&jx);if(jx=='y'|| jx=='Y'){q=head;while(q!=NULL && q->next!=p)q=q->next;q->next=p->next;//删除结点free(p);//释放被删除的结点空间printf("通讯者已被删除!/n");}}//通讯录链表的输出函数void PrintList(LinkList head){ListNode *p;p=head->next;//使p指向链表开始结点printf("编号姓名性别联系电话地址/n");printf("----------------------------/n");while(p!=NULL){printf("%s,%s,%s,%s,%s,/n",p->data.num,p->,p->data.sex,p->data.phone,p->data.a ddr);printf("--------------------/n");p=p->next;//后移一个结点}}。

通讯录管理系统源代码

通讯录管理系统源代码

源代码#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct _EmployeeInformation{int number;char name[20];char sex[20];char birthday[20];char job[20];char salary[20];char telephone[20];}EmployeeInformation;void viewall(EmployeeInformation employee[], int a);//查询所有职工的信息函数声明void viewa(EmployeeInformation employee[], int b);//查询一个职工的信息函数声明void add(EmployeeInformation employee[], int c);//新增一个职工的信息函数声明void delet(EmployeeInformation employee[], int d);//删除一个职工的信息函数声明void modify(EmployeeInformation employee[], int e);//修改一个职工的信息函数声明int main(){EmployeeInformation employee[100];EmployeeInformation a[1] = {0};int choice2, x = 0, i, j;char choice1 = 'y';FILE *fp;if((fp = fopen("d:\\EmployeeInfo.txt","r")) == NULL) //判断该文件是否存在,如否则提示,否则读出{printf("File open error!\n");exit(0);}fp = fopen("d:\\EmployeeInfo.txt","r");while(! feof(fp)){fscanf(fp,"%d %s %s %s %s %s %s\n",&employee[x].number,employee[x].name,employee[x].sex,employee[x].birthday,employee[x].job,employee[x].salary,employee[x].telephone);x ++;}fclose(fp);do{system("color 1f");printf("=====Welcome to Employee Management System!=====\n");printf("* 1.View All Employee Information. #\n");printf("# 2.View A Employee Information. *\n");printf("* 3.Add Employee Information. #\n");printf("# 4.Delete Employee Information. *\n");printf("* 5.Modify Employee Information. #\n");printf("# 6.Exit. *\n");printf("================================================\n");printf("Please Select:");scanf("%d", &choice2);switch(choice2){case 1: //查询所有职工的信息system("color 2f");viewall(employee, x);printf("y -> 继续系统n-> 退出系统\n");fflush(stdin);scanf("%c", &choice1);system("cls");break;case 2: //查询一个职工的信息system("color 3f");while(choice2 == 2){viewa(employee, x);printf("2->Countinue 0->Stop\n");scanf("%d",&choice2);}printf("y -> 继续系统n -> 退出系统\n");fflush(stdin);scanf("%c", &choice1);system("cls");break;case 3: //新增一个职工的信息system("color 4f");while(choice2 == 3){add(employee, x);x ++;printf("3->Countinue 0->Stop\n");scanf("%d", &choice2);}printf("y -> 继续系统n-> 退出系统\n");fflush(stdin);scanf("%c", &choice1);system("cls");break;case 4: //删除一个职工的信息system("color 5f");while(choice2 == 4){printf("Please input you want to delete number:");delet(employee, x);x --;printf("4->Countinue 0->Stop\n");scanf("%d", &choice2);}printf("y -> 继续系统n -> 退出系统\n");fflush(stdin);scanf("%c", &choice1);system("cls");break;case 5: //修改一个职工的信息system("color 6f");while(choice2 == 5){printf("Please input you want to modify number:");modify(employee, x);printf("5->Countinue 0->Stop\n");scanf("%d",&choice2);}printf("y -> 继续系统n -> 退出系统\n");fflush(stdin);scanf("%c", &choice1);system("cls");break;case 6: //退出系统system("color 7f");printf("Thank you for using this system!\n");printf("Press enter to exit……\n");exit(0);default: //提醒输入有误system("color 8f");printf("Your input is wrong.\n");printf("y -> 继续系统n -> 退出系统\n");fflush(stdin);scanf("%c", &choice1);system("cls");break;}}while(choice1 == 'y');for(j = 0; j < x-1; j ++) //冒泡排序,将职工按职工号大小进行排序{for(i = 0; i <= x-2 ; i ++){if(employee[i].number > employee[i+1].number){a[0] = employee[i];employee[i] = employee[i+1];employee[i+1] = a[0];}}}fp=fopen("d:\\EmployeeInfo.txt","w"); //新建文本并写入职工信息for(i = 0; i < x; i ++){fprintf(fp,"%d %s %s %s %s %s %s\n",employee[i].number,employee[i].name,employee[i].sex,employee[i].birthday,employee[i].job,employee[i].salary,employee[i].telephone);}fclose(fp);system("color 9f");printf("Thank you for using this system!\n");printf("Pres s enter to exit……\n");return 0;}void viewall(EmployeeInformation employee[], int a) //查询所有职工的信息{int i,j;EmployeeInformation b[1] = {0};for(j = 0; j < a-1; j ++) //冒泡排序,将从文本读出的职工信息按职工号大小进行排序{for(i = 0; i <= a-2 ; i ++){if(employee[i].number > employee[i+1].number){b[0] = employee[i];employee[i] = employee[i+1];employee[i+1] = b[0];}}}printf("Number\t \tName\tSex\tBir\tJob\tSalary\tTelephone\n");for(i = 0; i < a; i ++) //打出所有职工的信息{printf("%d\t",employee[i].number);printf("%s\t",employee[i].name);printf("%s\t",employee[i].sex);printf("%s\t",employee[i].birthday);printf("%s\t",employee[i].job);printf("%s\t",employee[i].salary);printf("%s\n",employee[i].telephone);}}void viewa(EmployeeInformation employee[], int b) //查询一个职工的信息{int i, flag, num;printf("Please input you want to search number:\n");scanf("%d", &num);flag = -1;for(i = 0; i < b; i ++) //将输入的号码与原有比较,如没有则提醒,否则继续{if(num == employee[i].number){flag = i;break;}}if(flag >= 0){printf("Number\t \tName\tSex\tBir\tJob\tSalary\tTelephone\n");printf("%d\t", employee[i].number);printf("%s\t", employee[i].name);printf("%s\t", employee[i].sex);printf("%s\t", employee[i].birthday);printf("%s\t", employee[i].job);printf("%s\t", employee[i].salary);printf("%s\n", employee[i].telephone);}else{printf("Not have this employee information.\n");}}void add(EmployeeInformation employee[], int c) //新增一个职工的信息{int i, num, flag;printf("Please input you want to add employee's informatoin:\n");printf("Number:");scanf("%d", &num);flag = -1;for(i = 0; i < c; i ++) //将输入的号码与原有比较,如已有则提醒,否则继续{if(num == employee[i].number){flag = i;break;}}if(flag >= 0){printf("There have had this employee information.\n");printf("Number\t \tName\tSex\tBir\tJob\tSalary\tTelephone\n");printf("%d\t", employee[i].number);printf("%s\t", employee[i].name);printf("%s\t", employee[i].sex);printf("%s\t", employee[i].birthday);printf("%s\t", employee[i].job);printf("%s\t", employee[i].salary);printf("%s\n", employee[i].telephone);}else{employee[c].number = num;printf("Name:");scanf("%s", employee[c].name);printf("Sex:");scanf("%s", employee[c].sex);printf("Birthday:");scanf("%s", employee[c].birthday);printf("Job:");scanf("%s", employee[c].job);printf("Salary:");scanf("%s", employee[c].salary);printf("Telephone:");scanf("%s", employee[c].telephone);printf("Add success!\n");}}void delet(EmployeeInformation employee[], int d) //删除一个职工的信息{int i, k, flag, num, choice4;scanf("%d", &num);flag = -1;for(i = 0; i < d; i ++) //将输入的号码与原有比较,如没有该职工则提醒,否则继续{if(num == employee[i].number){flag = i;k = i;break;}}if(flag >= 0){printf("Number\t \tName\tSex\tBir\tJob\tSalary\tTelephone\n");printf("%d\t",employee[i].number);printf("%s\t",employee[i].name);printf("%s\t",employee[i].sex);printf("%s\t",employee[i].job);printf("%s\t",employee[i].salary);printf("%s\n",employee[i].telephone);printf("Do you really want to delet this employee information.\n");printf("1->Yes 2->No\n");scanf("%d", &choice4);if(choice4 == 1) //将要删除的信息用后面的覆盖掉,以达到删除的目的{for(k = i; k < d-1; k ++){employee[k] = employee[k + 1];}}printf("Delete success!\n");}else{printf("Not have this employee information.\n");}}void modify(EmployeeInformation employee[], int e) //修改一个职工的信息{int i, flag, num, choice5;scanf("%d", &num);flag = -1;for(i = 0; i < e; i ++) //将输入的号码与原有比较,如没有该职工则提醒,否则继续{if(num == employee[i].number){flag = i;break;}}if(flag >= 0){printf("Number\t \tName\tSex\tBir\tJob\tSalary\tTelephone\n");printf("%d\t", employee[i].number);printf("%s\t", employee[i].name);printf("%s\t", employee[i].sex);printf("%s\t", employee[i].birthday);printf("%s\t", employee[i].job);printf("%s\n", employee[i].telephone);printf("Do you really want to change this employee information.\n");printf("1->Yes 2->No\n");scanf("%d", &choice5);if(choice5 == 1) //重新编辑职工的信息{printf("New number:");scanf("%d", &employee[i].number);printf("New name:");scanf("%s", employee[i].name);printf("New sex:");scanf("%s", employee[i].sex);printf("New birthday:");scanf("%s", employee[i].birthday);printf("New job:");scanf("%s", employee[i].job);printf("New salary:");scanf("%s", employee[i].salary);printf("New telephone:");scanf("%s", employee[i].telephone);printf("Modify success!\n");}}else{printf("Not have this employee information.\n");}}。

手机通讯录管理系统c++源代码

手机通讯录管理系统c++源代码

#include<iostream.h>#include<string.h>/*手机通讯录结构定义*/structfriends_list{char name[10]; /* 姓名*/int age; /* 年龄*/char telephone[13]; /* 联系电话*/};int Count = 0; /* 全局变量记录当前联系人总数*/ voidnew_friend(structfriends_list friends[ ] );voidsearch_friend(structfriends_list friends[ ], char *name);int main(void){ int choice; char name[10];structfriends_list friends[50]; /* 包含50个人的通讯录*/ do{cout<<"手机通讯录功能选项:1:新建2:查询0:退出\n";cout<<"请选择功能:"; cin>>choice;switch(choice){case 1:new_friend(friends); break;case 2:cout<<"请输入要查找的联系人名:"; cin>>name;search_friend(friends, name); break;case 0: break;}}while(choice != 0);cout<<"谢谢使用通讯录功能!\n";return 0;}/*新建联系人*/voidnew_friend(structfriends_list friends[ ]){structfriends_list f;if(Count == 50){cout<<"通讯录已满!\n";return;}cout<<"请输入新联系人的姓名:";cin>>;cout<<"请输入新联系人的年龄:";cin>>f.age;cout<<"请输入新联系人的联系电话:";cin>>f.telephone;friends[Count] = f;Count++;}/*查询联系人*/voidsearch_friend(structfriends_list friends[ ], char *name){ int i, flag = 0;if(Count == 0){cout<<"通讯录是空的!\n";return;}for(i = 0; i < Count; i++)if(strcmp(name, friends[i].name) == 0){ /* 找到联系人*/ flag=1; break;}if(flag){cout<<"姓名: “<<friends[i].name;cout<<"年龄: “<< friends[i].age;cout<<"电话: “<< friends[i].telephone;}elsecout<<"无此联系人!";}。

通讯录管理源代码

通讯录管理源代码
}
return -1;
}
int Guanli::findCouname(char name[30]){
int limm=findPast();
for(int i=0;i<limm;i++){
if(strcmp(name,stu[i].couname)==0)
char clas[50]; //班级
char specialty[50]; //专业
int couid; //题目编号
char couname[50]; //题目名称
char keyword[50]; //关键词
char technology[50]; //定义对象
{
cout<<"你输入的学号已经存在,请重新输入!"<<endl;
goto loop;
}
c++;
}
cout<<"请输入需要查找的题目名称:"<<endl;
cin>>name;
}
int Guanli::findName(char name[30]){
int limm=findPast();
for(int i=0;i<limm;i++){
if(strcmp(name,stu[i].stuname)==0)
return i;
}stu[150];
class Guanli
{
public:
void add(); //添加学生信息
void search(); //查询信息

通讯录管理系统的设计与实现c++源代码

通讯录管理系统的设计与实现c++源代码

通讯录管理系统的设计与实现源代码#include <iostream>#include <string>#include <fstream>#include<iomanip>using namespace std;struct Student{string num;//学号string name;//姓名int age;char tel;char addr;char emal;Student *next;} ;long iCount=0;Student *head=NULL;Student *pEnd=NULL;void LoadRecords(char *path)//从文本里面读取记录{fstream infile(path,ios::in);if(!infile){}else{infile>>iCount;int t=iCount;if(iCount!=0){for(;iCount>0;iCount--){Student *p=new Student;infile>>p->num>>p->name>>p->Maths;if(head==NULL){head=p;pEnd=p;pEnd->next=NULL;}else{pEnd->next=p;pEnd=pEnd->next;pEnd->next=NULL;}}}iCount=t;}infile.close();}void Print(Student *h)//打印记录{if(h==NULL){cout<<"\n****************************************\n\n";cout<<"没有学生记录!\n";cout<<"\n****************************************\n";return;}cout<<"\n************************************************************ ********************\n\n";cout<<"所有的学生:\n\n";cout<<" ------------------------------------------\n";cout<<"| "<<setw(10)<<"学号"<<"| "<<setw(10)<<"姓名"<<"| "<<setw(10)<<"年龄"<<"| "<<setw(10)<<"电话""| "<<<< setw(10)<<"地址"<<"| "<< setw(10)<<"邮箱"<<" | \n"; while(h){cout<<" ------------------------------------------\n";cout<<"| "<<setw(10)<<h->num<<"| "<<setw(10)<<h->name <<"| "<<setw(10)<<h->age<<"| "<<setw(10)<<h->tel<<"| "<<setw(10)<<h->addr<<"| "<<setw(10)<<h->emal<<" |\n";h=h->next;}cout<<" ------------------------------------------\n";cout<<"\n************************************************************ ********************\n\n";}void Print_All(Student *h)//输出全部{if(h==NULL){cout<<"\n****************************************\n";cout <<"没有学生记录!\n";cout<<"\n****************************************\n";return;} cout<<"\n************************************************************ ********************\n";cout<<"所有学生:\n\n";cout<<" ------------------------------------------\n";cout<<"| "<<setw(10)<<"学号"<<"| "<<setw(10)<<"姓名"<<"| "<<setw(10)<<"年龄"<<"| "<<setw(10)<<"电话"<<"| "<<setw(10)<<" 地址"<<"| "<<setw(10)<<"邮箱"<<" | \n"; for{h->number=1;h->number++}{cout<<" ------------------------------------------\n";cout<<"| "<<setw(10)<<h->num<<"| "<<setw(10)<<h->name <<"| "<<setw(10)<<h->age<<"| "<<setw(10)<<h->tel<<"| "<<setw(10)<<h->addr<<"| "<<setw(10)<<h->emal<<" |\n";h=h->next;}cout<<" ------------------------------------------\n";cout<<"\n************************************************************ ********************\n\n";}void Print_search(Student *h)//查询{if(h==NULL){cout<<"\n************************************************ ********************************\n";cout<<"没有学生记录!\n";cout<<"\n****************************************\n";return;} cout<<"\n************************************************************ ********************\n";cout<<"所查学生:\n\n";cout<<" ------------------------------------------\n";cout<<"| "<<setw(10)<<"学号"<<"| "<<setw(10)<<"姓名"<<"| "<<setw(10)<<"年龄"<<"| "<<setw(10)<<"电话"<<"| "<<setw(10)<<" 地址"<<"| "<<setw(10)<<"邮箱"<<" | \n"; while(h){if(h->number=i){cout<<" ------------------------------------------\n";cout<<"| "<<setw(10)<<h->num<<"| "<<setw(10)<<h->name <<"| "<<setw(10)<<h->age<<"| "<<setw(10)<<h->tel<<"| "<<setw(10)<<h->addr<<"| "<<setw(10)<<h->emal<<" |\n";}h=h->next;}cout<<" ------------------------------------------\n";cout<<"\n************************************************************ ********************\n\n";}void Add(Student *s){if(pEnd==NULL){head=s;pEnd=s;s->next=NULL;}else{pEnd->next=s;pEnd=s;pEnd->next=NULL;}cout<<"\n==================================================\n";cout<< s->name<<" 的资料添加完毕!\n";cout<<"==================================================\n"; iCount++;}void main(){LoadRecords("c:\\test.txt");int n;cout<<"\n************************************************************ ********************\n";cout<<"[1] 增加一个学生\n"<<"[2] 显示所有的学生以及他们的成绩\n"<<"[3] 显示数组中学号为I的学生信息\n"<<"[4] 存盘并退出\n";cout<<"************************************************************** ******************\n\n";cout<<"请选择操作项:[1-5] ";cin>>n;while(1){switch (n){case 1:{Student *p=new Student;cout<<"\n*************************************************** *****************************\n\n";cout<<"请输入内容:"<<endl;cout<<"学号\t\t姓名\t\t年龄\ t\t电话\ t\t地址\ t\t邮箱\n";cin>>p->num>>p->name>>p->age>>p->tel>>p->addr>>p->emal;Add(p );break;}case 2:Print(head);break;case 3:Print_search(head);break;case 4:{fstream outfile("c:\\test.txt",ios::out);if(!outfile){}else{outfile<<iCount<<" ";while(head){outfile<<head->num<<" "<<head->name<<" "<<head->Maths<<" ";head=head->next;}}outfile.close();cout<<"\n==================================================\ n";cout<<"再见"<<endl;cout<<"==================================================\n\ n";return;}default:cout<<"\n==================================================\ n";cout<<"无效输入"<<endl;cout<<"==================================================\n\ n";}cout<<"***************按任意键继续***************\n";getchar();getchar();system("cls");//if(n>=1&&n<=5){cout<<"\n***************************************************** ***************************\n";cout<<"[1] 增加一个学生\n"<<"[2] 显示所有的学生以及他们的成绩\n"<<"[3] 显示数组中平均成绩<40的学生以及他们的成绩\n"<<"[4] 显示数组中学号为I的学生信息\n"<<"[5] 存盘并退出\n";cout<<"******************************************************* *************************\n\n";cout<<"请选择操作项:[1-5] ";cin>>n;}}}。

通讯录管理系统代码

通讯录管理系统代码
cout << "请输入姓名:" << endl;
cin >> name;
abs->personArray[abs->m_size].m_name = name;
//性别,
cout << "请输入性别:" << endl;
cout << "1----男" << endl;
cout << "2----女" << endl;
C
项目一
#include<iostream>
using namespace std;
#include <string>
#define MAX 1000 //最大用户数
//创建菜单生成函数
void showMenue(){
cout << "*************************" << endl;
};
//1、添加联系人
void addPerson(Addressbooks * abs){
//判断-如果通讯录已经满了,就不再添加了
if (abs->m_size == MAX)
{
cout << "通讯录已满,无法添加!" << endl;
return;
}
else{
//添加具体联系人
//姓名,
string name;
if (abs->personArray[i].m_name == name)

C语言通讯录管理系统程序代码

C语言通讯录管理系统程序代码

一、课程设计题目及要求题目通讯录管理系统任务:自学C语言中相关知识,设计出通讯录管理系统。

要求如下所述:◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;;◆能够提供添加、删除和修改通讯录信息的功能;◆能够提供按姓名或电话等查询;◆将通讯录保存在文件中;◆能够按表格方式输出通讯录信息。

二、系统设计方案(一)总体框架图:通讯录管理系统:1、录入通讯录信息2、修改通讯录信息3、查询通讯录信息4、浏览通讯录信息5、增加通讯录信息6、推出系通讯录统(二)模块设计模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明模块二:录入通讯录信息声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt"模块三:通讯录信息的查找声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支模块四:通讯录信息的修改声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块五:通讯录信息按学号排序声明void sort()将录入通讯录信息系按升序排列,用的是“冒泡排序法”实现排序模块六:加通讯录信息声明void insert()插入通讯录信息,先通过判断通讯录是否存在,若否则继续输入,若是跳出,重新循环模块七:通讯录信息声明void del()实现通讯录信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。

模块八:示学生信息通过display()函数输出通讯录信息模块九;存信息通过fp=fopen("student.txt","w");写入信息模块十:界面菜单通过switch(num)调用,以上各函数,实现功能三、设计详情1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】图1. 主函数流程图void menu()/* 界面*/{ int num;printf(" \n\n 自动化0901通讯录管理系统\n\n");printf(" ***************** \n\n");printf(" * 制作人:翁行兴* \n \n");printf(" ***************** \n\n");printf("*********************系统功能菜单************************ \n");printf(" ---------------------- ---------------------- \n");printf(" * 1.刷新学生信息* * 2.查询学生信息* \n");printf(" * 3.修改学生信息* * 4.增加学生信息* \n");printf(" * 5.按学号删除信息* * 6.显示当前信息* \n");printf(" * 7.保存当前学生信息* * 8.退出系统* \n");printf(" ---------------------- ---------------------- \n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择\n");}}四、源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#define BUFLEN 100#define LEN 15#define N 100struct record /*结构体*/{char code[LEN+1]; /* 学号*/char name[LEN+1]; /* 姓名*/int age; /* 年龄*/char sex[3]; /* 性别*/char time[LEN+1]; /* 出生年月*/char add[30]; /* 家庭地址*/char tel[LEN+1]; /* 电话号码*/char mail[30]; /* 电子邮件地址*/}stu[N];int k=1,n,m; /* 定义全局变量*/void readfile();/* 函数声明*/void seek();void modify();void insert();void del();void display();void save();void menu();int main(){while(k)menu();system("pause");return 0;}void readfile()/* 建立信息*/{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8){i++; i=i;}fclose(fp);n=i;printf("录入完毕!\n");}void seek() /*查找*/{int i,item,flag;char s1[21]; /* 以姓名和学号最长长度+1为准*/printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){ case 1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学号姓名年龄性别出生年月地址电话E-mail\n");printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该学号不存在!\n"); break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf(" 学号姓名年龄性别出生年月地址电话E-mail\n"); printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该姓名不存在!\n"); break;case 3:return;default:printf("请在1-3之间选择\n");}}}void modify() /*修改信息*/{int i,item,num;char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准*/ printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0) /*比较字符串是否相等*/num=i;printf("------------------\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改电话号码\n");printf("7.修改E-mail地址\n");printf("8.退出本菜单\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("请输入新的姓名:\n");scanf("%s",s2);strcpy(stu[num].name,s2); break; case 2:printf("请输入新的年龄:\n");scanf("%d",&stu[num].age);break; case 3:printf("请输入新的性别:\n");scanf("%s",sex1);strcpy(stu[num].sex,sex1); break; case 4:printf("请输入新的出生年月:\n"); scanf("%s",s2);strcpy(stu[num].time,s2); break; case 5:printf("请输入新的地址:\n");scanf("%s",s2);strcpy(stu[num].add,s2); break; case 6:printf("请输入新的电话号码:\n"); scanf("%s",s2);strcpy(stu[num].tel,s2); break; case 7:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2); break; case 8:return;default:printf("请在1-8之间选择\n");}}}void sort()/*按学号排序*/{int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) {strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail);strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}void insert() /*插入函数*/{int i=n,j,flag;printf("请输入待增加的学生数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第%d 个学生的学号:\n",i+1); scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0) {printf("已有该学号,请检查后重新录入!\n");break; /*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第%d 个学生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第%d 个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第%d 个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第%d 个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time);printf("请输入第%d 个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第%d 个学生的电话:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第%d 个学生的E-mail:\n",i+1);scanf("%s",stu[i].mail);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}{int i,j,flag=0;char s1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}void display(){int i;printf("所有学生的信息为:\n");printf("学号姓名年龄性别出生年月地址电话E-mail\n"); printf("--------------------------------------------------------------------\n"); for(i=0;i<n;i++){printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}}void save(){int i;FILE *fp;fp=fopen("student.txt","w"); /*写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}fclose(fp);}void menu()/* 界面*/{int num;printf(" \n\n 自动化0901学生信息管理系统\n\n");printf(" ***************** \n\n");printf(" * 制作人:翁行兴* \n \n");printf(" ***************** \n\n");printf("*********************系统功能菜单************************ \n");printf(" ---------------------- ---------------------- \n");printf(" * 1.刷新学生信息* * 2.查询学生信息* \n");printf(" * 3.修改学生信息* * 4.增加学生信息* \n");printf(" * 5.按学号删除信息* * 6.显示当前信息* \n");printf(" * 7.保存当前学生信息* * 8.退出系统* \n");printf(" ---------------------- ---------------------- \n"); printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择\n");}}五.调试过程一.主界面二.测试数据当选择4——增加学生信息时,出现对话框,先输入增加的数量。

数据结构通讯录系统源代码

数据结构通讯录系统源代码

头文件:/* 单链表中每个结点的联系人结构体定义*/typedef struct Node/* 每个联系人结构体*/{char name[10];//姓名char telnum[20];//电话号码char address[256];//地址struct Node *next;}SLNode;void Initiate(SLNode ** head)/* 初始化单链表*/{if((*head=(SLNode *)malloc(sizeof(SLNode)))== NULL){printf("内存空间不足!\n");exit(1) ;}(*head)->next=NULL;/* 置链尾标记NULL */}int Length(SLNode *head)//求当前通讯录中的联系人数{SLNode *p;/* p指向头结点*/int size;/* size初始值为0 */p = head->next;size = 0 ;while(p != NULL && head != NULL)/* 循环计数*/{k = k->next;size++;}return size;/* 返回其大小*/}void DataWrite(SLNode *head){SLNode *p;int i;FILE *fp;fp = fopen("Address list.dat","wb+");//打开文件,覆盖以前的文件p = head->next;for( i = 0;i < Length(head);i++){fwrite(p,sizeof(SLNode),1,fp);p =p->next;}fclose(fp);//关闭文件}void Load(SLNode *head)/* 初始化*/{SLNode *q,*p,*m;FILE *fp;int count = 0 ;fp = fopen("Address list.dat","rb");//以读的方式打开二进制文件//rewind(fp);if(fp == NULL){fp = fopen("Address list.dat","wb+");if(fp != NULL){printf("通讯录打开失败!创建新的通讯录!\n");}else{printf("通讯录打开失败!创建新的通讯录失败!\n");exit(0);}}else{q = (SLNode *)malloc(sizeof(SLNode ));while(fread(q,sizeof(SLNode),1,fp)){//fread(q,sizeof(SLNode),1,fp);if(ferror(fp)){printf("error!\n");break;}p = head;m = (SLNode *)malloc(sizeof(SLNode));strcpy(m->name,q->name);strcpy(m->telnum,q->telnum);strcpy(m->address,q->address);count++;m->next=p->next;/* 将新结点插入队头结点*/p->next=m;memset(q,'\0',sizeof(SLNode));}}fclose(fp);printf("\t\t\t\t 通讯录总联系人数:%d \n",Length(head));}int PrintAll(SLNode *head)/* 打印所有出所有联系人信息*/{int i;SLNode *q;q = head->next;if(q == NULL){printf("通讯录为空!\n");return -1;}else{for(i = 0 ; i< Length(head);i++)//逐个打印联系人信息{printf("编号:%d\t姓名:%s\t号码:%s\t地址:%s\n",i+1,q->name,q->telnum,q->address);q = q->next;}return 0;}}void ANParam(SLNode *head)/* 在带头结点的单链表head的第i(0《i《size)个结点前插入一个存放数据元素x的结点*//* 插入成功则返回1,失败则返回0 */SLNode *p,*q;q=(SLNode*)malloc(sizeof(SLNode));/* 生成新结点由指针p指示*/printf("请输入新联系人姓名:");fflush(stdin);gets(q->name);printf("请输入新联系人的电话号码:");fflush(stdin);gets(q->telnum);printf("请输入新联系人的地址:");fflush(stdin);gets(q->address);p = head;q->next=p->next;/* 将新结点插入队头结点*/p->next=q;DataWrite(head);//将信息以覆盖方式重新写入通讯录中printf("添加成功!\n");}void AWParam(SLNode *head,char telnum[11],char name[10],char address[256])//带形参的添加函数/* 在带头结点的单链表head的第i(0《i《size)个结点前插入一个存放数据元素x的结点*//* 插入成功则返回1,失败则返回0 */{SLNode *p,*q;q=(SLNode*)malloc(sizeof(SLNode));/* 生成新结点由指针p指示*/strcpy(q->name,name);strcpy(q->telnum,telnum);strcpy(q->address,address);p = head;q->next=p->next;/* 将新结点插入队头结点*/p->next=q;DataWrite(head);printf("添加成功!\n");}void Delete(SLNode *head)/* 删除带头结点的单链表head的第i(1~n,n为结点个数)个结点/* 删除结点的元素有x带回,删除成功返回1,否则返回0 */{SLNode *p,*s;int choice,i,m,ret;if(PrintAll(head))//如果通讯录为空,则无法删除,退出返回主菜单{return ;}m = Length(head);//求当前通讯录人数printf("请输入你要删除联系人的前面编号:");ret = scanf("%d",&choice);while(!ret || choice > m || choice < 1)//判断输入是否为数字,是否为,若否,则重新输入{printf("请正确输入你要删除联系人的前面编号!\n");fflush(stdin);ret = scanf("%d",&choice);}p=head;i = 0;//由于我们打印出来时是由1开始,所以此处定义为0while(p->next != NULL && p->next->next != NULL && i < (choice-1) )//查找所选择编号前一个结点{p = p->next;i++;}s = p->next;p->next = p->next->next;free(s);DataWrite(head);//将更新的数据重新写入文件中printf("删除成功!");}void SBName(SLNode *head)/* 查找函数,如果不存在,可添加*/{SLNode *p;int choice;char telnum[11], name[10], address[256];p=head->next;printf("请输入你要查找联系人的姓名:");fflush(stdin);gets(name);while(p != NULL){if(!strcmp(p->name,name)){printf("姓名:%s\t电话:%s\t地址:%s\n",p->name,p->telnum,p->address);break;}p=p->next;}if(p == NULL){printf("错误!所查找联系人不在通讯录,是否将该联系人添加至通讯录?\n");printf("请按0确认添加,否则不添加\n");scanf("%d",&choice);//判断输入是否为数字,且数字范围是1~m之间,否则重新输入if(!choice){printf("该联系人姓名:%s\n",name);printf("请输入该联系人的电话:\n");fflush(stdin);gets(telnum);printf("请输入该联系人的地址:\n");fflush(stdin);gets(address);AWParam(head,telnum,name,address);}}}void SBTell(SLNode *head)/* 查找函数,如果不存在,可添加*/{SLNode *p;int choice;char telnum[20], name[10], address[256];p=head->next;printf("请输入你要查找联系人的号码:");fflush(stdin);gets(telnum);while(p != NULL){if(!strcmp(p->telnum,telnum)){printf("姓名:%s\t电话:%s\t地址:%s\n",p->name,p->telnum,p->address);break;}p=p->next;}if(p == NULL){printf("错误!所查找联系人不在通讯录,是否将该联系人添加至通讯录?\n");printf("请按0确认添加,否则不添加\n");scanf("%d",&choice);if(!choice){printf("该联系人电话号码:%s\n",telnum);printf("请输入该联系人的姓名:\n");fflush(stdin);gets(name);printf("请输入该联系人的地址:\n");fflush(stdin);gets(address);AWParam(head,telnum,name,address);}}}void Destroy(SLNode **head)/* 因为单链表的结点空间是在程序运行中申请的,而系统只负责自动收回程序中静态分配的内存空间,所以在程序退出前释放动态申请的内存空间*/{SLNode *p,*p1;p= *head;while(p!=NULL)/* 通过循环释放所有的动态开辟的内存空间*/{p1=p;p=p->next;free(p1);}*head=NULL;}void Alter(SLNode *head){SLNode *p;int choice,num,i,m;if(PrintAll(head))//通讯录为空无法进行修改,退出返回主菜单{return ;}printf("请输入你要更改的信息人的前面编号:");fflush(stdin);m = Length(head);//获取当前通讯录人数i = scanf("%d",&num);//判断是否输入数字while( !i || num > m || num < 1 )//判断输入是否为数字,若否,则重新输入{printf("请正确输入你要更改的信息人的前面编号!\n");fflush(stdin);}p = head->next;//p指向第一个联系人for(i = 0 ; i< Length(head);i++){if((i+1) == num){printf("姓名:%s\t号码:%s\t地址:%s\n",p->name,p->telnum,p->address); lable1: printf("请输入你要更改的信息:\n");printf("1、姓名\t2、号码\t3、地址\t0、全部修改\n");m = scanf("%d",&choice);while(!m || choice > 3 || choice < 0)//判断输入是否为数字,若否,则重新输入{printf("请正确输入选项!\n");fflush(stdin);m = scanf("%d",&choice);}switch(choice){case 1:printf("请输入新姓名:");fflush(stdin);gets(p->name);break;case 2:printf("请输入新号码:");fflush(stdin);gets(p->telnum);break;case 3:printf("请输入新地址:");fflush(stdin);gets(p->address);break;default:printf("请输入新姓名:");fflush(stdin);gets(p->name);printf("请输入新号码:");fflush(stdin);gets(p->telnum);printf("请输入新地址:");fflush(stdin);gets(p->address);break;}printf("以下是刚更改的信息,请确认:");printf("姓名:%s\t号码:%s\t地址:%s\n",p->name,p->telnum,p->address);printf("是否继续更改该联系人?\n");printf("继续修改请按0,否则保存修改!\n");printf("输入:");scanf("%d",&choice);if(!choice){goto lable1;}else{DataWrite(head);//将修改后的文件全部写入通讯录中}}p = p->next;}}int menu(){int ret,i;printf("\t\t******************通讯录******************\n\n");printf("\t\t 1、查找联系人\t");printf("2、添加联系人\n\n");printf("\t\t 3、显示所有联系人信息\t");printf("4、删除联系人\n\n");printf("\t\t 5、更改联系人信息\t");printf("6、退出\n\n");printf("\t\t**************请选择相应功能**************\n");printf("\t\t输入对应功能编号:");i = scanf("%d",&ret);while(!i || ret > 6 || ret <1)//判断输入是否为数字,若否,则重新输入{printf("\t\t请正确输入功能编号!\n");fflush(stdin);printf("\t\t输入对应功能编号:");i = scanf("%d",&ret);}return ret;}void DeleteAll(SLNode *head){FILE *fp;fp = fopen("Address list.dat","wb+");//已创建新的文件覆盖以前的文件,一达到清除目的Destroy(&head);Initiate(&head);//初始化单链表,创建新的头结点printf("清除成功!\n");}测试主函数:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>#include "LinkList.h"int main(){int choice = 0 ,ret;SLNode *head;char s[500] = "\t\t**谢谢使用**\n",a[] = "\t\t华中农业大学楚天学院通讯录系统\n";system("title 华中农业大学楚天学院通讯录系统");system("color 30");while(choice < strlen(a)){putchar(a[choice]);Sleep(80);choice++;}Initiate(&head);Load(head);while(1){switch(menu()){case 1:system("cls");if(head->next == NULL){printf("通讯录为空!\n");break ;}else{printf("请选择查找方式:");printf("1、姓名\t 2、电话号码\t 3、退出\n");ret = scanf("%d",&choice);while(!ret || choice >3 || choice <1){printf("输入有误!请正确选择查找方式!\n");fflush(stdin);ret = scanf("%d",&choice);}switch(choice){case 1:SBName(head);break;case 2:SBTell(head);break;case 3:break;default:break;}}break;case 2:system("cls");ANParam(head);break;case 3:system("cls");PrintAll(head);break;case 4:system("cls");printf("请选择删除方式:\n");printf("1、清空通讯录\t2、删除指定联系人\n");ret = scanf("%d",&choice);while(!ret || choice <1 || choice >2){printf("输入错误!请正确选择删除方式!\n");ret = scanf("%d",&choice);}if(choice == 1){DeleteAll(head);}else if(choice == 2){Delete(head);}break;case 5:system("cls");Alter(head);break;case 6:choice = 0;while(choice < strlen(s)){putchar(s[choice]);Sleep(80);choice++;}exit(0);break;default:printf("输入错误!请重新输入!\n");break;}}Destroy(&head);//清除动态申请空间system("pause");return 0;}。

通讯录管理系统程序C语言源代码

通讯录管理系统程序C语言源代码
} Address;
Address * h[5];
/*************************************************/
void menu();//一级菜单
void relatives();//亲人
void friends();//朋友
void classmates();//同学
/********************************************************/
void InitList(Address *&L);
int ListInsert(Address *&L,int i,AddressList e);
void DispList(Address *L);
void CreateListR(Address *&L, AddressList a[],int n);
int ListEmpty(Address *L);
void DispName(Address *L);
int ListLength(Address *L);
int ListDelete(Address *&L,int i,AddressList &e);
scanf("%d",&num1);
switch(num1)
{
case 1: menu();
case 2: SecondMenu();
default :exit(1);
}
}
void Delete()
{
int num1;
int m;
if (ListEmpty(h[x])==1)

通讯录管理系统java课程设计源代码

通讯录管理系统java课程设计源代码

通讯录管理系统简介通讯录是一种记录联系人信息的工具,用于存储和管理与个人、组织或机构相关的联系信息。

通讯录管理系统是一个用于创建、编辑、查找和删除联系人信息的软件应用程序。

本文将介绍一个使用Java编写的通讯录管理系统的设计源代码。

功能需求通讯录管理系统需要具备以下功能: 1. 添加联系人:用户可以输入联系人的姓名、电话号码、电子邮件地址等信息,并将其添加到通讯录中。

2. 编辑联系人:用户可以选择要编辑的联系人,并可以修改其姓名、电话号码、电子邮件地址等信息。

3. 查找联系人:用户可以输入关键字进行搜索,系统将根据关键字在通讯录中查找匹配的联系人并显示出来。

4. 删除联系人:用户可以选择要删除的联系人,并将其从通讯录中删除。

5. 显示所有联系人:系统可以列出所有已存储在通讯录中的联系人信息。

设计思路数据结构为了实现上述功能,我们需要设计合适的数据结构来存储联系人信息。

在这里,我们可以使用一个类来表示每个联系人,其中包含姓名、电话号码和电子邮件地址等属性。

然后,我们可以使用一个集合(如ArrayList)来存储所有的联系人对象。

用户界面为了方便用户操作,我们可以使用命令行界面(CLI)来实现通讯录管理系统。

用户可以通过输入不同的命令来执行相应的操作,如添加联系人、编辑联系人、查找联系人等。

功能实现1.添加联系人:用户输入联系人的姓名、电话号码和电子邮件地址,系统创建一个联系人对象,并将其添加到集合中。

2.编辑联系人:用户选择要编辑的联系人,并输入要修改的信息,系统更新该联系人对象的属性。

3.查找联系人:用户输入关键字,系统遍历所有联系人对象并检查是否包含该关键字,将匹配的结果显示出来。

4.删除联系人:用户选择要删除的联系人,系统从集合中移除该对象。

5.显示所有联系人:系统遍历集合中的所有联系人对象,并将其属性逐个显示出来。

代码实现import java.util.ArrayList;import java.util.Scanner;class Contact {private String name;private String phoneNumber;private String email;public Contact(String name, String phoneNumber, String email) { = name;this.phoneNumber = phoneNumber;this.email = email;}public String getName() {return name;}public void setName(String name) { = name;}public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}public class AddressBook {private ArrayList<Contact> contacts;public AddressBook() {contacts = new ArrayList<>();}public void addContact(Contact contact) {contacts.add(contact);System.out.println("Contact added successfully!");}public void editContact(int index, Contact contact) {if (index >= 0 && index < contacts.size()) {contacts.set(index, contact);System.out.println("Contact edited successfully!");} else {System.out.println("Invalid index!");}}public void searchContacts(String keyword) {boolean found = false;for (Contact contact : contacts) {if (contact.getName().contains(keyword) || contact.getPhoneNumber ().contains(keyword)|| contact.getEmail().contains(keyword)) {System.out.println(contact.getName() + " | " + contact.getPhon eNumber() + " | " + contact.getEmail());found = true;}}if (!found) {System.out.println("No matching contacts found.");}}public void deleteContact(int index) {if (index >= 0 && index < contacts.size()) {contacts.remove(index);System.out.println("Contact deleted successfully!");} else {System.out.println("Invalid index!");}}public void displayAllContacts() {for (Contact contact : contacts) {System.out.println(contact.getName() + " | " + contact.getPhoneNum ber() + " | " + contact.getEmail());}}public static void main(String[] args) {AddressBook addressBook = new AddressBook();Scanner scanner = new Scanner(System.in);while (true) {System.out.println("\nAddress Book Management System");System.out.println("1. Add Contact");System.out.println("2. Edit Contact");System.out.println("3. Search Contacts");System.out.println("4. Delete Contact");System.out.println("5. Display All Contacts");System.out.println("6. Exit");System.out.print("\nEnter your choice: ");int choice = scanner.nextInt();switch (choice) {case 1:scanner.nextLine(); // Consume newline characterSystem.out.print("Enter name: ");String name = scanner.nextLine();System.out.print("Enter phone number: ");String phoneNumber = scanner.nextLine();System.out.print("Enter email address: ");String email = scanner.nextLine();Contact contact = new Contact(name, phoneNumber, email);addressBook.addContact(contact);break;case 2:System.out.print("Enter index of the contact to edit: ");int indexToEdit = scanner.nextInt();if (indexToEdit >= 0 && indexToEdit < addressBook.contacts. size()) {scanner.nextLine(); // Consume newline characterSystem.out.print("Enter name: ");String newName = scanner.nextLine();System.out.print("Enter phone number: ");String newPhoneNumber = scanner.nextLine();System.out.print("Enter email address: ");String newEmail = scanner.nextLine();Contact newContact = new Contact(newName, newPhoneNumb er, newEmail);addressBook.editContact(indexToEdit, newContact);} else {System.out.println("Invalid index!");}break;case 3:scanner.nextLine(); // Consume newline characterSystem.out.print("Enter keyword to search contacts: ");String keyword = scanner.nextLine();addressBook.searchContacts(keyword);break;case 4:System.out.print("Enter index of the contact to delete: "); int indexToDelete = scanner.nextInt();addressBook.deleteContact(indexToDelete);break;case 5:addressBook.displayAllContacts();break;case 6:System.exit(0);break;default:System.out.println("Invalid choice!");}}}}总结通过以上的设计和实现,我们创建了一个简单的通讯录管理系统。

大一c语言通讯录管理系统源代码

大一c语言通讯录管理系统源代码

大一c语言通讯录管理系统源代码以下是一个简单的C语言通讯录管理系统的源代码示例:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100// 定义联系人结构体typedef struct {char name[50];char phone[20];char email[50];} Contact;// 全局通讯录数组Contact contacts[MAX_CONTACTS];int numContacts = 0;// 添加联系人void addContact() {if (numContacts >= MAX_CONTACTS) {printf("通讯录已满,无法添加新联系人。

\n");return;}Contact newContact;printf("请输入联系人姓名:");scanf("%s", );printf("请输入联系人电话:");scanf("%s", newContact.phone);printf("请输入联系人邮箱:");scanf("%s", newContact.email);contacts[numContacts] = newContact; numContacts++;printf("联系人添加成功。

\n");}// 显示所有联系人void displayContacts() {if (numContacts == 0) {printf("通讯录为空。

\n");return;}printf("所有联系人:\n");for (int i = 0; i < numContacts; i++) {printf("姓名:%s\t电话:%s\t邮箱:%s\n", contacts[i].name, contacts[i].phone, contacts[i].email); }}// 主菜单void showMenu() {printf("******************************\n"); printf("***** 通讯录管理系统*****\n"); printf("******************************\n"); printf("请选择操作:\n");printf("1. 添加联系人\n");printf("2. 显示所有联系人\n");printf("0. 退出\n");printf("******************************\n"); }int main() {int choice;while (1) {showMenu();printf("请选择操作(输入数字):");scanf("%d", &choice);switch (choice) {case 0:printf("已退出通讯录管理系统。

通讯录管理系统代码(C程序)

通讯录管理系统代码(C程序)

#include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"struct date //定义一个结构体类型数组{char name[10]; /*姓名*/char phone[12];char email[20]; /*邮箱*/char QQ[20];}per[10];int menu() //主菜单选择函数{int c; //定义一个整型变量do{system("cls"); //清屏printf("\t*******通讯录*******\n");printf("\t--------------------\n");printf("\t 1、通讯信息录入\n");printf("\t 2、通讯信息显示\n");printf("\t 3、通讯信息保存\n");printf("\t 4、通讯信息删除\n");printf("\t 5、通讯信息修改\n");printf("\t 6、通讯信息增加\n");printf("\t 7、通讯信息查询\n");printf("\t 0. 退出\n");printf("\t--------------------\n");printf("\t请您选择(0-7):");scanf("%d",&c);}while(c>7&&c<0);return(c);}int Input(struct date per[10],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){printf("\t姓名:");scanf("%s",per[n+i].name);printf("\t电话号码:");scanf("%s",per[n+i].phone);printf("\t电子邮箱:");scanf("%s",per[n+i].email);printf("\tQQ:");scanf("%s",per[n+i].QQ);gets(x);printf("\n\t是否继续添加?(Y/N)");fflush(stdin);//清空缓存scanf("%c",&sign);i++;}return(n+i);}void writeToFile(struct date per[10],int n){FILE *fp=NULL;int i=0;fp=fopen("phone.dat","wb");if(fp==NULL){printf("打开文件出错!\n");exit(0);}for(i=0;i<10;i++)fwrite(&per[i],sizeof(per),1,fp); //把字节为1的信息写入文件fclose(fp);}void Display(struct date per[10],int n){int i;printf("----------------------------------------------------------------------\n");//格式/printf(" 姓名电话号码QQ 电子邮箱\n");printf("----------------------------------------------------------------------\n");for(i=1;i<n+1;i++){printf("%-15s%-14s%-14s%-14s\n",per[i-1].name,per[i-1].phone,per[i-1].QQ,per[i-1].email);if(i>1&&i%10==0){printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_a_record(struct date per[10],int n){char s[20];int i=0,j;printf("\t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return(n);}for(j=i;j<n-1;j++){strcpy(per[j].phone,per[j+1].phone);strcpy(per[j].name,per[j+1].name);strcpy(per[j].QQ,per[j+1].QQ);strcpy(per[j].email,per[j+1].email);}printf("\t\t\t已经成功删除!\n");return(n-1);}void Query_a_record(struct date per[10],int n){int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------电话│\n");printf("\t│3------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){char s[20];int i=0;printf("\t请输入想查询的姓名:");scanf("\t%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人QQ: %s\n",per[i].QQ);printf("\t电话号码: %s\n",per[i].phone);printf("\t电子邮箱: %s\n",per[i].email);} ;if(m==2){char s[20];int i=0;printf("\t请输入想查询的电话:");scanf("\t%s",s);while(strcmp(per[i].phone,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人姓名: %s\n",per[i].name);printf("\t此人QQ: %s\n",per[i].QQ);printf("\t电子邮箱: %s\n",per[i].email);} ;}void Change(struct date per[10],int n){char s[20];int i=0;printf("\t请输入想修改的记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("姓名:");scanf("%s",per[i].name);printf("电话号码:");scanf("%s",per[i].phone);printf("QQ:");scanf("%s",per[i].QQ);printf("电子邮箱:");scanf("%s",per[i].email);printf("\n修改成功!");}void WritetoText(struct date per[10],int n){int i=0;FILE *fp; //定义文件指针char filename[20]; //定义文件名printf("\t保存到文件\n"); //输入文件名if((fp=fopen("phone.dat","w"))==NULL){printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"***************************************通讯录********************************\n");fprintf(fp," 姓名电话号码QQ 电子邮箱\n");fprintf(fp,"-----------------------------------------------------------------------------\n");while(i<n){fprintf(fp,"%-10s\t%-3s\t%-20s\t%-20s\n",per[i].name,per[i].phone,per[i].QQ,per[i].email);i++;}fprintf(fp,"-------------------------------------------------------------------------\n");fprintf(fp,"********************************共有%d条记录***************************\n",n);fclose(fp); //关闭文件printf("保存成功!\n");}void main() //主函数{int n=0,i;while(1){switch (menu()){case 1:{printf("\n\t 通讯信息录入\n"); //信息录入n=Input(per, n);}break;case 2:printf("\n\t\t\t 通讯录记录表\n"); //显示记录Display(per,n);break;case 3:printf("\n\t保存功能\n");WritetoText(per,n); //保存数据printf("\t");system("pause"); //操作完成后进行暂停break;case 4:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(per,n); //删除记录printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(per,n); //修改数据printf("\t");system("pause");break;case 6:printf("\n\t添加记录到通讯录\n"); //添加记录n=Input(per,n);break;case 7:printf("\n\t在通讯录中查找记录\n");Query_a_record(per,n); //查找记录printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n"); //结束程序printf("\n\t\t");system("pause");exit(0);}}}。

个人通讯录管理系统C语言源程序优秀版

个人通讯录管理系统C语言源程序优秀版

#include <stdio.h> /*头文件*/#mclude <stdlib.h> //包含最常用的系统函数#mclude <stiing.li> //关于字符数组的函数定义的头文件^include <como.h> 〃控制台输入输出〃定义结构体stmct tongxunlu /*定义通讯录结构体变量*/{chai xuigniHig[20]; /*定义输入名字的数组*/chai diaiiliua[20]; /*定义输入电话号码的数组*/ chai dizlii[40]; /*定义输入地址的数组*/ }txl[100];//默认100个数据mt n=0;//iti录数据联系人数量FILE *fp; /*定义文件*/〃程序用到的所有函数void zhucaidanQ; /*主菜单函数*/void zengjia(); /*增加联系人函数*/void ieadfile(); /*文件中读入函数*/ void writefileQ; /*文件中写入函数*/ void xiugaiQ; /*修改联系人函数*/void xiugai_xiiiginnig(); /* 姓名修改*/void xiugai_dianliuaO; /* 电话号码修改 */ void chazliao(); /*查找联系人函数*/void cliazhao_xuigniingQ; /*按姓名查找*/void chazhao_dianliua(); /*按号码查找*/ void shanchu(); /*删除联系人函数*/void shanchu_quanbu(); /*全部删除*/void shanchu_daiige(); /*单个删除*/ void xianslii(); /* 号码显示*/〃程序主函数模块六void main() { readfileQ;while(l)(/* + 函数mam*/ /*读入文件*//*循环(永远进行)*/zliucaidanQ;}/*调用主菜单函数*/}〃读取文件函数部分开始模块七void ieadfile(){if((俎=fopen("c:\\通讯录.txt”,T))==NULL) /*以只读方式打开判定文件是否为空*/ { prmtf("\ii\t\t\t 通讯录文件不存在”);/*判断结论*/if ((fp=fopen( ” 同通讯录.txf TWR—NULL) /* 只写方式判断 */prmtf(n \ii\t\t 建立失败 J; exit(O);}else/*不为空则执行else*/{prmtf(n \ii\t -----------------欢迎使用通讯录管理系统 ----------------n ); 通讯录文件已建立”); pimtf("\ii\t按任意键进入主菜单”);prmtf(n \ii\t --------------------------------------------------------- ”);getchQ; return;exit(O);}fseek (俎,0,2); /*文件位置指针移动到文件末尾*/ if(ftell(fp)>0)/* 文件不为空 */rewmd(fp); /*文件位置指针移动到文件开始位置*/ for (n=0:!feof(fp) && fiead(&txl[n],sizeof(struct tongxunlu), 1pnmf(”\n\t --------- 欢迎使用通讯录管理系统l.Obeat 版 -------------- ”); pimtf("\ii\t 文件导入成功 pimtf("\ii\t按任意键返回主菜单prmtf(n \ii\t --------------------------------------------------------- ”); getchQ;return;}〃读取文件函数结束 〃文件主菜单函数开始模块六void zhucaidan(){clw c; system(,,cls M );pnntf("\ii\t\t| ------- 欢迎您使用通讯录管理系统l.Obeat 版——|”); pnntfC\n\t\t|1-添加联系人2-查询和显示联系人|”);严为空结论勺严退出*/”); ”);}prmtf(n \ii\t ------……欢迎使用通讯录管理系统l.Obeat 版————”);文件导入成功通讯录文件中无任何纪录按任意键返回主菜单prmtf(n \ii\t ------ ---------------------------------------- ”);getchQ;”);”); ”);return;pnntf(-\n\t\t| 3 ■删除联系人 4 ■修改联系人门;pnntf(-\n\t\t| 5 ■保存退出0 ■不保存退出|”);pnntf(H\n\t\t| ----------------------------------------------- |M);请选择您所所要的服务:c=getch();switch (c) /*对于上边的选择项目*/{case ^^zengjiaQibreak;case 2:chazhao();bieak;case 31: shanchu();break;case '4】xiugai();b[eak;case r51:writefileQ;break;case r O\exit(O);default: zliucaidanQ; /*如果没有则返回主菜单等待输入*/}}〃文件主菜单函数结束〃添加新联系人函数开始模块一void zengjia(){pmitf(”\n\t\t ----------------- 请输入联系人信息---------------- \n");pnntf(H\ii\t\t输入联系人姓名:”);scanf("%s".txl[n].xingmuig); /* 键盘输入 */ pnntf(H\n\t\t输入联系人电话号码:”);scanf("%s".txl[ii].diaiiliua);pnntfC'\n\t\t输入联系人地址:”);scanf("%s'\txl[ii] .dizlu);n++; /*统计个数*/pnntf("\ii\t\t是否继续添加联系人?(Y/N):”); /*是否继续输入联系人.*/ if (getchO==y) zengjiaQ;retinn;}〃添加新联系人结束〃写入文件函数开始模块七void writefileQ /*联系人写入文件*/{int i;if ((如=fbpen("c:\\ 通讯录.txt","w"))=NULL){文件打开失败”);}for (i=O;i<n;i++)if (fwiite (&txl[i],sizeof(stiiict tongxunlu), 1 .fp) !=1)prmtf(n\n\t\t写入文件错误}}fclose(fp); /* 关闭文件*/pnntf("\n\t ------------------------------------------------------ ”); /* 输出提示信息 */pnntf(H\ii\t\t通讯录文件已保存“);pnntf(H\ii\t\t谢谢使用,欢迎再次使用pnntf("如果对本软件有疑问,请到我们官网(www.shj .com)提出您的问题,我们将为您解答An");pnntf(哦们的软件有不足之处,欢迎到官网()反映,我们将努力改正!”);pnntfCWt按任意键退出程序\n\t\f); /*输出完毕*/exit(O);pnntfC\n\t ------------------------------------------------------ ”);}〃写入文件函数结束/〃查询联系人函数开始模块四-------------------------------------------void chazliao(){char c;system(,,cls M);-------------- 显示和查询联系人--------------- pnntf(H\ii\t\t| 1-逐个显示所有2-按姓名查询pnntf("\ii\t\t| 3-按电话查询4-返回主菜单pnntf(H\n\t\t| ----------------------------------------------------- ”);putf(%\佗请选择您所所要的服务:c=getch();switch (c){ _case f r:xianshi();break; 产显示所有号码可case 2:chazhao_xmgming();break; /*调用按姓名查询函数*/case y:chazhao_dianhua();break; /*调用按号码查询函数*/case ^^zhucaidanOibreak; /*主菜单*/}}void xianslii()//显示所有联系人函数{int i;system(”cls”);〃清楚屏幕if(ii!=O){pimtf("\ll\t\t ---------- 欢迎您查询通讯录所有联系人信息----------- ”);for (i=0;i<n;i-H-) /* 依次序显示*7姓名:%s",txl[i].xingming);电话: %s M,txl[i].diaiiliua); priiitf(n\n\t\t 地址: %s H,txl[i].dizhi); prmtf(H\n\t\t M);if (i+l<n){prmtf(n\ii\t\t -----------------------”);system(” pause");//返回错误信息}}------------------------------------------- M);}else /*无联系人*/pnntf("\n\t\t通讯录中无任何纪录”);pnntf(”\n\t\t按任意键返回主菜单:");getchQ;return;}〃按号码查询函数void chazliao_dianliua(){int maik=0;int i;chaiphone[15];pnntf("\n\t\t ------------------ 按电话查找--------------------- ”);pnntf("\n\t\t请输入电话号码:”);scanf(”%s"、phone);fbr(i=O;i<n;i++){if (strcix)p(txl[i] .dianhua,phone)=0) 〃对比查找函数{ pimtfC'\n\t\t --------------- 以下是您查找的学生信息 ----------- ");姓名: %s”,txl[i].xingming);电话: %s M,txl[i].diaiiliua); priiitf(n\n\t\t 地址: %s H,txl[i].dizhi); prmtf(H\n\t\t --------------------------------------------------------------”);pimtf("\n\t\t按任意键返回主菜单:”);niark++;getchQ;return;}}if (mark==0)没有找到联系人的信息”);按任意键返回主菜单”);getchQ;return;}}void chazliao_xingniHig()//按姓名查询{int maik=0;int i;clw naine[20];pmitf(”\n\t\t -------------- 按姓名查找 ------------------ ”);pnntfC\n\t\t请输入您要查找的姓名:”);scanf(H%s n4iame);fbr(i=O;i<n;i++){if (strcmp(txl[i] .xmgnuiig,name)==O){ pimtfC'\ii\t\t --------------- 以下是您查找的联系人信息-------------- ”);姓名: %s”,txl[i].xingming); 电话: %s M,txl[i].diaiiliua);piiiitf(n\n\t\t 地址: %s r\txl[i].dizhi); -------------------------- H);niark++;getchQ; return;}}if (mark==0){prmtfC'\ii\t\t没有找到联系人的信息”);按任意键返回主菜单”);getchQ;return;}}////查询联系人函数结束 --------------------------------------////删除联系人函数部分开始 ---------------------------------void shanchu()char c;if(n==O) 严如果通讯录中没有一个记录输出以下部分引prmtf(n\ii\t\t对不起,文件中无任何纪录按任意键返回主菜单”);getchQ;return;}system(H cls M); 严清屏 */pnntf("\n\t\t ----------------- 删除菜单-------------------- ”);pnntf("\n\t\t| 1-删除所有2-删除单个pnntf(H\n\t\t| 3-返回主菜单|”);pnntf(H\n\t\t| ------------------------------------------------pnntfC\n\t\t请选择您所所要的服务:”);c=getch(); /*输入的赋予choice*/switch (c){case T:shaiichu_quanbu();bwak;case f2*:shanchu_dange();bieak;case 3*:zhucaidanQ;break;default:zliucaidan();break:}}void shanchu_quanbuQ//删除所有联系人{pnntf("\ii\t\t 确认删除?(y/n)”);if (getchO==y){fclose(fp);if ((fp=fopen(H通讯录.txf i,,,w H))=NULL) 严文件空输出 */{pnntfC\n\t\t不能打开文件,删除失败J;readfile();}n=0;纪录已删除,按任意键返回主菜单”);getchQ;return;}elsereturn;}void shaiichu_xmgming()〃按姓名删除联系人int i,m,mark=0,a=0:char naine[20];pgtf(”\n\t\t请输入要删除联系人姓名:”);scanf(H%s n4iame); /* 键盘输入姓名*7for (i=a;i<n;i++){if (strcmp(txl[i] ) == 0) //对比字符串查找到要删除的联系人{pnntf(“\n\t\t以下是您要删除的联系人纪录:”);”);姓名:%s",txl[i].xingming);电话:%s M,txl[i].diaiiliua);priiitf(n\n\t\t 地址: %s M,txl[i].dizhi);prmtf(n\ii\t\t -------------------------------- ”);是否删除?(y/n),r);if (getcli()=='y') // 实现删除功能{for (m=i;m<n-l ;m++)txl[m]=txl[m+1]; /*将通讯录的想前移*/mark++;pimtfC'Wt删除成功”);pimtf("\ii\t\t 是否继续删除?(y/n)”);if (getch()=y) shanchu_xuigniHig(); /*继续调用删除函数*/return;}elsereturn;}contmue;}if (mark==0){prmtf(n\ii\t\t没有该联系人的纪录J;pimtfC'Wt是否继续删除?(y/n)”);if (getchO—y1)shanchu_xmgniuigQ;return;}}void shanchu_diaiiliua()//按电话号码删除联系人{int ijn,mark=0: /*变量定义*/char phone[20];pmtf(%\t\t请输入要删除联系人电话号码:scanf(”%s",phone);if(n==0){prmtf(n\ii\t\t对不起,文件中无任何纪录J; pimtfC'Wt按任意键返回主菜单”);getchQ;return;}for (i=0;i<n;i++){if (strcmp(txl[i] .diaiiliua.phone)=0){以下是您要删除的联系人纪录:”); piiiitf(n\n\t\t 姓名:%s*\txl[i].xiiiginiiig);电话:%s,\txl[i].diaiiliua); 地址: %s,\txl[i].dizhi); prmtf(H\ii\t\t 是否删除?(v/n)H);if (getchO—y'){for (m=i;m<n-1 ;m++) //递推替换实现删除txl[m]=txl[m+l];n—;mark++; //记录删除次数prmtfC'Wt删除成功”);prmtfC'\ii\t\t 是否继续删除?(y/n)”); if (getch()='y')shanchu_dianliua();return;}elsereturn;}continue;}if (mark==0){pnntf(”\n\t\t没有该联系人的纪录”); pnntf(”\n\t\t 是否继续删除?(y/n)");if (getchO—y r)return;void shanchu_daiige()〃删除单个联系人{char c;pmirffS't ------------------------------------------------------------ H);pnntf("\n\t\t 1 -按姓名删除2-按电话删除”);pnntfC\n\t\t请选择您所所要的服务:”);pmirffS't ------------------------------------------------------------ H);c=getch(); switch (c){case 1 r:shanchu_xingniHig();break;case t2,:shanchu_diaiiliua();bieak;}}///删除函数部分结束 --------------------------------------------///修改联系人函数开始 ----------------------------------------void xiugaiQ /* 修改函数 */{char c;if(n=0){prmtf(n\ii\t\t对不起,文件中无任何纪录按任意键返回主菜单”);getchO;return;}system^cls”);pnntf("\n\t\t ---------------- 修改联系人菜单 ------------------- ”);pnntfC\n\t\t| 1-按姓名修改2-按电话修改pnntf(H\n\t\t| 任意键-按返回主菜单|");pnntfC'Wt -------------------------------------------------------- M);c=getch();switch(c){case T[xii】gai_xingmiiig() ;break;case '2】xiugai_duinhua();bTeak;default:zliucaidanQ;break:}}void xiugaLxmgnungOchar c; mt i,maik=0;clw name[20];请输入要修改的联系人姓名:”);scaiiH M%s n4iame);if(n==O){pimtfC'Wt文件中无任何联系人”);pimtfC'Wt按任意键返回主菜单”);getchQ; niaik++;return;}fbr(i=O;i<n;i++){if(strcmp(txl[i].xnigmmg4iame)==0){prmtfC'Wt以卞是您要修改的联系人信息”);printf(H\ii\t\t 姓名:%s,\txl[i].xmgnung);printf(H\n\t\t 电话:%s,\txl[i].dianliua);printf(H\n\t\t 地址:%s,\txl[i].dizhi);pnntf(H\n\t\t 是否修改(y/n)”);if(getch()==y){prmtf(^i\t ------------- 请选择修改信息------------ ”);1-修改姓名2-修改电话”);prmtf(H\ii\t 3 ■修改地址”);prmtf(H\ii\t ----------------------------------------- M);pimtfC'\ii\t请选择您所所要的服务:”);scjnf("%s 役&c);switch(c){case T: printf(H\n\t 请输入新姓名:”); scanf(n%s,\txl[i].xmgniuig);bieak;case21:printf(n\n\t 请输入新电话:%s"); scanf(n%s,\txl[i].diaiiliua);break;case3,:prmtf(n\ii\t请输入新地址小);scanf(n%s,\txl[i].dizlu);break;}}}}if(maik=O){pnntfC'Wt没有找到联系人信息”);pnntfC^Xt 是否继续修改?(Y/N):“);if(getchQ=='y')xiugai.xingnwigQ;retuin;void xiugai_dianliua(){clw c,phone[15];mt ijnaik=0;pimtf("\ll\t\t请输入要修改联系人的号码:”);scanf(”%s”, phone);if(n==0){文件中无任何联系人”);按任意键返回主菜单”);getchQ;mark++;return;}fbr(i=O;i<n;i-H-){if(strcmp(txl[i].dianiiua,phone)=0){prmtfC'Wt以卞是您要修改的联系人信息”);pnntf(H\n\t\t 姓名:%s,\txl[i].xmgnung);printf(H\n\t\t 电话:%s,\txl[i].dianliua); printf(H\ii\t\t 地址:%s,\txl[i].dizhi);prmtfC'Wt 是否修改(y/n)”);if(getch()==y){pnmf(%i\t ------------- 请选择修改信息 ------------ ”);pnntf(”\n\t 1-修改姓名2-修改电话”);prmtf(H\ii\t 3 ■修改地址”);prmtf(n\ii\t ----------------------------------------- M);pimtfC'\n\t请选择您所所要的服务:”);scanf(”%s 役&c);switch(c){case*r:请输入新姓名:”);scanfC%s»txl[i] ・xingming);bieak; case2:printf{”\n\t 请输入新电话:”);scanf(”%sjtxl[i] ・dianlnm);bTeak; cas&3【pnntfC\n\t请输入新地址小);scanf(”%s 役txl[i] ・dizlu);bTeak;}}}}if(maik=O){pnntfC'\ii\t没有该联系人信息”);pnntfC^Xt 是否继续修改?(Y/N):“); if(getchQ=='y') xiugai_diaiiliua();return;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <iostream>#include <fstream>#include <string>#include<iomanip>#include<stdlib.h>using namespace std;#define FILENAME "C:\\phonebook.txt"class Person{public:string name;string sex;string address;stringtel;stringshuxing;Person(string na){name=na;}Person(string na,stringse,stringadd,stringte,stringsx){name=na;sex=se;address=add;tel=te;shuxing=sx;}void display(){cout<<name<<" "<<sex<<" "<<address<<" "<<tel<<" "<<shuxing<<endl;}void add_Person1();void add_Person2();voidlist_Person();void Reach();voiddelete_Person();voiddisplay_diff();voidrenew_Person();};int main(){Person person1("hh");loop:cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\t"<<endl;cout<<"\t★★**********************欢迎使用通讯录系统******************* ★★\t"<<endl;cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\t"<<endl;cout<<"\t★★************************************************************★★"<<endl;cout<<"\t★★ 1.查看所有联系人 2.查找联系人 3.添加联系人★★\t"<<endl;cout<<"\t★★************************************************************★★\t"<<endl;cout<<"\t★★ 4.删除联系人 5.修改联系人 6.显示类别联系人★★\t"<<endl;cout<<"\t★★************************************************************★★\t"<<endl;cout<<"\t★★7.退出程序★★\t"<<endl;cout<<"\t★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\t"<<endl;cout<<"\t 开发者:"<<"黄龙吉"<<" "<<"张帆"<<" "<<"陈续旭"<<" "<<"程传奇"<<endl;cout<<"请输入菜单选项:";int a;do{cin>>a;if(a<0||a>8)cout<<"输入有误请重新输入!(1-7)"<<endl;} while(a<0||a>8);switch(a){case 1: //显示所有联系人{system("cls");person1.list_Person();system("pause");system("cls");break;}case 2: //按姓名搜索 {system("cls");person1.Reach();system("pause");system("cls");break;}case 3: //添加联系人 { system("cls");person1.add_Person2();system("pause");system("cls");break;}case 4: //删除联系人{ system("cls");person1.delete_Person();system("pause");system("cls");break;}case 5: //修改联系人信息 { system("cls");person1.renew_Person();system("pause");system("cls");break;}case 6: //按类别显示{ system("cls");person1.display_diff();system("pause");system("cls");break;}case 7:{//退出break;}default:break;}if (a!=7){goto loop;}return 0;}void Person::add_Person1(){ofstreamfout;fout.open(FILENAME,ios::app);//文件不存在时会主动创建if (fout.fail()){cerr<<"open file with write error"<<endl;}fout<<name<<" "<<sex<<" "<<address<<" "<<tel<<" "<<shuxing<<endl;fout.close();}void Person::add_Person2(){string name;string sex;string address;stringtel;stringshuxing;ofstreamfout;fout.open(FILENAME,ios::app);//文件不存在时会主动创建if (fout.fail()){cerr<<"open file with write error"<<endl;}cout<<"请输入姓名:"<<endl;cin>>name;cout<<"请输入性别:"<<endl;cin>>sex;cout<<"请输入地址:"<<endl;cin>>address;cout<<"请输入电话:"<<endl;cin>>tel;cout<<"请输入属性:"<<endl;cin>>shuxing;fout<<setw(19)<<left<<name<<setw(5)<<left<<sex<<setw(13)<<left<<addr ess<<setw(14)<<left<<tel<<setw(10)<<left<<shuxing<<endl;fout.close();}void Person::list_Person(){ //全部显示记录//read from fileifstream fin(FILENAME);if (fin.fail()){cerr<< "open file with read error" <<endl;_exit(-127);}//////////////////////////string s;//存储返回的字符串,即一行的内容//fin.seekg(20,ios::cur);cout<<"====================================================="<<endl;cout<<setw(19)<<left<<"姓名"<<setw(8)<<left<<"性别"<<setw(14)<<left<<"地址"<<setw(9)<<left<<"电话"<<setw(15)<<left<<"属性"<<endl<<endl;while(getline(fin,s)){//cout<<s.length()<<endl;cout<<s<<endl;}cout<<"====================================================="<<endl; fin.close();}void Person::Reach(){ //查找记录ifstreaminput_file;char h[100];string s;string name;cout<<"请输入要查找人的姓名:"<<endl;cin>>name;input_file.open(FILENAME);if(!input_file){cout<<"Codefile.txt can't open file!"<<endl;return ;}int flag=0;while(input_file>>h){ //使用文件读取来判断文件是否到末尾//字符串运算使用双等于来比较比使用函数更方便if(h==name){cout<< h;getline(input_file,s);cout<<s<<endl;}else{flag=1;}}if(flag)cout<<"对不起通讯录中没有"+name+"的信息!"<<endl;input_file.close();//在c++中字符数组可以直接跟字符串作比较}void Person::delete_Person() //删除记录{ifstream fin(FILENAME);ofstreamfout("temp.txt");if (fin.fail()){cerr<< "open file with read error" <<endl;_exit(-127);}charch;//fin.seekg(20,ios::cur);while(fin.get(ch))//cout<<s.length()<<endl;fout.put(ch);cout<<endl;//将来本来的文件中的内容写入新的文件中暂存为了新的删除做准备cout<<"====================================================="<<endl; fin.close();fout.close();ifstreamfinfile("temp.txt");ofstreamfoutfile(FILENAME);char h[100];string s;string name;cout<<"请输入要删除人的姓名:"<<endl;cin>>name;string name1;if(!finfile){cout<<"Codefile.txt can't open file!"<<endl;return ;}int flag=0;while(finfile>>h){ //使用文件读取来判断文件是否到末尾//字符串运算使用双等于来比较比使用函数更方便if(h!=name){foutfile<<h<<" ";getline(finfile,s);foutfile<<s<<endl;}else{flag=1;name1=name;getline(finfile,s);}}if(flag==1)cout<<"联系人"+name1+"已经被删除!"<<endl;elsecout<<"对不起通讯录中无联系人"+name+"!"<<endl;}void Person::renew_Person(){ifstream fin(FILENAME);ofstreamfout("temp.txt");if (fin.fail()){cerr<< "open file with read error" <<endl;_exit(-127);}charch;//fin.seekg(20,ios::cur);while(fin.get(ch))//cout<<s.length()<<endl;fout.put(ch);cout<<endl;//将来本来的文件中的内容写入新的文件中暂存为了新的删除做准备cout<<"====================================================="<<endl; fin.close();fout.close();ifstreamfinfile("temp.txt");ofstreamfoutfile(FILENAME);char h[100];string s;string name;cout<<"请输入要修改的姓名:"<<endl;cin>>name;string name1;int flag;if(!finfile){cout<<"Codefile.txt can't open file!"<<endl;return ;}while(finfile>>h){ //使用文件读取来判断文件是否到末尾//字符串运算使用双等于来比较比使用函数更方便if(h!=name){foutfile<<h;getline(finfile,s);foutfile<<s<<endl;}else{flag=1;getline(finfile,s);string name;string sex;stringtel;string address;stringshuxing;cout<<"请输入记录:"<<endl;cout<<"姓名:";cin>>name;name1=name;cout<<"性别:";cin>>sex;cout<<"地址:";cin>>address;cout<<"电话:";cin>>tel;cout<<"属性:";cin>>shuxing;foutfile<<setw(19)<<left<<name<<setw(5)<<left<<sex<<setw(13)<<left<< address<<setw(14)<<left<<tel<<setw(10)<<left<<shuxing<<endl;}}if(flag==1)cout<<"联系人"+name+"已经成功修改为"+name1+"!"<<endl;elsecout<<"通讯录中没有联系人"+name+" 无法进行修改!"<<endl;}void Person::display_diff(){//分类显示函数ifstreaminfile(FILENAME);char name[100];char sex[100];chartel[100];charsx[100];char add[100];stringshuxing;cout<<"请输入想要查询的类型:"<<endl;cin>>shuxing;while(infile>>name){infile>>sex;infile>>add;infile>>tel;infile>>sx;if(sx==shuxing){cout<<setw(19)<<left<<name<<setw(5)<<left<<sex<<setw(13)<<left<<addr ess<<setw(14)<<left<<tel<<setw(10)<<left<<shuxing<<endl;}}infile.close();}。

相关文档
最新文档