⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 班级通讯录c++编写
💻 CPP
字号:
#include <fstream.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <assert.h>
#include "string.h"
#include "list.h"
#include "vector.h"
#include "dictionary.h"
#include "hash.h"
#define hh 31
//查找字符串涵数


//声明涵数
void change();//修改涵数
void insertname();//插入涵数
string name;
unsigned sanlie(const string &s)
{
  unsigned sum=0,start=2,len=2;
  for(unsigned i=0;i<len;i++)
	  sum+=s[start+i];
  return sum;
}
struct number
{
	string name;
	string sex;
	string Yearofborn;
	string school;
	string phone;
}a1,b1;
ostream &operator<<(ostream & out,const number & itr){
	out<<itr.name<<"  "<<itr.sex<<"  "<<itr.Yearofborn<<"  "<<itr.school<<"  "<<itr.phone;
	return out;
}

list<association<string,number>*> l1; 
listIterator<association<string,number>*> t1(l1);

unsigned (*f)(const string&)=&sanlie;
dictionaryTable<string,number>person(11,f);
void load_data()
{
 ifstream fin("hyl.txt");
 if(!fin) {
   cerr<<" The file 'hyl.txt' is not found."<<endl;
   exit(1);}
 while(!fin.eof()){
   fin>>a1.name;
   fin>>a1.sex;
   fin>>a1.Yearofborn;
   fin>>a1.school;
   fin>>a1.phone;
   
    person.setInitial(a1);
    person[a1.name]=a1; }
}
void save_data()
{
 ofstream disk_hash("hyl.txt");
 dictionaryTableIterator<string,number> itr(person);
 itr.init();
 for(; !itr; ++itr)
 disk_hash<<itr()->value()<<endl;
}

void searchname()
{
	string keyCode;
	char c,w[50];
	//c='l';
	while((c!='n')&&(c!='N')){
		cout<<" 请输入你要查询的好友..."<<endl;
	//	c=getch(); 
		cout<<"   ";
		gets(w); keyCode=string(w);
		if(person.includesKey(keyCode))  
		{
			b1=person[keyCode];
			cout<<"姓名"<<"     "<<"性别"<<"     "<<"出生年份"<<"     "<<"学校"<<"     "<<"电话"<<"     "<<endl;
			cout<<"    "<<  b1.name<<"     "<<b1.sex<<"        "<<b1.Yearofborn<<"       "<<b1.school<<"       "<<b1.phone<<"       "<<endl;
	
		}
		else
	       {cout<<endl;
		cout<<"该纪录不存在!!!退出查询按'n'或'N'  "<<endl;}
		cout<<"添加记录按'y'或'Y',继续查询请按任意键"<<endl;
		c=getch();
		if(c=='y'||c=='Y')
			insertname();
	}
}

void change(){

	string keyCode;
	string newchang; 
	char c,w[50],k[50];
	 //while((c!='n')&&(c!='N'))
	 //{
     cout<<" 请输入你要修改的好友..."<<endl;
	// c=getch();
	 cout<<"   ";
	 gets(w);keyCode=string(w);
      if(!person.includesKey(keyCode))
	  {
	   cout<<"对不起,你输入的姓名不存在"<<endl;
	   cout<<"   退出查询按'n'或'N',继续查询请按任意键."<<endl;
	   // c=getch();
	  }
	 if(person.includesKey(keyCode))
	 {
			b1=person[keyCode];
			cout<<"姓名"<<"     "<<"性别"<<"     "<<"出生年份"<<"     "<<"学校"<<"     "<<"电话"<<"     "<<endl;
			cout<<"    "<<  b1.name<<"     "<<b1.sex<<"        "<<b1.Yearofborn<<"       "<<b1.school<<"       "<<b1.phone<<"       "<<endl;
		 cout<<"请选择你要修改的类型:"<<endl;
		 cout<<"               [1]姓名  [2]性别  [3]出生年月  [4]学校  [5]电话"<<endl;
		 char chose;
		 chose=getch();
   if(chose=='1'){
			 	 cout<<"请输入新姓名"<<endl;
				 gets(k);
				 newchang=string(k);
				 b1.name=newchang;
                 string  keyCode=newchang;
			     goto setup;}
   if(chose=='2'){
			 	 cout<<"请输入新的性别"<<endl;
				 gets(k);
				 newchang=string(k);
				 b1.sex=newchang;
			     goto setup;}
   if(chose=='3'){
			 	 cout<<"请输入新的出生年月"<<endl;
				 gets(k);
				 newchang=string(k);
				 b1.Yearofborn=newchang;
			     goto setup;}
  if(chose=='4'){
			 	 cout<<"请输入新的学校"<<endl;
				 gets(k);
				 newchang=string(k);
				 b1.school=newchang;
			     goto setup;}
  if(chose=='5'){
			 	 cout<<"请输入新的电话号码"<<endl;
				 gets(k);
				 newchang=string(k);
				 b1.phone=newchang;
			     goto setup;}
/*	switch(chose)
		   { 
             case '1': 
				 cout<<"请输入你要新修改的内容";
				 gets(k);
				 newchang=string(k);
				 b1.name=newchang;
               string  keycode=newchang;
				 goto setup;

            // case 'L': listname(); break;
           //  case '2': changesex();
            
		   }*/
//loop:   cout<<"你已成功修改纪录了"<<endl	   ;
		 // person[keyCode]=b1;
	 }
setup:	  person[keyCode]=b1;
		  save_data();
		  cout<<"你已成功修改纪录了"<<endl;
	      cout<<"请按任意键返回主菜单"<<endl;
		  c=getch();
}


