?? wangjianwangcheng.cpp
字號:
<<"--1.確定 2.取消--\n";
cin>>optionB;
if (optionB==1)
{
Remove(index);
cout<<"---條目已刪除!---\n";
}
break;
default: break;
}
}
}
void DoubleLinkList::SearchByName(char *InName) //根據姓名搜索并改動
{
system("cls");
Node *CNode=FirstNode;
int option=3, count=0, ChooseIndex=0,optionB=2,optionC;
strcpy(LowedIn,InName);
strlwr(LowedIn);
cout<<"*******匹配項*******\n\n";
for (int index=1; index<=LengthOfList(); index++)
{
strcpy(LowedName,CNode->Data.Name);
strlwr(LowedName);
if (CompName(LowedIn,LowedName))
{
count++;
cout<<"序號-"<<index<<"-\n";
CNode->show();
if (count==1) ChooseIndex=index;
}
CNode=CNode->Next;
}
switch (count)
{
case 0: cout<<"---WARNING: 無匹配結果!---\n";
break;
case 1: cout<<"--1.修改 2.刪除 3.取消--\n";
cin>>option;
switch (option)
{
case 1: cout<<"--1.全部修改 2.只修改姓名 3.只修改電話號碼--\n";
cin>>optionC;
switch(optionC)
{case 1:Edit(ChooseIndex);
break;
case 2:EditName(ChooseIndex);
break;
case 3:EditTel(ChooseIndex);
break;
default :break;
}
break;
case 2: Remove(ChooseIndex);
cout<<"---確定刪除該條目?---\n"
<<"--1.確定 2.取消--\n";
cin>>optionB;
if (optionB==1)
{
Remove(index);
cout<<"---條目已刪除!---\n";
}
break;
default: break;
}
break;
default: cout<<"---有多個匹配結果,請選擇所查找條目的序號: ---\n";
cin>>ChooseIndex;
system("cls");
SearchByIndex(ChooseIndex);
break;
}
}
bool DoubleLinkList::FileInDic() //查找book.txt是否存在,以決定是否在開始程序時詢問打開文件
{
ifstream checker;
checker.open("book.txt",ios::in|ios::nocreate);
if (checker) return true;
else return false;
}
void DoubleLinkList::SaveToFile() //保存到book.txt
{
Node *CNode=FirstNode;
ofstream outfile;
outfile.open("book.txt",ios::out|ios::trunc); //清空文件
if (outfile)
{
if (!IsEmpty())
{
do
{
outfile<<CNode->Data.Name<<endl;
outfile<<CNode->Data.Tel<<endl;
outfile<<CNode->Data.Time<<endl;
CNode=CNode->Next;
}
while(CNode);
outfile<<"END OF FILE"<<endl;
outfile.close();
cerr<<"\n---通訊錄已保存---\n";
}
else
{
cerr<<"\n---提示:通訊錄無內容!---\n";
}
}
else
{
cout<<"\n---WARNING:無法打開文件!---\n";
}
}
void DoubleLinkList::LoadFromFile() //從文件讀取
{
Entry NewEntry;
ifstream infile;
int End=0;
infile.open("book.txt",ios::in);
if (infile)
{
do
{
strcpy(NewEntry.Name,"");
strcpy(NewEntry.Tel,"");
strcpy(NewEntry.Time,"");
infile.get(NewEntry.Name,20);
infile.ignore(20,'\n');
if (strcmp(NewEntry.Name,"END OF FILE"))
{
infile.get(NewEntry.Tel,20);
infile.ignore(20,'\n');
infile.get(NewEntry.Time,30);
infile.ignore(30,'\n');
Insert(NewEntry);
}
else End=1;
}while(End==0);
infile.close();
cerr<<"\n---已從硬盤讀取通訊錄---\n";
}
else
{
cout<<"\n---WARNING:打開文件失??!---\n";
}
}
void DoubleLinkList::Helpme()
{
help:
int choice2;
char pause;
system("cls");
cout << "歡迎進入幫助菜單!\n";
cout << "1: 關于我的記錄\n";
cout << "2: 我怎樣清除所有記錄\n";
cout << "3: 什么時候出新版本\n";
cout << "4: 退出\n";
cin >> choice2;
switch(choice2)
{
case 1:
cout << "存儲在一個文件Friends.dat中\n";
cout << "如果它沒在這里,那么它就使用原來的文件Friends.dat\n\n\n";
pause=cin.get();
system("cls");
goto help;
break;
case 2:
cout << "刪除文件Friends.dat\n\n\n";
pause=cin.get();
system("cls");
goto help;
break;
case 3:
cout << "當我有時間后\n\n\n";
pause=cin.get();
system("cls");
goto help;
break;
default:
system("cls");
break;
}
}
void DoubleLinkList::EditName(int index)
{
int optionB=0,position=1;
Entry NewEntry;
Node *CNode=FirstNode;
do { cout<<"輸入姓名:";
cin>>NewEntry.Name;
}while(!IsValid(NewEntry.Name));
system("cls");
cout<<"\n確定要將\n";
while(position!=index)
{
CNode=CNode->Next;position++;
}
cout<<CNode->Data.Name<<"\n\n";
cout<<"替換為:\n";
cout<<"姓名:"<<NewEntry.Name<<"\n?\n\n";
cout<<"--1.確定 2.取消--\n";
Ten: cin>>optionB;
cout<<" ";
switch(optionB)
{case 1:strcpy(CNode->Data.Name,NewEntry.Name);
cout<<"---姓名已修改---";
break;
case 2:break;
default:cout<<"輸入錯誤,重新輸入\n";
goto Ten;
}
}
void DoubleLinkList::ZNSearch(char *FirstLetter) //根據首字母智能查找
{ system("cls");
Node *CNode=FirstNode;
int count=0;
strcpy(LowedIn,FirstLetter);
strlwr(LowedIn);
cout<<"*******匹配項*******\n\n";
for (int index=1; index<=LengthOfList(); index++)
{
strcpy(LowedName,CNode->Data.Name);
strlwr(LowedName);
if (!strncmp(LowedIn,LowedName,1))
{ count++;
cout<<"序號-"<<index<<"-\n";
CNode->show();
}
CNode=CNode->Next;
}
if (count==0) cout<<"-----沒有與之匹配項.-----\n";
else cout<<"共有"<<count<<"個與之相匹配的項.\n";
}
void DoubleLinkList::EditTel(int index)
{
int optionB=0,position=1;
Entry NewEntry;
Node *CNode=FirstNode;
do {cout<<"輸入電話號碼:";
cin>>NewEntry.Tel;}
while(NewEntry.Tel==0);
system("cls");
cout<<"\n確定要將\n";
while(position!=index)
{CNode=CNode->Next;position++;}
cout<<CNode->Data.Tel<<"\n\n";
cout<<"替換為:\n";
cout<<"電話號碼:"<<NewEntry.Tel<<"\n?\n\n";
cout<<"--1.確定 2.取消--\n";
Ten: cin>>optionB;
cout<<" ";
switch(optionB)
{case 1: strcpy(CNode->Data.Tel,NewEntry.Tel);
cout<<"---電話號碼已修改---";
break;
case 2:break;
default:cout<<"輸入錯誤,重新輸入\n";
goto Ten;
}
}
char *DoubleLinkList::gettime()
{ time_t tval;
struct tm *now; // 獲取當前的日期和時間
tval=time(NULL);
now=localtime(&tval);
return ctime(&tval);
}
/*主函數**************************************/
void main()
{
int password;
cout<<"請輸入密碼";
cin>>password;
system("cls");
if (password==mima())
{
DoubleLinkList List;
Entry NewEntry;
int option, index;
char InName[20],FirstLetter[5];
if(List.FileInDic())
{
cerr<<" *****通訊錄管理 V0.2 beta*****\n"
<<"\n---是否讀取保存在硬盤上的通訊錄資料?---\n"
<<"--1.是 2.否--\n";
cin>>option;
if (option==1)
{
List.LoadFromFile();
cerr<<"\nLoading...\n";
}
}
do
{ system("cls");
cout<<" *****通訊錄管理 V0.2 beta*****\n"
<<" 1. 查看全部條目...\n"
<<" 2. 添加新條目...\n"
<<" 3. 根據姓名查找并改動條目...\n"
<<" 4. 根據序號查找并改動條目...\n"
<<" 5. 根據首字母智能查找...\n"
<<" 6. 將通訊錄保存到硬盤...\n"
<<" 7. 從硬盤中讀取通訊錄...\n"
<<" 8. 幫助...\n"
<<" 9. 關于...\n"
<<" 10. 退出...\n\n"
<<"選擇功能序號: ";
cin>>option;
switch(option)
{
case 1: List.ShowAll();
break;
case 2: do
{
cout<<"\n輸入姓名:";
cin>>NewEntry.Name;
}
while (!List.IsValid(NewEntry.Name));
cout<<"電話:";
cin>>NewEntry.Tel;
strcpy(NewEntry.Time,List.gettime());
List.Insert(NewEntry);
cerr<<"\n---添加成功!按Enter鍵返回---\n";
getch();
break;
case 3: system("cls");
cout<<"---輸入欲查找的姓名,支持通配符'*','?':---\n";
cin>>InName;
List.SearchByName(InName);
cout<<"\n---按Enter鍵返回---\n";
getch();
break;
case 4: system("cls");
cout<<"---輸入欲查找的序號---\n";
cin>>index;
List.SearchByIndex(index);
cout<<"\n---按Enter鍵返回---\n";
getch();
break;
case 5: system("cls");
cout<<"---輸入名字的首字母---\n";
cin>>FirstLetter;
List.ZNSearch(FirstLetter);
cout<<"\n---按Enter鍵返回---\n";
getch();
break;
case 6: system("cls");
List.SaveToFile();
cout<<"\n---按Enter鍵返回---n";
getch();
break;
case 7: system("cls");
List.LoadFromFile();
cout<<"\n---按Enter鍵返回---\n";
getch();
break;
case 8: system("cls");
List.Helpme();
break;
case 9: system("cls");
cout<<"**** VC++課程設計 通訊錄管理 ****\n"
<<" 原代碼作者: Vinayak Marwah \n"
<<" 改編: 王建0510200254 江琳0510200255 王子瑜0510200261 \n"
<<" 南京理工大·自動化學院\n"
<<"**********************************\n";
cout<<"\n---按Enter鍵返回---\n";
getch();
break;
default: break;
}
}while(option!=10);
cout<<"\n---退出程序前是否保存通訊錄?---\n"
<<"--1.保存 2.放棄--\n";
cin>>option;
if (option==1) List.SaveToFile();
}
else
{
cout<<"密碼錯誤,系統將自動關閉";
cin.get();
cout<<endl;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -