一.功能介绍:
本电话薄有以下功能:
1. Add contract -----------------------添加联系人
2. Delete contract-----------------------删除联系人
3. Display all of the contract--------显示所有联系人
4. Search people’s contract---------查找联系人
5. Show editor -----------------------显示作者
6. Exit---------------------------------退出
本电话薄是将数据有控制台程序输入,并存在记事本中,并且再次打开可以读取上次储存的数据。 联系人添加到 contract.txt 文档中。 在应用本程序之前 先要新建contract.txt 文档和record.txt文档。并将record.txt文档中添加数字0.
1.Add contract -----------------------添加联系人
添加联系人 必须添加英文名 电话号码。(英文名和电话号码间以空格隔开)
可一次添加多个联系人
最后以# # 结束添加过程。
2.Delete contract-----------------------删除联系人
删除联系人 此过程采用的是字符匹配的方式 必须电话薄存在的联系人呢 和输入要删除的联系人字符必须完全相同才可以进行删除。
一次只能删除一个联系人。
3. Display all of the contract--------显示所有联系人
一次就可现示所有联系人的相关信息
4. Search people’s contract---------查找联系人
此过程同样采用的是字符匹配的方式 必须电话薄存在的联系人呢 和输入要查找的联系人字符必须完全相同才可以进行查找。输出的是联系人的电话号码。
5 Show editor -----------------------显示作者
版权也是很重要的一方面。
此课程设计是由杨烁,杨崇财,黄平设计并制作的。
6 保存退出。
二.进行功能演示:
首先 建立contract.txt 文档和record.txt文档。并在record.txt文档中添加数字0.
开始运行可执行文件。
输入数字1
选择添加add Contract
输入
Zoo 18773491005
Cat 16543487654
Apple 18554320987
# #
显示所有联系人
其会按首字符的顺序排序。
选择2
删除联系人
Apple
显示 联系人Apple已被删除
选择四查找联系人。
会输出查找联系人的电话号码
输入数字5
显示作者:
按6退出。
这是打开contarct.txt 记录的是 联系人的联系方式和record.txt 记录的是联系人的个数。
和
完成输入结果。
关闭后再打开,程序会读入contract.txt文件中的内容和record.txt文件中的内容。
三.附上程序代码:
注意:此程序需在DevC++中执行操作,可能因为编译器的不同,visual c++可能不能编译此程序,需要修改头文件。
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<stdlib.h> using namespace std; //¶¨Òå±£´æÃû×ֺ͵绰ºÅÂëµÄ½á¹¹Ìå struct element{ char name[21],num[22]; }people[20]; // º¯ÊýµÄ¿âÎļþÉùÃ÷ void read(); void initlist(); //void display1(); void show(); void add(); bool cmp(struct element,struct element); void change(); void delete_name(); void display(); void search(); void show_editor(); //void showeditor(); void set(); int k=0; FILE *fp; int main() { int choice; read(); initlist(); // display1(); while(1) { show(); cin>>choice; switch(choice) { case 1: add();change();continue; case 2: delete_name();continue; case 3: display();continue; case 4: search();continue; case 5: show_editor();continue; case 6: set() ; } if(choice==6)break; } system("pause"); } //³ÉÔ±º¯ÊýµÄ½âÊͲ¿·Ö void initlist() //³õʼ»¯ ½«Îı¾ÖеÄÊý¾Ý¸³¸øÊý×é¡£ { char a[51]; int len,flag,i,j,m,i1; if((fp=fopen("contract.txt","r"))==NULL) { printf("Can not open this file.\n"); getchar(); exit(-1); } for(i1=0;i1<k;i1++) { fgets(a,43,fp); //½«»Ø³µ·ûºÅҲͬÑù¶ÁÈëµ½Êý×éÖÐÈ¥ÁË len=strlen(a); if(a[0]=='\n')break; flag=0; j=0; for(i=0;i<=40;i++) { while(flag==0){ if(a[i]==' '){flag++;people[k].name[i]=='\0'; m=i; for(m=i;m<20;m++) people[i1].name[m]=' '; } else { people[i1].name[i]=a[i]; i++; } } if(flag==1) { while(a[i]==' ') i++; flag++; } while(flag==2) { if(a[i]=='\n'){people[i1].num[j]='\0'; break;} else { people[i1].num[j]=a[i]; i++;j++; } } } } fclose(fp); } /* void display1() { int i; for(i=0;i<=k-1;i++) printf("%s %s\n",people[i].name,people[i].num); cout<<endl<<endl; } */ //¹¦ÄÜ1 Ìí¼ÓͨѶ¼ void add() { cout<<"please add the contract with name and phone number and it is terminaled by # !"<<endl; cout<<"there are "<<k<<" people in this contract."<<endl; char name1[21],num1[22]; int len,i; while(scanf("%s %s",name1,num1)&&name1[0]!='#') { if(k==20){cout<<"The contract is full"<<endl;break;} strcpy(people[k].name,name1); strcpy(people[k].num,num1); len=strlen(people[k].name); //½«ÆäÖÐÌîÈë¿Õ¸ñ¡£Ê¹¸ñʽ±£³ÖÍêÕû¡£ for(i=len;i<=19;i++) { people[k].name[i]=' '; } people[k].name[i]='\0'; len=strlen(people[k].num); for(i=len;i<=19;i++) { people[k].num[i]=' '; } people[k].num[i]='\0'; k++; } sort (people,people+k,cmp); } //Ð޸ı£´æÎļþÖеÄÄÚÈÝ void change() { FILE *fp; char ch='\n'; if((fp=fopen("contract.txt","w"))==NULL) { printf("Can not open this file.\n"); getchar(); exit(-1); } int i; for(i=0;i<=k;i++) { fputs(people[i].name,fp); fputs(people[i].num,fp); fputc(ch,fp); } fclose(fp); } //¹¦ÄÜ2 ɾ³ýÁªÏµÈËÐÕÃû void delete_name() { cout<<"there are "<<k<<" people in this contract."<<endl; char name1[21]; getchar(); int len,len1; int flag=0,i,j; gets(name1); len=strlen(name1); for(i=len;i<20;i++) name1[i]=' '; name1[i]='\0'; for(i=0;i<=k-1;i++) { if(strcmp(people[i].name,name1)==0){flag=1;break;} } if(flag==0)cout<<"Didn't find this person!"<<endl; if(flag==1){for(j=i;j<=k-1;j++) { strcpy(people[j].name,people[j+1].name); strcpy(people[j].num,people[j+1].num); } k--; change(); } } //¹¦ÄÜ3 ÏÔʾ¼Çʱ¾ÖеÄÈ«²¿ÐÅÏ¢ void display() { cout<<"there are "<<k<<" people in this contract."<<endl; char a[50]; if((fp=fopen("contract.txt","r"))==NULL) //¶ÁÈ¡contract.txtÎļþºó£¬½øÐÐÊä³ö¡£ { printf("Can not open this file.\n"); getchar(); exit(-1); } while(fgets(a,45,fp)) { printf("%s",a); } fclose(fp); } //¹¦ÄÜ4 ²éѯÁªÏµÈËÐÅÏ¢ void search() { cout<<"there are "<<k<<" people in this contract."<<endl; char name1[21];getchar(); gets(name1); int flag=0,i,len; len=strlen(name1); for(i=len;i<20;i++) name1[i]=' '; name1[i]='\0'; for(i=0;i<k;i++) { // printf("%s\n",people[i].name); // cout<<"2"<<" "<<strlen(people[i].name)<<endl; if(strcmp(people[i].name,name1)==0){flag=1;cout<<name1<<" "<<people[i].num<<endl;} // cout<<"flag="<<flag<<endl; } if(flag==0)cout<<"This person don't exist in the contract!"<<endl; } //ÀûÓÿ⺯Êýsort½øÐÐÅÅÐò bool cmp(struct element x,struct element y) { if(strcmp(x.name,y.name)<0)return 1; if(strcmp(x.name,y.name)>0)return 0; } //ÏÔʾ½çÃ溯Êý void show() { int i; for(i=1;i<=52;i++) cout<<'*'; cout<<endl; cout<<"* *"<<endl; cout<<"* CONTRACT *"<<endl; cout<<"* 1.add contract *"<<endl; cout<<"* 2.delete contract *"<<endl; cout<<"* 3.display all of the contract *"<<endl; cout<<"* 4.search people's contract *"<<endl; cout<<"* 5.show_editor *"<<endl; cout<<"* 6.exit *"<<endl; for(i=1;i<=52;i++) cout<<'*'; cout<<endl; cout<<"Please select number to realize corresponding function!"<<endl<<endl; } //ÏÔʾ×÷Õß //´ÓÎļþÖжÁÈ¡ µç»°±¡´æ´¢µÄÌõÊý void read() { char ch; if((fp=fopen("record.txt","r"))==NULL) { printf("Can not open this file.\n"); getchar(); exit(-1); } ch=fgetc(fp); k=ch-'0'; // cout<<"k="<<k; } //ÏòÎļþÖмǼ µç»°±¡´æ´¢µÄÌõÊý void set() { char ch=k+'0'; if((fp=fopen("record.txt","w"))==NULL) { printf("Can not open this file.\n"); getchar(); exit(-1); } fputc(ch,fp); fclose(fp); } void show_editor() { char a[100] ="This project is made by:",b[100]="ÊýÀíѧԺ ÐÅÏ¢Óë¼ÆËã¿Æѧ ",c[100]="Ñî˸ Ñî³ç²Æ »Æƽ"; puts(a); puts(b); puts(c); }