欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    [计算机软件及应用]c++集中上机报告-学生通信录.doc

    • 资源ID:1991457       资源大小:320KB        全文页数:34页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [计算机软件及应用]c++集中上机报告-学生通信录.doc

    集中上机实习报告 指导教师: 甘玲 姓 名: 何波 学 号: 2010211995 班 级: 0421002 时 间: 2010-11-18 目 录第1章 需求分析31.1问题描述3 1.2 功能要求3 1.3 问题的解决方案3第2章 系统设计4 2.1 数据设计4 2.1.1 类设计4 2.1.2 类之间的关系5 2.1.3 函数设计5 2.2 结构设计6 2.2.1 模块设计6 2.2.2 模块功能星系描述62.2.3 系统流程图8第3章 系统实现9 3.1 类实现9 3.2 函数实现11 3.3 主函数实现27第4章 系统测试28 4.1 模块测试28 4.2 课程设计过程中遇到的问题33总结34 34 / 34第1章 需求分析1.1 问题描述用C+开发一个学生通信录系统。要求:分析学生通信录的类及层次图;实现简单的通信录管理,能够输入通信录卡片(实现增、删、改等功能),能够分组,并能够实现按名字(或其他方式)查询功能;实现界面:可以是DOS界面,功能按提示方式输入实现;可以是Windows界面,功能用菜单形式,输入界面用对话框形式。1.2 功能要求本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供按类别查找功能,可以对数据进行修改、删除、添加等操作。综合考虑,作为一个学生通讯录系统,系统应该具备以下功能:1.新增联系人信息; 2.修改联系人信息;3.删除联系人信息;4.按不同的项进行查找某个联系人的信息;5.从文件读入通讯录。6.将通讯录写入文件;7.清除文件中的所有信息。1.3 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述; (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告。 第2章 系统设计2.1 数据设计2.1.1 类设计一共设计了2个类,分别是基本信息类basiciInfo,学生类Student。 basiciInfo# Name:char # No:string # classNum :string # Age:string # Sex:char # Tel:string; # address:char # next:basiciInfo *+ basiciInfo(char *,string ,string ,string ,char * ,string ,char * )+ friend class StudentStudent- ptb:basiciInfo *+ Student()+ Student()+ Search(char):void+ Search(string):void+ Insert():void+ Delete():void+ Modify():void+ Query():void+ Count():void+ Save():void+ ReadFile():void+ ShowAll():void+ DesTory():void+ Output(basiciInfo *):void2.1.2 类之间的关系本程序中定义了基本信息类basiciInfo,包含了表示学生基本信息的数据成员,包括姓名、学号、班级年龄、性别、电话和地址; 学生类Student中则定义了各种操作,包括添加、删除、修改联系人的信息等等。程序中学生类Student定义为基本信息类basiciInfo的友元类,这样学生类中的各个函数便可以访问基本信息类中的各个基本信息了。2.1.3 函数设计定义了如下函数,其功能分别如下:void Search(char Name20); /按姓名查找联系人 void Search(string No); /按学号查找联系人void Insert(); /添加联系人信息 void Delete(); /删除联系人信息 void Modify(); /修改联系人信息void Query(); /查询联系人信息 void Count(); /统计联系人信息void Save(); /保存数据 void ReadFile(); /读入数据 void ShowAll(); /查看所有联系人信息void DesTory(); /清除文件信息void Output(basiciInfo *p); /输出某一结点的信息2.2 结构设计2.2.1 模块设计系统功能模块图本次程序设计主要设计了八个模块。分别是:1. 新增联系人模块:用函数void Insert()实现 2. 删除联系人模块:用函数void Delete()实现 3. 修改联系人模块:用函数void Modify()实现 4. 查询模块:用函数void Query()实现 5. 保存数据模块:用函数void Save()实现 6. 查看全部信息模块:用函数void ShowAll ()实现 7. 清除通讯录模块:用函数void DesTory()实现 8. 统计模块:用函数void Count()实现 2.2.2 各模块功能详细描述1.进入主函数进入主函数的主菜单,这是一个无限循环的菜单。当进入主菜单后,用户可以选择以下选项:1. 新增联系人 2. 删除联系人 3.修改联系人 4. 查询详细信息 5.保存数据 6. 查看全部信息7.清除通讯录 8. 统计 0.退出系统2.新增联系人 (1)按照提示依次输入学生信息:学号,姓名,班级,年龄,性别,电话和地址。如果输入的学号已经存在的话就提示是否修改该学生的信息。这是可以选择Y修改,执行“修改联系人”这个函数;或者选择N回到主菜单。(2)输入完成第一个联系人的信息后会提示是否继续添加联系人信息。这时可以输入Y继续添加,输入N回到 主菜单。3.删除联系人根据提示输入要删除的联系人的学号,如果找到了该学生,则询问是否删除,否则返回主菜单。4.修改联系人 (1)根据提示输入要修改的联系人的学号,如果没有找到该学生,则返回主菜单;否则显示所要修改的联系人的所有信息,并提示用户选择要修改的信息,并输入新的信息,完成修改。(2)用户完成修改后可以输入Y继续修改,也可以输入N回到主菜单。5.查询详细信息用户可以选择按学号、名字、电话号码查找联系人的详细信息。用户选择按某一项功能查找后,系统提示用户输入相应的学号、名字或者电话号码,如果查找成功,则显示该联系人的详细信息,并提示用户是否继续查询;否则返回主菜单。6.保存数据 当用户选择保存数据时,系统将会向文件写入学生通讯录信息,把链表中的结点都保存到文件中。7.查看全部信息从头结点开始输出链表的每一个结点的信息,并按照一定格式进行显示。8.清除通讯录将外部文件中的所有联系人的信息全部删除。建立一个输出流文件用来连接存储信息的文本,将数据存储到文本。9.统计 用户可以通过两种方式系统通讯录中联系人的数目。一是按性别统计,而是按班级统计。如果用户选择按性别统计,系统统计后则输出男生、女生的人数;如果用户选择按班级统计,则会提示用户输入班级号,系统统计后则输出人数。10.退出系统 退出系统前提示用户是否保存所有操作,用户输入Y后系统保存用户的所有操作并退出,用户输入N后直接退出系统。2.2.3 系统流程图第3章 系统实现3.1 类实现基本信息类basiciInfoclass basiciInfo /基本信息类public: basiciInfo(char *Name,string No,string classNum,string Age,char *Sex,string Tel,char *address); /基本信息类的构造函数friend class Student; /友元类protected: char Name20; /姓名string No; /学号string classNum; /班级 string Age; /年龄char Sex10; /性别string Tel; /电话char address50; /地址 basiciInfo *next; /指向下一结点;学生类Studentclass Student /学生类public:Student(); /学生类的构造函数Student(); /学生类的析构函数void Search(char Name20); /按姓名查找联系人 void Search(string No); /按学号查找联系人void Insert(); /添加联系人信息 void Delete(); /删除联系人信息 void Modify(); /修改联系人信息void Query(); /查询联系人信息 void Count(); /统计联系人信息void Save(); /保存数据 void ReadFile(); /读入数据 void ShowAll(); /查看所有联系人信息void DesTory(); /清除文件信息void Output(basiciInfo *p); /输出某一结点的信息private:basiciInfo *ptb; /指向基本信息类的指针;3.2 函数实现以下是本程序中所有函数的实现:basiciInfo:basiciInfo(char *Name,string No,string classNum,string Age,char *Sex,string Tel,char *address) /基本信息类的构造函数的实现 strcpy(this->Name,Name); strcpy(this->Sex,Sex);strcpy(this->address,address);this->No=No; this->classNum=classNum; this->Age=Age;this->Tel=Tel;Student:Student() /学生类的构造函数的实现 ptb=0;ReadFile();Student:Student() /学生类的析构函数的实现 basiciInfo *p; p=ptb; while(p) p=p->next; delete ptb; ptb=p; ptb=0; void Student:Output(basiciInfo *p) /输出某一结点的信息cout<<"t姓名: "<<p->Name<<endl;cout<<"t学号: "<<p->No<<endl;cout<<"t班级: "<<p->classNum<<endl;cout<<"t年龄: "<<p->Age<<endl;cout<<"t性别: "<<p->Sex<<endl;cout<<"t电话: "<<p->Tel<<endl;cout<<"t地址: "<<p->address<<endl;void Student:Insert()basiciInfo *p,*p2; /新结点指针 string No,Age,Tel,classNum;char Name20,Sex10,address50; char c;cout<<"nt=新增学生通讯录=n" /输入学生信息 cout<<"t输入学号:"cin>>No; basiciInfo *p1;p1=ptb;while(p1) if(p1->No=No) break; else p1=p1->next; if(p1!=NULL)cout<<"t该学号已存在,是否修改该学生信息(Y/N) "cin>>c;if(toupper(c)='Y')cout<<"t该学生信息为:"<<endl;Search(No);cout<<endl;Modify();return ;elsereturn ;cout<<"t输入姓名:"cin>>Name; cout<<"t输入班级:"cin>>classNum;cout<<"t输入年龄:"cin>>Age;cout<<"t输入性别(f/m):"cin>>Sex;cout<<"t输入电话:"cin>>Tel;cout<<"t输入地址:"cin>>address;p=new basiciInfo(Name,No,classNum,Age,Sex,Tel,address);p->next=0; /学生结点加入链表,插入到尾部if(ptb) /若已经存在结点 p2=ptb; while(p2->next) /查找尾结点 p2=p2->next; p2->next=p; else /若不存在结点,即为表空 ptb=p; cout<<"nt=添加成功=n"<<endl;cout<<"t是否继续添加(Y/N): "cin>>c;if(toupper(c)='Y')Insert();return ;elsereturn ;void Student:Delete() /删除联系人信息 char c;string No; cout<<"nt=删除信息=n" cout<<"t输入要删除的学生学号:t"cin>>No; cout<<endl; basiciInfo *p1,*p2; /查找要删除的结点p1=ptb; while(p1) if(p1->No=No) break; else p2=p1; p1=p1->next; if(p1!=NULL) /若找到结点,则删除 cout<<"t所要删除的学生的信息如下:n"<<endl;Output(p1);cout<<"t确定是否删除(Y/N): "cin>>c;if(toupper(c)!='Y')return;if(p1=ptb) /若要删除的结点是第一个结点 ptb=p1->next; delete p1; else /若要删除的结点是后续结点 p2->next=p1->next; delete p1; cout<<"t=删除成功=n"cout<<"t是否继续删除(Y/N) "<<endl;cin>>c;if(toupper(c)='Y')Delete();return ;elsereturn ; else /未找到结点 cout<<"t未找到该学生!n" getch();void Student:Modify() /修改联系人信息 basiciInfo *p1;char c;string n; /临时学号p1=ptb;cout<<"nt请输入要修改的学生的学号:"cin>>n;while(p1) if(p1->No=n) break; else p1=p1->next; if(p1!=NULL) /若找到结点 cout<<"nt所要修改的学生的信息如下:n"<<endl;Output(p1);do cout<<"n= 修改信息 ="<<endl;cout<<"n1. 修改姓名 2.修改学号 3.修改班级 4. 修改年龄 n5. 修改性别 6. 修改联系方式 7.修改地址 8. 退出修改 n"<<endl;cout<<"请选择(1-8)要修改的信息:n"cin>>c;if(c!='8')cout<<"t请输入新的信息: "switch(c)case '1': cin>>p1->Name; break;case '2': cin>>p1->No; break;case '3': cin>>p1->classNum; break;case '4': cin>>p1->Age; break;case '5': cin>>p1->Sex; break;case '6': cin>>p1->Tel; break;case '7': cin>>p1->address; break;default: break;if(c!='8')cout<<"nt修改成功,是否继续修改(Y/N): "cin>>c;if(toupper(c)='Y')Modify();return ;elsebreak;while(c!='8'); else cout<<"t未找到该学生!n" system("pause"); void Student:Save() /保存联系人信息,写入到文件 ofstream fbasiciInfo("Person.txt",ios:out); char c; cout<<"nt是否要保存数据?Y/N:"cin>>c; if(toupper(c)!='Y')return; basiciInfo *p=ptb; while(p) fbasiciInfo<<p->Name<<" "<<p->No<<" "<<p->classNum<<" "<<p->Age<<" "<<p->Sex<<" "<<p->Tel<<" "<<p->address<<endl; p=p->next; fbasiciInfo.close(); cout<<"nt保存成功.n" system("pause"); void Student:ReadFile() /将文件中的数据读入 ifstream fbasiciInfo; basiciInfo *p=ptb; string No,Age,Tel,classNum;char Name20,Sex10,address50; fbasiciInfo.open("Person.txt",ios:in); fbasiciInfo>>Name>>No>>classNum>>Age>>Sex>>Tel>>address;while(fbasiciInfo.good() p=new basiciInfo(Name,No,classNum,Age,Sex,Tel,address);p->next=0; if(ptb) /若已经存在结点 /插入到尾部 basiciInfo *p2; p2=ptb; while(p2->next) /查找尾结点 p2=p2->next; p2->next=p; else /若不存在结点 ptb=p; fbasiciInfo>>Name>>No>>classNum>>Age>>Sex>>Tel>>address;fbasiciInfo.close(); void Student:Search(string No) /按string 类型查找basiciInfo *p1;p1=ptb;while(p1) if(p1->No=No) break; else p1=p1->next; if(p1!=NULL)Output(p1);elsecout<<"t未找到该学生"<<endl;void Student:Search(char Name20) /按姓名查找basiciInfo *p1;int count=0;p1=ptb;while(p1) if(strcmp(p1->Name,Name)=0)count+;Output(p1);p1=p1->next; if(count)cout<<"t查询成功!"<<endl;cout<<"nt共找到 "<<count<<" 个名字为 "<<Name<<" 的同学n"<<endl;elsecout<<"nt未找到该学生!n"<<endl;system("pause");void Student:Query() /查询联系人信息char c;string No,Tel;char Name20;docout<<"t1. 按学号查找 2. 按名字查找 3. 按电话号码查找 4.退出查找nt请选择:"cin>>c;cout<<endl;switch(c)case '1': cout<<"t输入学号: "cin>>No;Search(No); ; break;case '2': cout<<"t输入姓名: "cin>>Name;Search(Name); ; break;case '3': cout<<"t输入电话号码"cin>>Tel;Search(Tel); ;break;case '4':break;default: cout<<"t输入有误 请重新输入!n"while(c!='1'&&c!='2'&&c!='3'&&c!='4');if (c='4')cout<<"t 正在退出. n"<<endl;cout<<"nt是否继续查找(Y/N) "cin>>c;if(toupper(c)='Y')Query();return ;elsereturn ;system("pause");void Student:ShowAll() /输出全部信息char c;if(ptb=0) cout<<"t尚未创建通讯录,是否创建(Y/N)"cin>>c;if(toupper(c)='Y')Insert();return;elsereturn ;else if(ptb!=0)basiciInfo *p;p=ptb;cout<<setw(5)<<"n= 联系人信息 ="<<endl;cout<<setw(5)<<"姓名"<<setw(12)<<"学号"<<setw(10)<<"班级"<<setw(8)<<"年龄"<<setw(5)<<"性别"<<setw(12)<<"电话"<<setw(20)<<"地址"<<endl;while(p)cout<<setw(5)<<p->Name<<setw(12)<<p->No<<setw(10)<<p->classNum<<setw(8)<<p->Age<<setw(5)<<p->Sex<<setw(12)<<p->Tel<<setw(20)<<p->address<<endl;p=p->next;cout<<endl;system("pause");void Student:DesTory() /清除文件信息char c;cout<<"nt=清除信息=n"cout<<"t警告: 清除通讯录信息会导致您保存的信息完全消失!n"<<endl;cout<<"t是否决定清除通讯录信息(Y/N): "cin>>c;if(toupper(c)!='Y')return;elsebasiciInfo *p; p=ptb; while(p) p=p->next; delete ptb; ptb=p; ptb=0;ofstream fbasiciInfo("Person.txt");fbasiciInfo.close();void Student:Count() /统计联系人 basiciInfo *p1; string cla; int count=0,Boy=0,Girl=0,c=0; p1=ptb; cout<<"nt你可以通过以下方式统计:"<<endl; cout<<"t1、按性别统计"<<endl; cout<<"t2、按班级统计"<<endl; cout<<"nt你想要按什么方式统计:" char ch; cin>>ch; while(ch!='1'&&ch!='2') cout<<endl; cout<<"n操作错误,请重新输入:" cin>>ch; if(ch='1') while(p1) count+; if(strcmp(p1->Sex,"m")=0|strcmp(p1->Sex,"M")=0) Boy+; if(strcmp(p1->Sex,"f")=0|strcmp(p1->Sex,"F")=0) Girl+; p1=p1->next; cout<<"nt总共有 "<<count<<"份通讯录n"<<endl; cout<<"t男生: "<<Boy<<"t 女生: "<<Girl<<"n"<<endl; system("pause"); else if(ch='2') cout<<"nt你要统计的班级是:" cin>>cla; while(p1) if(cla=p1->classNum) c+; p1=p1->next; if(c=0) cout<<"t该班不存在学生!n"<<endl; else cout<<"t共有"<<c<<"个学生n"<<endl; system("pause"); void menu() /主菜单system("cls");cout<<" ="<<endl;cout<<" t 1.新增联系人 t "<<endl;cout<<" t 2.删除联系人 t "<<endl;cout<<" t 3.修改联系人 t "<<endl;cout<<" t 4.查询详细信息 t "<<endl;cout<<" t 5.保存数据 t "<<endl;cout<<" t 6.查看全部信息 t "<<endl;cout<<" t 7.清除通讯录 t "<<endl;cout<<" t 8.统计 t "<<endl;cout<<" t 0.退出系统 t "<<endl;cout<<" ="<<endl;cout<<"t请选择(1-8): "3.3 主函数实现int main(void)Student s;int choose;do menu();cin>>choose;switch(choose) case 1: s.Insert(); break; case 2: s.Delete(); break; case 3: s.Modify(); b

    注意事项

    本文([计算机软件及应用]c++集中上机报告-学生通信录.doc)为本站会员(音乐台)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开