//复制涵数
/*void copy()
{
	string keyCode;
	char c,w[100];
	while(c!='n')&&(c!='N')
	{
		cout<<"请输入你要复制的好友姓名..."<<endl;
	    cout<<"   ";
        gets(w); keyCode=string(w);
		b1.name=string(w);
		if(person.includesKey(keyCode)) 
		{
          cout<<"该好友纪录存在,你确定要复制些纪录吗?  Y/N ?"
		  c=getch();
		  if(c='y'||c='Y'){
			  c1=person[keyCode];
		}
	}*/

//保存功能,如果路径写错,文件不能保存,而界面并没有提示没有保存纪录
void saveto()
{
	char w[100];
    cout<<"请输入你要保存些文的路径:(例如 c:\\1.txt)"<<endl;
    gets(w);
    string path=string(w);
//  path=string(lujing);
    ofstream disk_hash(path);
    	if(!disk_hash) {
        cerr<<" The file 'hyl.txt' is not found."<<endl;
        exit(1);}
	dictionaryTableIterator<string,number> itr(person);
    itr.init();
    for(; !itr; ++itr)
    disk_hash<<itr()->value()<<endl;

}


void insertname()
{
	string keyCode;
	char c,w[100];
//	c='l';
	while((c!='n')&&(c!='N')){
	cout<<"请输入你要添加的好友姓名..."<<endl;
//	c=getch();
	cout<<"   ";
		gets(w); keyCode=string(w);
		b1.name=string(w);
		if(person.includesKey(keyCode)) 
		{
			cout<<"该好友己经加入好友录了!"<<endl;
			goto loop;
		}
		else
		{
			cout<<"请输入性别:";
			cin>>w;
			b1.sex=string(w);
			cout<<"请输入出生年份:";
			cin>>w;
			b1.Yearofborn=string(w);
			cout<<"请输入学校:";
			cin>>w;
			b1.school=string(w);
			cout<<"请输入电话:";
			cin>>w;
			b1.phone=string(w);
			person[keyCode]=b1; 
		//	cin>>;
		}
loop:   cout<<"   退出添加按'n'或'N',继续添加按其他任意键."<<endl;
		c=getch();
	}
}
void listname()
{
	unsigned i=0;
	dictionaryTableIterator<string,number> witr(person);
	witr.init();  char c='y'; 
	while((c=='Y')||(c=='y')) {
		i=0;
		cout<<"姓名"<<"  "<<"性别"<<"  "<<"出生年份"<<"  "<<"学校"<<"  "<<"电话"<<"  "<<endl;
		for(; (!witr)&&(i<40); ++witr,++i) cout<<witr()->value()<<endl;
		if (!witr) {
			cout<<"继续显示吗?('Y'或'y'确定,否则返回.)"<<endl;
			c=getch(); }
		else {
			cout<<"已显示完,请按任意键返回主菜单"<<endl;
			c=getch(); }
		}
}
void delename()
{
	string key;
	char c,w[20];
	while((c!='n')&&(c!='N')){
	cout<<"请输入你要删除的名字..."<<endl;
	cout<<endl;
//	c=getch();
	gets(w);
	key=string(w); cout<<endl;
	if(person.includesKey(key)) {
		cout<<"      真的要删除???'"<<key<<"'吗?('Y'或'y'确定!!!)"<<endl<<endl;
		c=getch();
		if((c=='Y')||(c=='y')) person.removeKey(key);
		}
	else cout<<"       对不起, 你还没有加他为好友."<<endl<<endl;
	cout<<"   退出删除按'n'或'N',继续删除按其他任意键."<<endl;
		c=getch();
		}
}

void main()
{
	char mychoice;
    while(mychoice!='y'&& mychoice!='Y'){
		load_data();
 do
 {cout<<endl<<endl<<endl; 
   cout<<"                             ***电子系通讯录***               "<<endl;
   cout<<endl;
   cout<<"        ##############################################################"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        #       [S]:  Search the name         ( 查  找  )          #"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        #       [I]:  Insert the name         ( 添  加  )          #"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        #       [L]:  List   the all          (显示纪录)           #"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        #       [D]:  Delete the name         ( 删   除 )          #"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        #       [C]:  Change data             (修改纪录)           #"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        #       [F]:  print  data             (保 存 纪 录)        #"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        #       [E]:  Exit   system           (退 出 系 统)        #"<<endl;
   cout<<"        #                                                            #"<<endl;
   cout<<"        ##############################################################"<<endl;
   cout<<endl<<endl;
  cout<<"             请输入字母:S/s,or I/i,or L/l,or D/d or E/e F/f E/e."<<endl<<endl;
  mychoice=getch();  
  switch(mychoice)
  { 
  case 'l':;
  case 'L': listname(); break;
  case 'd':;
  case 'D': delename(); break;
  case 'i':;
  case 'I': insertname(); break;
  case 's':;
  case 'S': searchname(); break;
  case 'c':;
  case 'C': change();break;
  case 'f':;
  case 'F':	saveto();break;
  }
 } while ((mychoice!='E')&&(mychoice!='e'));
 save_data(); 
		cout<<"真要退出系统请按'y'或'Y',其他任意键返回."<<endl;
		mychoice=getch();  
		if (mychoice!='y' && mychoice!='Y') continue;
		else break;
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -