版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE31南京理工大学VC++课程设计报告课程:VC++课程设计系别:计算机科学与计算机学院班级:学号: 姓名: 选题2名称:同学录系统选题2难度系数:A自报成绩:优秀起止时间:指导教师:日期:年9月24日目录课题目标1.1程序功能简介1.2课程设计要求1.3评定难易级别具体实现2.1程序总体方案2.1.1开发平台2.1.2程序结构或流程图2.2关键代码及注释程序截图调试报告(在设计和实现过程所遇到的问题和解决,请如实填写)…总体小结(在整个设计过程中的心得体会)分工介绍(是独立完成还是合作完成,若为合作完成,说明合作者以及之间的具体分工)…一、课题目标1.1程序功能简介此程序是一个简单的同学录系统,具有导入同学信息,存储,显示、新增、删除、查询、修改同学信息等功能,最主要的是,它是用双向链表实现的,所以新增和删除的效率非常的高。其菜单分为:显示所有同学录信息、新增一个同学录信息、删除一个同学录信息、查询系统、修改同学录信息,寻求帮助等。1.2课程设计要求 用双向链表完成一个同学录系统实现同学录所该有的功能,并方便用户的使用!1.3评定难易级别A组二、具体实现2.1程序总体方案2.1.1开发平台操作系统:Windows7开发工具:visualstudio20212.1.2程序结构或流程图主函数的流程图:开始开始读入TXT欢迎界面显示菜单新增信息显示所有删除操作寻求帮助退出修改系统查询系统姓氏查询缺省查询记忆查询返回是否先查询储存入TXT 2.2所做改进2.2.1改进一改进方案基本上这个程序都是自己写的,改进也只是对原有要求的添加而已。先说说这个程序怎么实现所有功能的吧。具体实现 进入程序,首先是读取txt文件的信息,然后显示的是菜单。再然后一目了然的有各种功能。 总体是用双向链表做的。新增结点信息:即添加一个链表结点信息。显示所有信息:是先根据学号排序,然后从头至尾分屏显示所有信息,链表依次读取。删除操作:即链表操作,删除一个结点.查询操作:按要求进行各种情况查询,总体思想是线性的比较,如果有匹配的字符串就输出(这里面用的是string.find函数)。修改同学录:先根据查找操作找到这个信息,再修改当前结点信息寻求帮助:作为一些运用该程序的说明而存在。可以对用户一些较常见的疑问做出回答。退出程序:退出前会保存所有的信息至txt文件。2.2.2改进二改进方案为了使我的查询更完善,我的程序做到了部分字符串匹配的查询方式,即比如在输入姓名查询的时候,如果输入的是姓名的姓或者名,那么与之匹配的所有信息都会显示,而不是显示结果不存在。同样的,还可以根据自己一开始对该同学的评价做查询。另外,我设置了帮助选项,可以为用户解答很多常见的疑问。可以方便用户。具体实现运用STLstring类里面的find()函数;把我的成员全都定义成string类的,最后再让用户输入所需查找的字符串(也是一个string类),然后从到之为用find函数查,如njust[i].name.find(temp)!=string::npos;则加入到输出。在所有的查询方式里使用相同的方法,即可实现,所有的查询都带有子串查找功能。STL确实方便三、程序运行截图进入程序:进入菜单:分屏显示查询界面:修改同学录信息:帮助界面:四、调试报告调试还算顺利,只是一开始容错方面做得比较简陋。后来改好了。再又就是一开始功能比较少,后来慢慢一步步完善,变成现在这样,还算可以用用的程序。五、总体小结经过这么多天的编程,我了解到了要想完成一个比较大的程序,需要先根据程序的要求,确定设计思路,画出流程图,把想要用到的函数都写出其函数原型说明。然后根据自己已经写好的函数原型说明。一步步把函数都实现。即分别写出每一个功能所需要的具体的函数。这样,有一个清晰的思路,就比较有调理,有了调理,也不容易忘记一些想要实现的东西。然后,才会有一个层次分明,客户友好的程序。另外,类的封装和双向链表弄起来还是比较繁琐的。但是,把问题一个个搞清楚以后,问题就自然而然的被简化了。另外编程序还要注重细节,任意一个看似细微的的错误,都可能会引起一连串的error,所以每次从键盘读入数据或者数据的处理的环节都要注意合法性的检查。最后不得不提的是,我加入ACM队,在暑假做了大量的题目联系,所以在调试方面没有出现什么打问题,都算是比较轻松的过关了。熟练的写程序,对我们着实是非常重要的!六、分工介绍独立完成。#pragmaonce#include"student.h"structnode//链表node结点{ student&stu; node*next; node*prev; node(student&s) :stu(s) { }};classguanli{public: node*head_ptr; node*tail_ptr; node*current_ptr; guanli(void); ~guanli(void); voidUserChoice(int);//用户选择 voidInsertRecord();//插入信息 voidInsertNode(node*);//插入新结点 voidInsertNodeAtHead(node*);//插入头结点 voidInsertNodeAtEnd(node*);//插入尾结点 voidShowList();//显示所有信息 voidShowSortedList1();//显示排序后链表1 voidShowSortedList2();//显示排序后链表2 voidDeleteRecord();//删除某条记录 voidDeleteNodeAtHead();//删除头结点 voidDeleteNodeAtEnd();//删除尾结点 voidDeleteNodeAtMiddle();//在中间删除 voidDeleteNode();//删除某个节点 voidChangeMes();//修改信息函数 boolVerifyDelete();//确认删除 voidDeleteList();//释放链表,保存至文件 voidSearchChoice();//选择查找方式 voidASearchByName();//A方式中的名字查找 voidASearchByStuNum();//A方式中的学号查找 voidASearchByDormNum();//A方式中的整个宿舍查找 voidBSearchByStuNum();//B方式,按学号显示个人详细信息 voidLoadFile();//读取文件 voidSaveFile();//存至文件 voidHelp();//帮助提示函数 voidUserInput();//用户输入备用};#include"guanli.h"#include<iostream>usingnamespacestd;guanli::guanli(void){}guanli::~guanli(void){}voidguanli::UserChoice(intt){ switch(t) { case0: InsertRecord();//添加结点(OK) break; case1: ShowList();//显示所有结点信息(OK) break; case2: DeleteRecord();//删除记录(OK) break; case3: SearchChoice();//查找记录(OK) break; case4: ChangeMes(); break; case5: Help();//帮助文件 break; case6: SaveFile(); if(head_ptr!=NULL) DeleteList(); break; default: cout<<"选择无效,请重新输入:"; break; }}voidguanli::InsertRecord(){ chartt[15]; chartemp_memory[300]; student*s=newstudent; node*new_ptr=newnode(*s); if(new_ptr!=NULL) { system("cls"); cout<<"同学姓名:"; cin>>new_ptr->stu.fri_name; cout<<"邮箱:"; cin>>new_ptr->stu.e_mail; cout<<"性别:"; cin>>new_ptr->stu.sex; cout<<"号码:"; cin>>new_ptr->stu.phone_num; cout<<"珍贵回忆有(请输入一句话,不含空格,可用逗号分隔):"; cin>>new_ptr->stu.memory; InsertNode(new_ptr); cin.ignore(20,'\n'); cout<<"是否继续添加?Y/N"<<endl; charte[30]; cin.getline(te,30); if(!strcmp(te,"Y")||!strcmp(te,"y"))InsertRecord(); } else cout<<"申请内存空间失败,不能创建新结点!!\n";// system("cls");}voidguanli::InsertNode(node*new_ptr){ //system("cls"); node*temp_ptr; //若链表为空 if(head_ptr==NULL) { new_ptr->next=new_ptr; new_ptr->prev=new_ptr; head_ptr=new_ptr; tail_ptr=new_ptr; return; } //只有一个节点 if(head_ptr->next==head_ptr) { if(new_ptr->stu.fri_name<head_ptr->stu.fri_name) InsertNodeAtHead(new_ptr); else InsertNodeAtEnd(new_ptr); return; } //多个节点,自动按姓名排序插入 if(head_ptr->next!=head_ptr) { current_ptr=head_ptr->next; while((new_ptr->stu.fri_name>current_ptr->stu.fri_name)//比较姓名进行排序 &&(current_ptr!=head_ptr))//并且当前结点不是头结点(双向链表的头尾是相连的) current_ptr=current_ptr->next;//继续向后拓展结点 if(current_ptr==head_ptr) InsertNodeAtEnd(new_ptr);//插入在链表尾 else { temp_ptr=current_ptr->prev;//此时,插入的结点在current结点和temp结点之间 temp_ptr->next=new_ptr; new_ptr->prev=temp_ptr; current_ptr->prev=new_ptr; new_ptr->next=current_ptr; } }}voidguanli::InsertNodeAtEnd(node*new_ptr){ new_ptr->next=head_ptr; tail_ptr->next=new_ptr; new_ptr->prev=tail_ptr; head_ptr->prev=new_ptr; tail_ptr=new_ptr;}voidguanli::InsertNodeAtHead(node*new_ptr){ new_ptr->next=head_ptr; new_ptr->prev=tail_ptr; head_ptr->prev=new_ptr; tail_ptr->next=new_ptr; tail_ptr=new_ptr;}#include"guanli.h"#include<iostream>#include<iomanip>usingnamespacestd;voidguanli::ShowList(){ system("cls"); intn; cout<<"\t\t\t下面将显示所有同学录信息\n\n\t\t\t请输入每屏幕显示学生的个数\n\n\t\t\t每显示一屏幕暂停一次\n\n\t\t\t输入的数不大于20:\n"; cin>>n; system("cls"); inti; current_ptr=head_ptr; if(current_ptr!=NULL) do { i=1; cout<<setw(14)<<"姓名"<<setw(8)<<"性别"<<setw(30)<<"邮箱"<<setw(20)<<"号码"<<endl<<endl; do { cout<<setw(14)<<current_ptr->stu.fri_name<<setw(8)<<current_ptr->stu.sex; cout<<setw(30)<<current_ptr->stu.e_mail<<setw(20)<<current_ptr->stu.phone_num<<endl; current_ptr=current_ptr->next; i++; }while(current_ptr!=head_ptr&&i<=n); cout<<endl<<endl; if(current_ptr!=head_ptr) { system("pause"); system("cls"); } elsecout<<"文件结束!"<<endl; }while(current_ptr!=head_ptr); else { cout<<"同学录为空!"<<endl; } system("pause"); system("cls");}voidguanli::SearchChoice(){ charn; cout<<endl<<"输入数字键选择你所要进行的操作:"<<endl<<endl; cout<<"\t\t\t1:姓名查询"<<endl<<endl; cout<<"\t\t\t2:姓名缺省查询(姓氏,名字部分查询)"<<endl<<endl; cout<<"\t\t\t3:记忆片段查询"<<endl<<endl; cout<<"\t\t\t4:退出查询"<<endl<<endl; cout<<"输入你的选择:"<<endl; cin>>n; while(n!='4') { switch(n) { case'1': ASearchByStuNum(); break; case'2': ASearchByName(); break; case'3': ASearchByDormNum(); break; default: cout<<"对不起,您输入的查询方式尚未做出,请重新输入:"; break; } cout<<"输入0显示菜单,输入5退出查询,其他任意键继续查询:"<<endl; charpp; cin>>pp; if(pp=='0') { cout<<endl<<"输入数字键选择你所要进行的操作:"<<endl<<endl; cout<<"\t\t\t1:姓名查询"<<endl<<endl; cout<<"\t\t\t2:姓名缺省查询(姓氏,名字部分查询)"<<endl<<endl; cout<<"\t\t\t3:记忆片段查询"<<endl<<endl; cout<<"\t\t\t4:退出查询"<<endl<<endl; cout<<"输入你的选择:"<<endl; cin>>n; } elseif(pp=='4')n='4'; system("cls"); }}voidguanli::ASearchByStuNum(){ system("cls"); boolnFlag=0; stringsearch_str; current_ptr=head_ptr; if(current_ptr==NULL) cout<<"学生记录为空"<<endl; else { cin.ignore(20,'\n'); cout<<"\n输入你要搜索的同学姓名:"; cin>>search_str; if(current_ptr->stu.fri_name==search_str) { nFlag=1; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl; } else { current_ptr=current_ptr->next; while(current_ptr!=head_ptr) { if(current_ptr->stu.fri_name==search_str) { nFlag=1; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl; break; } current_ptr=current_ptr->next; } } if(!nFlag)//搜索完所有结点都没发现 { cout<<"无记录!"<<endl; system("pause"); system("cls"); } }}voidguanli::ASearchByName(){ system("cls"); boolnFlag=0; stringsearch_str; current_ptr=head_ptr; if(current_ptr==NULL) cout<<"同学录为空"<<endl; else { cin.ignore(20,'\n'); cout<<"\n输入你要搜索的同学的姓或名或其中的一部分:"; cin>>search_str; if(current_ptr->stu.fri_name.find(search_str)!=string::npos) { if(!nFlag)cout<<"找到记录\n"; nFlag=1; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl; } current_ptr=current_ptr->next; while(current_ptr!=head_ptr) { if(current_ptr->stu.fri_name.find(search_str)!=string::npos) { if(!nFlag)cout<<"找到记录\n"; nFlag=1; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl; } current_ptr=current_ptr->next; } if(!nFlag)//搜索完所有结点都没发现 { cout<<"无记录!"<<endl; system("pause"); system("cls"); } }}voidguanli::ASearchByDormNum(){ system("cls"); boolnFlag=0; stringsearch_str; current_ptr=head_ptr; if(current_ptr==NULL) cout<<"学生记录为空"<<endl; else { cin.ignore(20,'\n'); cout<<"\n输入你对那个同学的记忆(即你当初输入的一句话里面的几个词语):"; cin>>search_str; if(current_ptr->stu.memory.find(search_str)!=string::npos) { if(!nFlag)cout<<"找到记录\n"; nFlag=1; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl; } current_ptr=current_ptr->next; while(current_ptr!=head_ptr) { if(current_ptr->stu.memory.find(search_str)!=string::npos) { if(!nFlag)cout<<"找到记录\n"; nFlag=1; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl; } current_ptr=current_ptr->next; } if(!nFlag)//搜索完所有结点都没发现 { cout<<"无记录!"<<endl; system("pause"); system("cls"); } }}#include"guanli.h"#include<iostream>#include<iomanip>usingnamespacestd;voidguanli::DeleteRecord(){ system("cls"); stringsearch_string; node*previous_ptr=NULL; current_ptr=head_ptr; if(current_ptr==NULL) { cout<<"没有你要删除的记录!"<<endl; return; } cin.ignore(20,'\n'); intnFlag=0; boolask=0; charn[30]; cout<<"\t\t是否需要先根据查找来查看所要删除的同学完整姓名?Y/N"<<endl; cin.getline(n,30); if(!strcmp(n,"y")||!strcmp(n,"Y"))SearchChoice(); cout<<"\n输入你要删除的同学完整姓名:\n"; cin>>search_string; while((current_ptr->stu.fri_name==search_string)&&head_ptr!=NULL) { nFlag=1; cout<<"\n找到记录\n"; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t邮箱:"<<current_ptr->stu.e_mail<<"\t:"<<current_ptr->stu.phone_num<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl; if(VerifyDelete())//向用户询问是否真的要删除 { DeleteNode(); cout<<"\n记录已删除!\n"; } else { cout<<"姓名为:"<<current_ptr->stu.fri_name<<"\t的记录没有删除"<<endl; current_ptr=current_ptr->next; } } do { if(current_ptr->stu.fri_name==search_string) { nFlag=1; cout<<"\n找到记录\n"; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t邮箱:"<<current_ptr->stu.e_mail<<"\t:"<<current_ptr->stu.phone_num<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl; if(VerifyDelete())//向用户询问是否真的要删除 { DeleteNode(); cout<<"\n记录已删除!\n"; } else { cout<<"姓名为:"<<current_ptr->stu.fri_name<<"\t的记录没有删除"<<endl; } } current_ptr=current_ptr->next; }while(current_ptr!=head_ptr||head_ptr==NULL); if(!nFlag)cout<<"\n没有找到相符的记录也没有删除记录。\n"; cin.get(); system("cls");}voidguanli::Help(){help: charchoice2; system("cls"); cout<<"欢迎使用“帮助”,请输入帮助类型:\n"; cout<<"1:此程序有哪些功能?"<<endl; cout<<"2:如何一次性删除所有记录?"<<endl; cout<<"3:此程序关闭后我的记录存在哪里?为什么我修改的记录没有被保存?"<<endl; cout<<"4:为什么有时候我的程序会突然死掉?"<<endl; cout<<"5:何时会有更完善的版本出现?"<<endl; cout<<"6:此程序的作者信息?"<<endl; cout<<"7:退出帮助。"<<endl; cin>>choice2; switch(choice2) { case'1': cout<<"此程序为一个同学录系统,由双向链表实现。"<<endl; cout<<"具体的话可以查看菜单。"<<endl; cout<<"谢谢您使用本程序!"<<endl; system("pause"); system("cls"); gotohelp; break; case'2': cout<<"请退出本程序后手动删除一个名为xuejiguanli.txt的文件,谢谢~"<<endl; system("pause"); system("cls"); gotohelp; break; case'3': cout<<"在一个名为xuejiguanli.txt的文件里面"<<endl; cout<<"只有正常关闭才会保存,在运行途中强行关闭,程序将不对原有文件做任何修改"<<endl; system("pause"); system("cls"); gotohelp; break; case'4': cout<<"目前本程序在输入有误方面的容错处理可能还不够完善,有时输入太多非法数据可能导致程序死机"; cout<<"所以,请规范您的操作,并注意输入的正确,谢谢您的配合。"<<endl; system("pause"); system("cls"); gotohelp; break; case'5': cout<<"下一届课程设计必然有更强大的学弟学妹来完善它。"<<endl; system("pause"); system("cls"); gotohelp; break; case'6': cout<<"Author:计科三班,孙健波。\n学号:0906840330\n"; cout<<"谢谢您的使用~~"<<endl; system("pause"); system("cls"); gotohelp; break; default: system("pause"); break; }}boolguanli::VerifyDelete(){ charv[100]; cout<<"\n确认?(Y/N)"; scanf("%s",v); cin.ignore(20,'\n'); if(!strcmp(v,"y")||!strcmp(v,"Y"))returntrue; elsereturnfalse;}voidguanli::DeleteNode(){ if(current_ptr==head_ptr) DeleteNodeAtHead(); else if(current_ptr->next==head_ptr) DeleteNodeAtEnd(); else DeleteNodeAtMiddle();}voidguanli::DeleteNodeAtHead(){ if(head_ptr->next!=head_ptr) { head_ptr=current_ptr->next; tail_ptr->next=head_ptr; head_ptr->prev=tail_ptr; deletecurrent_ptr; current_ptr=head_ptr; } else { head_ptr=NULL; tail_ptr=NULL; deletecurrent_ptr; }}voidguanli::DeleteNodeAtEnd(){ node*previous_ptr=current_ptr->prev; deletecurrent_ptr; previous_ptr->next=head_ptr; head_ptr->prev=previous_ptr; tail_ptr=previous_ptr; current_ptr=tail_ptr;}voidguanli::DeleteNodeAtMiddle(){ node*previous_ptr=current_ptr->prev; previous_ptr->next=current_ptr->next; current_ptr->next->prev=previous_ptr; deletecurrent_ptr; current_ptr=previous_ptr;}voidguanli::DeleteList(){ node*temp_ptr; current_ptr=head_ptr; do { temp_ptr=current_ptr->next; tail_ptr->next=temp_ptr; temp_ptr->prev=tail_ptr; deletecurrent_ptr; current_ptr=temp_ptr; }while(temp_ptr!=NULL&&temp_ptr!=tail_ptr); deletecurrent_ptr;}#include"guanli.h"#include<iomanip>#include<iostream>#include<fstream>#include<string>usingnamespacestd;voidguanli::SaveFile(){ fstreamoutfile; outfile.open("classmate.txt",ios::out); if(outfile) { current_ptr=head_ptr; if(head_ptr!=NULL) { do { outfile<<setw(14)<<current_ptr->stu.fri_name<<setw(30)<<current_ptr->stu.e_mail; outfile<<setw(5)<<current_ptr->stu.sex<<setw(20)<<current_ptr->stu.phone_num<<'\t'; outfile<<current_ptr->stu.memory<<endl; current_ptr=current_ptr->next; }while(current_ptr!=head_ptr); } outfile<<"文件结束"<<endl; outfile.close(); } else cout<<"打开文件出错!"<<endl;}voidguanli::LoadFile(){ fstreaminfile; boole_loop=0; infile.open("classmate.txt",ios::in); if(infile) { do { student*s=newstudent; node*new_ptr=newnode(*s); if(new_ptr!=NULL) { infile>>new_ptr->stu.fri_name; if((new_ptr->stu.fri_name!="")&& (new_ptr->stu.fri_name!="文件结束")) { infile>>new_ptr->stu.e_mail; infile>>new_ptr->stu.sex; infile>>new_ptr->stu.phone_num; infile>>new_ptr->stu.memory; infile.ignore(20,'\n'); InsertNode(new_ptr); } else { deletenew_ptr; e_loop=1; } } else { cout<<"!警告:没有成功地从磁盘导入文件。"<<endl; e_loop=1; } }while(!e_loop); infile.close(); } else cout<<"没有可用的数据文件,记录表为空。"<<endl;}voidguanli::ChangeMes(){ //system("pause"); stringsearch_string; if(head_ptr==NULL) { cout<<"链表为空,无记录!"<<endl; return; } intnFlag=0; cout<<"\t\t\t修改记录需要输入同学姓名\n\n\t\t\t是否需要查找学生的学号?(Y/N):"; charn[30]; cin.getline(n,30); if(!strcmp(n,"y")||!strcmp(n,"Y"))SearchChoice(); current_ptr=head_ptr; cin.ignore(20,'\n'); cout<<"\n输入你想要修改记录的学号:"; cin>>search_string; student*s=newstudent; node*new_ptr; while((current_ptr->stu.fri_name==search_string)&&head_ptr!=NULL) { node*new_ptr=newnode(*s); nFlag=1; cout<<"\n找到记录\n"; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t邮箱:"<<current_ptr->stu.e_mail<<"\t:"<<current_ptr->stu.phone_num<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl; if(VerifyDelete()) {again1: cout<<"\t\t\t请输入你要修改的项目:\n\n"; cout<<"\t\t\t1:姓名n\n"; cout<<"\t\t\t2:电子邮件\n\n"; cout<<"\t\t\t3:性别\n\n"; cout<<"\t\t\t4:号码\n\n"; cout<<"\t\t\t5:珍贵回忆\n\n"; charchange_temp[100]; cin.getline(change_temp,100); intsize=strlen(change_temp); if(size!=1) { cout<<"输入有误,请重新输入:"<<endl; system("pause"); gotoagain1; } charch=change_temp[0]; switch(ch) { case'1': cout<<"原记录的姓名为:"<<current_ptr->stu.fri_name<<endl; cout<<"请输入新记录的姓名为:"; cin>>new_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.phone_num=current_ptr->stu.phone_num; new_ptr->stu.memory=current_ptr->stu.memory; break; case'2': cout<<"原纪录的电子邮件为:"<<current_ptr->stu.e_mail<<endl; cout<<"请输入新记录的电子邮件为:"; cin>>new_ptr->stu.e_mail; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.phone_num=current_ptr->stu.phone_num; new_ptr->stu.memory=current_ptr->stu.memory; break; case'3': cout<<"原纪录的性别为:"<<current_ptr->stu.sex<<endl; cout<<"请输入新记录的性别:"; cin>>new_ptr->stu.sex; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.phone_num=current_ptr->stu.phone_num; new_ptr->stu.memory=current_ptr->stu.memory; break; case'4': cout<<"原纪录的号码为:"<<current_ptr->stu.phone_num<<endl; cout<<"请输入新记录的号码:"; cin>>new_ptr->stu.phone_num; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.memory=current_ptr->stu.memory; break; case'5': cout<<"原纪录的宿舍号为:"<<current_ptr->stu.memory<<endl; cout<<"请输入新记录的宿舍号:"; cin>>new_ptr->stu.memory; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.phone_num=current_ptr->stu.phone_num; break; default: cout<<"输入有误,请重新输入:"<<endl; gotoagain1; break; } if(VerifyDelete()) { DeleteNode(); InsertNode(new_ptr); cout<<"\n记录已修改\n"; cout<<"姓名:"<<new_ptr->stu.fri_name<<"\t性别:"<<new_ptr->stu.sex; cout<<"\t邮箱:"<<new_ptr->stu.e_mail<<"\t:"<<new_ptr->stu.phone_num<<endl; cout<<"珍贵回忆:\n"<<new_ptr->stu.memory<<endl; current_ptr=head_ptr; } } else//用户没有确定要修改,则要删除临时结点 { cout<<"姓名为:"<<current_ptr->stu.fri_name<<"\t的记录没有被修改"; current_ptr=current_ptr->next; deletenew_ptr; } } do { if(current_ptr->stu.fri_name==search_string) { nFlag=1; node*new_ptr=newnode(*s); cout<<"\n找到记录\n"; cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex; cout<<"\t邮箱:"<<current_ptr->stu.e_mail<<"\t:"<<current_ptr->stu.phone_num<<endl; cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl; if(VerifyDelete()) {again2: cout<<"\t\t\t请输入你要修改的项目:\n\n"; cout<<"\t\t\t1:姓名n\n"; cout<<"\t\t\t2:电子邮件\n\n"; cout<<"\t\t\t3:性别\n\n"; cout<<"\t\t\t4:号码\n\n"; cout<<"\t\t\t5:珍贵回忆\n\n"; charchange_temp[100]; cin.getline(change_temp,100); intsize=strlen(change_temp); if(size!=1) { cout<<"输入有误,请重新输入:"<<endl; system("pause"); gotoagain2; } charch=change_temp[0]; switch(ch) { case'1': cout<<"原记录的姓名为:"<<current_ptr->stu.fri_name<<endl; cout<<"请输入新记录的姓名为:"; cin>>new_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.phone_num=current_ptr->stu.phone_num; new_ptr->stu.memory=current_ptr->stu.memory; break; case'2': cout<<"原纪录的电子邮件为:"<<current_ptr->stu.e_mail<<endl; cout<<"请输入新记录的电子邮件为:"; cin>>new_ptr->stu.e_mail; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.phone_num=current_ptr->stu.phone_num; new_ptr->stu.memory=current_ptr->stu.memory; break; case'3': cout<<"原纪录的性别为:"<<current_ptr->stu.sex<<endl; cout<<"请输入新记录的性别:"; cin>>new_ptr->stu.sex; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.phone_num=current_ptr->stu.phone_num; new_ptr->stu.memory=current_ptr->stu.memory; break; case'4': cout<<"原纪录的号码为:"<<current_ptr->stu.phone_num<<endl; cout<<"请输入新记录的号码:"; cin>>new_ptr->stu.phone_num; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.memory=current_ptr->stu.memory; break; case'5': cout<<"原纪录的宿舍号为:"<<current_ptr->stu.memory<<endl; cout<<"请输入新记录的宿舍号:"; cin>>new_ptr->stu.memory; new_ptr->stu.fri_name=current_ptr->stu.fri_name; new_ptr->stu.e_mail=current_ptr->stu.e_mail; new_ptr->stu.sex=current_ptr->stu.sex; new_ptr->stu.phone_num=current_ptr->stu.phone_num; break; default: cout<<"输入有误,请重新输入:"<<endl; gotoagain2; break; } if(VerifyDelete()) { DeleteNode(); InsertNode(new_ptr); cout<<"\n记录已修改\n"; cout<<"姓名:"<<new_ptr->stu.fri_name<<"\t性别:"<<new_ptr->stu.sex; cout<<"\t邮箱:"<<new_ptr->stu.e_mail<<"\t:"<<new_ptr->stu.phone_num<<endl; cout<<"珍贵回忆:\n"<<new_ptr->stu.memory<<endl; current_ptr=head_ptr; } } else//用户没有确定要修改,则要删除临时结点 { cout<<"姓名为:"<<current_ptr->stu.fri_name<<"\t的记录没有被修改"; deletenew_ptr; } } current_ptr=current_ptr->next; }while((current_ptr!=head_ptr||head_ptr==NULL)); if(nFlag==0) { cout<<"找不到相符合的记录\n"; UserInput(); } //system("pause");}voidguanli::UserInput(){ charanswer; cout<<"再试一次?y/n:"; cin.get(answer); if(answer=='y'||answer=='n') { if(answer=='y') ChangeMes(); } else { cout<<"输入无效字符"; UserInput(); }}#include"student.h"#include<iostream>usingnamespacestd;student::student(void){ fri_name=phone_num=e_mail=sex=memory="";}student::~student(void){}#pragmaonce#include<string>#include<iostream>usingnamespacestd;classstudent{ stringfri_name;//姓名 stringe_mail;//邮箱 stringsex;//性别 stringmemory;//记忆 stringphone_num;//号码public: student(void); ~student(void); friendclassguanli; friendstructnode;};#include<iostream>#include"guanli.h"usingnamespacestd;charpause;intmain(){ guanlimyguanli; cout<<endl<<endl<<"欢迎使用BOBO版同学录系统系统"<<endl<<endl; system("pause");//暂停 system("cls");//清屏 intchoice; myguanli.head_ptr=myguanli.tail_ptr=NULL; myguanli.LoadFile();//文件读入 do { system("cls");//清屏 cout<<endl<<endl<<"输入数字键选择你所要进行的操作:"<<endl<<endl; cout<<"0:新增一个同学录信息"<<endl<<endl; cout<<"1:显示同学录所有数据"<<endl<<endl; cout<<"2:删除操作"<<endl<<endl; cout<<"3:查询操作"<<endl<<endl; cout<<"4:修改同学录"<<endl<<endl; cout<<"5:寻求帮助"<<endl<<endl; cout<<"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蒙式语言教案参考8篇
- 电影光的观后感8篇
- 2024至2030年中国服装五金装饰配件数据监测研究报告
- 2024至2030年中国微型遥控无线万向云台控制器数据监测研究报告
- 2024年青霉素G钠无菌粉项目可行性研究报告
- 2024年舞台灯项目可行性研究报告
- 2022军训参考心得体会最后一天5篇
- 压力显示器市场发展预测和趋势分析
- 七年级地理课程工作计划5篇
- 财务个人述职报告5篇()
- 四川省成都市2024-2025学年八年级上学期期中考试英语试卷(四)
- 2024-2025学年广东省珠海一中、广州二中等六校高三(上)第二次联考物理试卷(10月份)(含答案)
- 河南省信阳市2024-2025学年人教版八年级上期数学期中测试
- 第六章 一次函数(13个题型突破)
- 大学生就业指导(第2版)教学课件10
- 【课件】跨学科实践:探索厨房中的物态变化问题+课件人教版(2024)物理八年级上册
- 国家开放大学《管理英语1》边学边练参考答案
- 中国联通GPON设备技术规范
- 中学物理社团活动记录(共20页)
- 浅谈针织物线密度的常用测试方法及检测标准
- 包装盒检测报告.doc
评论
0/150
提交评论