




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮海工学院计算机工程学院课程设计报告设计名称: C++程序设计课程设计姓名:贲新宇学号:25专业班级:G计算机131班系(院):计算机工程学院设计时间:——设计地点:计算机网络技术室指导教师评语:成绩:签名:年 月 日1.课程设计目的本课程设计是网络工程专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进行的一次全面的综合练习。本课程设计的目的和任务:1)巩固和加深学生对C++课程的基本知识的理解和掌握;2)掌握C++编程和程序调试的基本技能;3)利用C++进行简单软件设计的基本思路和方法;4)提高运用C++解决实际问题的能力;5)掌握书写程序设计说明文档的能力。2.课程设计任务与要求:要求:设计题目、设计要求以及系统功能需求分析;总体设计:包括模块说明、模块结构图和系统流程图;详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;源程序代码及设计成果:完整源程序清单和设计成果;总结:调试分析过程描述:包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C++和本次课程设计的认识等内容;任务:以本班同学的具体数据为背景,设计一个本班同学通讯录。实现功能:通讯录编辑(添加、删除)。按不同的项进行查找。对已存在的通讯录按不同的项排序。将通讯录写入文件。从文件读入通讯录。备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。3.课程设计说明书概要设计一、模块说明在我设计的程序中一共包括了六个部分,分别是: 初始化通讯录、搜索(Search_information() )、编辑(Edit_information() )、删除(Delete_information() )、排序(Order_list() )、添加(Add_information() )。其中搜索排序又分若干个子模块。在初始化中直接调用每个对象的成员函数通过键盘录入来对对象进行初始化,整个 6大模块通过定义 Switch 语句来接收输入指令并执行相应模块,若干子模块同理通过定义不同的Switch函数或者if 函数来达到选择功能的作用。在初始化中直接调用每个对象的成员函数通过键盘录入来对对象进行初始化,同时在每个模版中还加入了其实用户的语句。通过在每个函数里面用 if 选择语句和goto指向来判断用户是要回到主界面以显示主菜单继续操作还是选择结束程序。二、模块结构图模块结构图是结构化设计方法,采用类似于结构化分析的“由大到小”、“自顶向下,逐层分解”的基本思想描述(分解)系统。结构化设计方法,首先以数据流图为基础导出系统模块(功能)结构图。在导出系统模块(功能)结构图的过程中,以独立性、低耦合性、高内聚性、公共模块作为模块划分的原则。先将系统数据流图中的加工转换成模块,再将各大模块继续划分为较小的模块,直到每一模块都是功能单一的模块。班级通讯录系统搜索功能 编辑功能 删除功能 添加功能 排序功能按按退对定添按按加学姓姓学出同位号学到新号名名搜各该的排排信序序搜索信同息学息修显显改删示示除信信信息息息三、系统流程图⑴主要模块介绍开始录入初始信息主函数界面键入iSwitch(i)casecasecasecasecasecase
搜索(Search_information( ))编辑(Edit_information() )删除(Delete_information() )排序(Order_list() )添加(Add_information() )退出通讯录系统结束⑵各功能模块设计思路及流程图:①搜索功能:该功能通过键盘输入数值 j,选择调用不同的具体的搜索功能函数;在这两种功能中,分别又通过for 循环和if 条件判断找出符合条件的同学的信息,完成功能要求。最后通过选择是否继续来继续搜索或者返回主函数界面。Search_information()键入jSwitch(j)case1 按学号搜索(search1()) 是继续case2 按姓名搜索(search2()) 否主函数界面②编辑功能:该功能主要通过键盘首先输入需要编辑的同学姓名,然后通过一个for循环查找到,如果找到信息,则可以继续往下进一步修改信息,如果找不到,则输出没有该同学信息。在定位到具体的对象之后,再通过一个switch语句选择具体修改的信息并修改,修改之后,调用对象的成员函数显示新的信息,然后通过if判断是否继续来选择继续修改或者返回主函数界面。Edit_information()键入name是否是否有此姓名 继续无没有此信息有主函数界面键入jSwitch(j)case1 修改学号case2 修改姓名case3 修改地址case4 修改邮编case5 修改电话case6 修改邮箱删除功能:Add_information()调用 成 员 函 数type_information()修改成功是是否继续否主函数添加新成员功能:Delete_information()输入姓名找到删除主函数排序功能:Order_list()输入jSwitchjCase1 Case2按学号排序 按姓名排序order1() Order2()显示所有信息主函数4.课程设计成果#include<iostream>#include<fstream>#include<string>#include<iomanip>usingnamespacestd;structclassmates{public:charnumber;charname;charaddress;chartelephone_number;charyoubian;chare_mail;voiddisplay()
umber==NUM){Address_list1[k].display();f=0;break;}}if(f==1){cout<<"没有该同学信息 !"<<endl;}}voidsearch2() ame){Address_list1[k].display();f=0;break;}}if(f==1)cout<<"
没有该同学信息
!"<<endl;}voidSearch_information()cout<<" 2.按姓名搜索;"<<endl;cout<<" 3.返回;"<<endl;cout<<" 请选择:";cin>>j;system("cls");cin>>j;system("cls");{temp=k;break;}
学号搜索;"<<endl;/2.否)"<<endl;ame)}if(temp!=-1)
号/2.姓名/3.地址/4.邮编/5.电话号码
/";cout<<endl;cin>>k;switch(k){case1:cout<<setw(10)<<" 请输入新学号 :";cin>>number1;Address_list1[temp].number=number1;edit_display();break;case2:cout<<" 请输入新姓名 :";cin>>name1;Address_list1[temp].name=name1;edit_display();break;case3:cout<<" 请输入新地址 :";cin>>address1;Address_list1[temp].address=address1;edit_display();break;case4:cout<<" 请输入新邮编 :";cin>>youbian1;Address_list1[temp].youbian=youbian1;edit_display();break;case5:cout<<"请输入新电话号码:";cin>>telephone_number1;Address_list1[temp].telephone_number=telephone_number1;edit_display();break;case6:cout<<" 请输入新 e_mail:";cin>>e_mail1;Address_list1[temp].e_mail=e_mail1;edit_display();break;}cout<<"已修改的新的同学信息: "<<endl;Address_list1[temp].display();}else{k=0;cout<<"没有该同学信息 !"<<endl;cout<<"*******************************"<<endl;cout<<"
是否继续修改?(
1.是/2.否)"<<endl;cin>>k;if(k==1)
ame){Address_list1[k].number="f";Address_list1[k].name="f";Address_list1[k].address="f";Address_list1[k].youbian="f";Address_list1[k].telephone_number="f";Address_list1[k].e_mail="f";}}cout<<"该同学信息已删除! "<<endl;}voidAdd_information()ype_information();cout<<endl;Address_list1[n].display();n=n+1;cout<<endl;cout<<endl;}voidorder1()
umber<Address_list1[j].number){information=Address_list1[j];Address_list1[j]=Address_list1[k];Address_list1[k]=information;}}for(j=0;j<n;j++){if(Address_list1[j].number==ch){}elseAddress_list1[j].display();}}voidorder2()ame<Address_list1[j].name){information=Address_list1[j];Address_list1[j]=Address_list1[k];Address_list1[k]=information;}}for(j=0;j<n;j++){if(Address_list1[j].number==ch){}elseAddress_list1[j].display();}}voidOrder_list()学号排序;"<<endl;cout<<"2.按姓名排序;"<<endl;cin>>choice;system("cls");if(choice==1){order1();}else{order2();}cout<<endl;cout<<endl;}intmain(){fstreamoutfile("",ios::out); ype_information();outfile<<Address_list[i].number<<endl;infile>>Address_list1[i].number;outfile<<Address_list[i].name<<endl;infile>>Address_list1[i].name;outfile<<Address_list[i].address<<endl;infile>>Address_list1[i].address;outfile<<Address_list[i].telephone_number<<endl;infile>>Address_list1[i].telephone_number;outfile<<Address_list[i].youbian<<endl;infile>>Address_list1[i].youbian;outfile<<Address_list[i].e_mail<<endl;infile>>Address_list1[i].e_mail;}system("cls");A: cout<<"************ 开发者:贲新宇 ******班级:G计算机131班******"<<endl;cout<<"********************************************************"<<endl;cout<<" G计算机131班同学通讯录 "<<endl;cout<<endl;cout<<endl;cout<<endl;{cout<<" 请选择以下功能: "<<endl;cout<<" 1.搜索"<<endl;cout<<" 2.编辑"<<endl;cout<<" 3.删除"<<endl;cout<<" 4.添加新成员"<<endl;cout<<" 5.排序并显示信息 "<<endl;cout<<" 6.退出"<<endl;cout<<" 请选择:";i=0;cin>>i;system("cls");umber<<endl;outfile<<Address_list1[i].name<<endl;outfile<<Address_list1[i].address<<endl;outfile<<Address_list1[i].telephone_number<<endl;outfile<<Address_list1[i].youbian<<endl;outfile<<Address_list1[i].e_mail<<endl;}();();return0;}结果截图:通讯录初始化搜索功能编辑功能删除功能添加成员功能排序并显示信息退出5.课程设计心得通过这次课程设计,巩固了 c++的知识,对c++有了更深的了解,尤其是对文件操作方面,有了进一步的认识和理解。同时增强了动手能力,感受到了 c++编程的乐趣。在本次设计中,我遇到了很多的问题,比如,首先在类的定义时,是否不用其 display() 成员函数,而在别的函数要显示该信息时直接调用;显然,如果用成员函数 display() 的话,可以使代码结构更加清晰,看起来更清爽,因此我选择了在类中定义这样的一个函数,并且在需要时方便调用。第二,在对对象赋值时,我一开始并没有用 type_information() ,而是直接用 for循环一个一个的对对象赋值,然而,这样一来赋值时候语句特别啰嗦,因此再后边的设计中,将赋值直接改用成员函数来对对象进行初始化。当然,在各个模块设计时,问题也不少,例如,在搜索功能中,用 for循环来逐项比对,代码如下:for(k=0;k<n;k++){if(Address_list1[k].number==NUM){Address_list1[k].display();break;}}Else{cout<<" 没有该同学信息 !"<<endl;}}这样一来,一旦 if 中没有满足条件,就会在 else中输出:”没有该同学信息 !”一共输出n-1次或者n次,代码就出现逻辑错误,解决的方法就是再添加一个变量f,对f进行判断,代码如下:for(k=0;k<n;k++){if(Address_list1[k].number==NUM){Address_list1[k].display();f=0;break;}}if(f==1){cout<<" 没有该同学信息 !"<<endl;}}如此,满足if 的条件,就直接显示并跳出,如果不满足,就只会显示一条 "没有该同学信息!"。问题终于顺利解决。在删除功能中,我最初的想法是用后边的信息覆盖要删除的信息这样信息就相当于被删除了,代码如下:for(k=0;k<n-1;k++){if(nam==Address_list1[k].name){Address_list1[k].number=Address_list1[k+1].number;Address_list1[k].name=Addr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有机化学的前沿技术试题及答案
- 新能源汽车的用户体验提升方案测试题及答案
- 理清声部与和声的相互配置2025年乐理考试试题及答案
- 如何科学设计创业扶持政策试题及答案
- 护士面试题纲及答案
- 小学教育教学反思的评估标准试题及答案
- 数学小达人试题及答案推出
- 无机化学基本概念测试试题及答案
- 空间功能划分与家具设计整合策略及试题及答案
- 电动汽车结构设计考题试题及答案
- 2024年江西省气象部门招聘考试真题
- 2025-2030中国生物计算市场研发创新及发展前景趋势预测研究报告
- (二模)2025年深圳市高三年级第二次调研考试历史试卷(含标准答案)
- 曳引式电梯知识培训课件
- 贵港辅警考试题库2024
- 2023年江苏泰州市第四人民医院招考聘用高层次人才11人模拟备考试卷(共1000题含答案解析)
- 工会换届选举请示样式
- 七年级音乐上册 《青少年管弦乐队指南》教学课件
- GB/T 22465-2008红花籽油
- GB/T 18705-2002装饰用焊接不锈钢管
- 巴菲特三大经典演讲之二-1998年佛罗里达大学商学院演讲
评论
0/150
提交评论