学校类课程设计报告_第1页
学校类课程设计报告_第2页
学校类课程设计报告_第3页
学校类课程设计报告_第4页
学校类课程设计报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中原工学院计算机学院C++课程设计姓名:王宏方学号:201100824223专业:计算机科学与技术班级:网络112课程: C++程序设计指导教师: 王文奇、课程设计目的及要求设计目的计算机学院所开设的C++课程设计是教学实践环节中一项重要内容,进行此课程设计的旨在:提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,作出设计报告。设计要求1•编写学校类,要求:•包含成员学校名称、位置,校长等,并通过成员变量设置和获得这些变量的值。•派生大学类:包括成员变量,院系个数;•派生中学类包含成员变量中学类型;•编写一个虚函数获得学校的功能(学校类中是纯虚函数、大学类的功能为“专业人才培养”中学功能为“学习学科专业化与理论化的基础知识”)2•学生通讯录管理系统用面向对象的方法编写一个程序,实现在菜单中,输入数字序号,执行相应功能;基木要求:•学生信息包括:学号,姓名,所在专业和年级、性别,出生年月,手机,QQ,家庭住址等;•查询学生时,可以按照学号或姓名完成查询;•修改或删除学生时,可按照学号或姓名找到学生后完成相应修改;•显示学生信息时,要求可以按照学写或姓名的升序或降序分别进行显示;大数计算问题大数是超过整数表示范围的整数(-232〜(232-1)),针对整数运算,定义一个大数类,并编写两个大数类对象的加法和减法函数。说明:大数的计算范围为(-264〜(264-1))基木要求:(1)编写大数类对象的构造函数和输入输出函数(2)重载大数类对象的加法和减法操作(3)设计主函数时,可指定测试数据。4•简单的学籍管理系统为了使学校教务处更好的管理学生的学籍和有关情况,方便快捷的处理各种信息, 设计了程序。比如有新生入学,可以利用程序创建班级,输入学生的信息和资料。程序的基本功能:•向班级里插入一个学生,但必须是插在已经建立的班级里。•输入学生信息,建立一个班级。•修改一个学生的所有资料。•删除某班的一个学生及其所有资料。•删除一个班级。•根据学生姓名查找某个学生信息。二、课程设计具体实现(1)学校类1•总体设计创建一个学校类,包含名称,位置,校长三个成员变量,和一个功能虚函数;派生出大学类,中学类,分别在这两个类中实现功能虚函数。2•详细设计创建了一个学校类,包含名称,位置,校长三个成员变量,并通过成员变量设置和获得这些变量的值。定义一个功能虚函数。代码如下:classxuexiao//创建学校类{public:xuexiao(stringa,stringb,stringc)//构造函数{mingcheng二a;weizhi二b;xiaozhang二c;}voidprint1()//输出函数,获得成员变量的值{cout<<"学校名称:"<<mingcheng<<endl;cout<〈"学校位置:"<<weizhi<<endl;cout<〈"学校校长:"<<xiaozhang<<endl;}virtualvoidgongneng()=0;//定义一个gongneng()虚函数private:stringmingcheng,weizhi,xiaozhang;//成员变量:名称,位置,校长。};实现daxue类,定义yuanxi成员变量,和获得成员变量值的print2()成员函数。实现了gongneng()虚函数,输出学校功能专业人才培养。代码如下:classdaxue:publicxuexiao//以公有的方式由xuexiao类派生出daxue类{public:daxue(stringa,stringb,stringc,intd):xuexiao(a,b,c)//构造函数,给成员变量赋值{yuanxi二d;}voidprint2(){cout<〈"院系个数:"<<yuanxi<<endl;}voidgongneng()//实现gongneng()虚函数。{cout<〈“学校功能:"<<"专业人才培养"<<endl;}private:intyuanxi;//yuanxi成员变量};实现zhongxue类,和大学类类似。实现了用虚函数gongneng输出学校功能:学习学科专业化与理论化的基础知识。classzhongxue:publicxuexiao//以公有方式由xuexiao类派生zhongxue类{public:zhongxue(stringa,stringb,stringc,stringd):xuexiao(a,b,c)//构造函数,给各成员变量赋值{leixing=d;}voidprint3(){cout<<"学校类型:"<<leixing<<endl;}voidgongneng()//实现gongneng函数{cout<〈"学校功能:"<〈"学习学科专业化与理论化的基础知识"<<endl;}private:stringleixing;//成员变量leixing};3•程序调试及问题解决本题遇到问题主要是,编写代码时不认真等小问题。4.源代码#include<iostream>#include<string>usingnamespacestd;classxuexiao{public:xuexiao(stringa,stringb,stringc){mingcheng二a;weizhi二b;xiaozhang二c;}voidprintl(){cout<<"学校名称:"<<mingcheng<<endl;cout<〈"学校位置:"<<weizhi<<endl;cout<〈"学校校长:"<<xiaozhang<<endl;}virtualvoidgongneng()=0;private:stringmingcheng,weizhi,xiaozhang;};classdaxue:publicxuexiao{public:daxue(stringa,stringb,stringc,intd):xuexiao(a,b,c){yuanxi=d;}voidprint2(){cout<〈"院系个数:"<<yuanxi<<endl;}voidgongneng(){cout<〈“学校功能:"<<"专业人才培养"<<endl;}private:intyuanxi;};classzhongxue:publicxuexiao{public:zhongxue(stringa,stringb,stringc,stringd):xuexiao(a,b,c){leixing二d;}voidprint3(){cout<<"学校类型:"<<leixing<<endl;}voidgongneng(){cout<<"学校功能:"<〈"学习学科专业化与理论化的基础知识"<<endl;}private:stringleixing;};intmain(){daxuesl(〃中原工学院〃,〃郑州龙湖〃,〃崔世忠〃,18);zhongxues2("鹿邑一中〃,〃河南鹿邑〃,〃光头强〃,〃重点高中〃);sl.printl();sl.print2();sl.gongneng();s2.printl();s2.print3();s2.gongneng();return0;(二)学生通讯录管理系统1.总体设计2.详细设计信息输入模块主要功能:输入联系人的信息。主要技术:(使用的函数、语句等)使用for循环性别判断使用到讦・・・elseif..Else重新输入及判断是否继续用到goto语句用到输入流。关键代码:ofstreamo1("xuesheng.txt",ios_base::app);olvvsetw(10)vvidvvsetw(10)vvnamevvsetw(10)vvgradevvsetw(10)vvsexvvsetw(10)vvbirthdayvvsetw(10)vvtellvvsetw(10)vvadressvvsetw(10)vvQQvvendl;代码解释:在输入中,比较简单,重要的是写入到数据文件里,关键代码就是往数据文件中增加数据信息。关键代码是用ofstream类,建立了o1对象,xuesheng.txt是数据文件和类型,ios_base::app是在xuesheng.txt追加。下面的代码是要添加的数据。o1vvsetw(10)vvidvvsetw(10)vvnamevvsetw(10)vvgradevvsetw(10)vvsexvvsetw(10)vvbirthdayvvsetw(10)vvtellvvsetw(10)vvadressvvsetw(10)vvQQvvendl;信息显示模块主要功能:用于显示所有联系人的信息。主要技术:(使用的函数、语句等)循环使用的是while输出流。关键代码:voidstudent::xianshi(){system("cls");charch;ifstreamda("xuesheng.txt");coutvv" "<<"学号"VV""<<"姓名"VV" "<<"专业年级"VV" "<<"性另I」"<<""VV"生日"VV""VV"联系电话"VV" "VV"家庭住址"VV""VV"QQ"VVendl;while(da.get(ch)){coutvvch;}da.close();}代码解释:定义变量ch,用输出流类建立对象da,将输出流从xuesheng.txt中读出的信息放入ch中,显示出来。每次只读出一条信息,所以用while循环,每读出一条输出一条。信息查询模块主要功能:可以通过姓名或学号查询联系人主要技术:(使用的函数、语句等)使用输出流选择用f...elsef..else...用到while循环关键代码:students11;stringname2,id2,sex;intm;boola=false;coutvv"查询:1.按学号查询;2.按姓名查询。\n";cin»m;ifstreamf2("xuesheng.txt",ios_base::in);if(m=1){coutvv"输入要查询学号:\n";cin»id2;coutvvendl;while(f2.eof()==0)〃读到文件末尾,eof()有数据返回0;{f2>>s11.id>>>>s11.grade>>sex>>s11.birthday>>s11.tell>>s11.adress>>s11.QQ;if(s11.id==id2){coutvv"学号:"vvs11.idvvendlvv"姓名:"vvendlvv"专业年级:"vvs11.gradevvendlvv"性别:"vvsexvvendlvv生日:"vvs11.birthdayvvendlvv"联系电话:"vvs11.tellvvendlvv"家庭住址:"vvs11.adressvvendlvv"QQ:"vvs11.QQvvendl;a=true;break;if(a==false){coutvv"没有您想要查询的信息..."vvendl;}f2.close();}elseif(m=2){ }f2.close();代码解释:If(m==1),按学号查询时。建一个student类对象sll,输出流类建立对象f2,ios_base::in打开xuesheng.txt文件,while循环,循环条件f2.eof()=0表示当对象f2的数据为0时循环结束。通过f2>>s11.id>>>>s11.grade>>sex>>s11.birthday»s11.tell»s11.adress»s11.QQ;读出信息。if(s11.sid=id)判断是否使用学号查询。If(m==2),按姓名查询。同上,if(==name2),判断是否使用姓名查询。信息删除模块主要功能:通过姓名或学号删除联系人信息。主要技术:(使用的函数、语句等)主要用输入输出流。原理如图所示:通过输入输入流,建立两个对象,一个是输入对象,与xuesheng.txt数据文件建立打开关系(ios_base::in);另外是一个输出对象,与meijie.txt数据文件建立添加关系(ios_base::app)。在xuesheng.txt中每读出一条,在meijie.txt中写入一条,遇到要删除的那条,跳过不读。这样,在meijie.txt中保存的是删过后的信息。再通过建立输入输出对象与这两个文件分别建立联系,将meijie.txt中的

信息重新写入到xuesheng.txt文件中输出。关键代码:ifstreamout3("xuesheng.txt",ios::in);〃读ofstreamin3("meijie.txt",ios::out);〃写讦(!out3II!in3){coutvvendlvv"对不起!找不到文件!"vvendl;return;}stringsign;coutvvendlvv"你要删除联系人的姓名或学号:";cin>>sign;boolflag=false;stringstr;while(out3>>name>>id){getline(out3,str);if((sign=name)II(sign=id)){vvstrcoutvvendlvv"你想删除的联系人:"vvendl;vvstrcoutvvsetiosflags(ios::left)vvsetw(lO)vvnamevv""vvidvvendl;flag=true;break;}in3vvsetw(10)vvnamevv""vvidvvstrvvendl;}讦(!flag){coutvvendl<<"对不起!没有相关信息"vvendl;}else{while(getline(out3,str)){in3vvstrvvendl;}out3.close();in3.close();ifstreamout4("meijie.txt",ios::in);ofstreamin4("xuesheng.txt",ios::out);讦(!out4II!in4){coutvvendlvv"对不起不能打开文件!"vvendl;return;}while(getline(out4,str)){in4vvstrvvendl;}代码解释:通过输入输入流,建立两个对象,一个是输入对象,与xuesheng.txt数据文件建立打开关系(ios_base::in);另外是一个输出对象,与meijie.txt数据文件建立添加关系(ios_base::app)。开始时!out3||!in3先判断文件是否为空。不空就执行后面的语句。在while(out3>>name>>id)getline(out,str);out中存储的是姓名和学号的信息,余下的信息存储在str变量中,这两getline读出的是一整条的信息。用讦((sign=name)||(sign==id))判断是否是要删除的信息,是的话输出,余下的通过in3vvsetiosflags(ios::left)vvsetw(10)vvnamevv""vvidvvstrvvendl;;存入meijie.txt中。这样,在meijie.txt中保存的是删过后的信息。再通过建立输入输出对象与这两个文件分别建立联系,将meijei.txt中的信息重新写入到xuesheng.txt文件中输出。之前要引用一个#includeviomanip>,Setw(n)输出字符串之间的距离。信息修改模块主要功能:通过姓名或学号找到要修改的联系人的信息并对他修改主要技术:(使用的函数、语句等)在此模块中,主要用的是删除和添加功能,在查找到相关的信息时先删除,再添加一条新的信息,以此来完成对信息的修改。关键代码:以下是删除部分的代码:ifstreamout("xuesheng.txt",ios_base::in);〃读xuesheng文件中的信息ofstreamin("meijie.txt",ios_base::out);//写入meijie文件讦(!outII!in)//找不到xuesheng或者meijie报错{coutvvendl<<"对不起!找不到文件!"vvendl;return;}stringsign;coutvvendlvv"请输入你要修改的联系人的姓名或学号:";cin>>sign;boolflag=false;stringstr;while(out>>name>>id)//读出每条数据前两个信息:学号和姓名{getline(out,str);//读出剩余的信息,遇到换行符结束讦((sign==name)II(sign==id))coutvvendl<<"你想修改的联系人:"vvendl;coutvvsetiosflags(ios::left)vvsetw(lO)vvnamevv""vvidvvstrvvendl;flag=true;break;}invvsetiosflags(ios::left)vvsetw(10)vvnamevv""vvidvvstrvvendl;//修改信心前面的信息写入cookie}讦(!flag){coutvvendlvv"对不起!联系人中没有相关信息!"vvendl;}else{while(getline(out,str))//将想修改信息后面的信息写入cookie{invvstrvvendl;}out.close();in.close();ifstreamout2("meijie.txt",ios::in);〃读meijieofstreamin2("xuesheng.txt",ios::out);//写入xuesheng讦(!out2II!in2){coutvvendlvv"对不起不能打开文件!"vvendl;return;}while(getline(out2,str))//读出meijie内容in2vvstrvvendl;//写入xueshengin2.close();out2.close();以下是输入的关键代码:ofstreamol("xuesheng.txt",ios::app);〃写入if(!ol){coutvv"不能打开所需文件,系统出错";return;}o1vvsetw(10)vvidvvsetw(10)vvnamevvsetw(10)vvgradevvsetw(10)vvsexvvsetw(10)vvbirthdayvvsetw(10)vvtellvvsetw(10)vvadressvvsetw(10)vvQQvvendl;coutvv"修改成功!"vvendl;}代码解释:原理用法与删除,添加相同。3•程序调试及问题解决语法错误,主要是当输入错误数据时,我设置输出error,但输出后出现死循环,既一直输出error,都来加入break后就正常输出了。在输出数据是不能对齐。主函数之前循环语句只能循环六次,后来重新修改for循环的条件,正常输出了4.源代码#include<iostream>#include<fstream>#include<string>#include<iomanip>usingnamespacestd;/*相关类实现*/classstudent{public:voidtianjia();//添加voidchaxun();//查询voidxiugai();//修改voidshanchu();//删除voidxianshi();//显示private:stringid;stringname;stringgrade;intssex;stringbirthday;stringtell;stringQQ;stringadress;};voidstudent::tianjia()//添加新学生信息{system("cls");//清屏stringsex;cout<<"添加联系人:\n";cout<<"\n";inti;AA:for(i=l;i<=l;i++){cout<<"学号:";cin>>id;cout<<endl;cout<<"姓名:";cin>>name;cout<<endl;cout<〈"专业年级:";cin>>grade;cout<<endl;cout<<"性别(1.男/2.女):";cin>>ssex;cout<<endl;cout<〈"生日:";cin>>birthday;cout<<endl;cout<<"联系电话:";cin>>tell;cout<<endl;cout<<"家庭住址:";cin>>adress;cout<<endl;cout<<"QQ;";cin>>QQ;cout<<endl;if(ssex==1){sex="男";}elseif(ssex==2){sex=女;}else{cout<<"输入有错,请重输"<<endl;gotoAA;}ofstreamo1("xuesheng.txt",ios::app);//写入if(!o1)cout<〈〃不能打开所需文件,系统出错〃;return;ol<<setw(10)<<id<<setw(10)<<name<<setw(10)<<grade<<setw(10)<<sex<<setw(10)<<birthday<<setw(10)<<tell<<setw(10)<<adress<<setw(10)<<QQ<<endl;cout<<〃存储完成〃<<endl;cout<<〃是否继续添加?(y/n)〃<<endl;charch;BB:cin>>ch;if(ch!='y'&&ch!='n'){cout<<〃指令有错,请重输:〃<<endl;gotoBB;}elseif(ch=='y'){gotoAA;}if(ch=='n'){break;}}}voidstudent::chaxun()//查询学生信息{system(〃cls〃);students11;stringname2,id2,sex;intm;boola二false;cout<<〃查询:1.按学号查询;2.按姓名查询。\n〃;cin>>m;ifstreamf2(〃xuesheng.txt〃,ios_base::in);if(m==1){cout<<〃输入要查询学号:\n";cin>>id2;cout<<endl;while(f2.eof()==0)//读到文件末尾,eof()有数据返回0;{f2>>sll.id>>>>sll.grade>>sex>>sll.birthday>>sll.tell>>sll.adress>>sll.QQ;if(sll.id二二id2){cout<<"学号:"<<sll.id<<endl<〈"姓名:"<<<<endl<<"专业年级:"<<sll.grade<<endl<<"性别:"<<sex<<endl<<"生日:"<<sll.birthday<<endl<<"联系电话 :"<<sll.tell<<endl<<" 家 庭 住址:"<<sll.adress<<endl<<"QQ:"<<sll.QQ<<endl;a二true;break;}}if(a二二false){cout<<"没有您想要查询的信息..."<<endl;}f2.close();}elseif(m==2){cout<<"输入要查询姓名:\n";cin>>name2;cout<<endl;while(f2.eof()==0){f2>>sll.id>>>>sll.grade>>sex>>sll.birthday>>sll.tell>>s11.adress>>sll.QQ;if(==name2){cout<<"学号:"<<s11.id<<endl<〈"姓名:"<<<<endl<<"专业年级:"<<s11.grade<<endl<<"性别:"<<sex<<endl<<"生日:"<<s11.birthday<<endl<<"联系电话 :"<<s11.tell<<endl<<" 家 庭 住址:"<<s11.adress<<endl<<"QQ:"<<s11.QQ<<endl;a二true;break;}if(a二二false){cout<〈"没有您想要查询的信息..."<<endl;f2.close();}}voidstudent::xiugai()//修改学生信息{system("cls");ifstreamout("xuesheng.txt",ios_base::in);//读xuesheng文件中的信息ofstreamin("meijie.txt",ios_base::out);//写入cookie文件if(!out||!in)//找不到xuesheng或者cookie报错{cout<<endl<<"对不起!找不到文件!"<<endl;return;}stringsign;cout<<endl<<"请输入你要修改的联系人的姓名或学号:〃;cin>>sign;boolflag=false;stringstr;while(out>>name>>id)//读出每条数据前两个信息:学号和姓名{getline(out,str);//读出剩余的信息,遇到换行符结束if((sign二二name)||(sign二二id)){cout<<endl<<"你想修改的联系人:"<<endl;cout<<setiosflags(ios::left)<<setw(10)<<name<<""<<id<<str<<endl;flag=true;break;}in<<setiosflags(ios::left)<<setw(10)<<name<<""<<id<<str<<endl;//修改信心前面的信息写入cookie}if(!flag){cout<<endl<<"对不起!联系人中没有相关信息!"<<endl;}else{while(getline(out,str))//将想修改信息后面的信息写入cookie{in<<str<<endl;}out.close();in.close();ifstreamout2("meijie.txt",ios::in);//读cookieofstreamin2("xuesheng.txt",ios::out);//写入xueshengif(!out2||!in2){cout<<endl<<"对不起不能打开文件!"<<endl;return;}while(getline(out2,str))//读出cookie内容{in2<<str<<endl;//写入cookie}in2.close();out2.close();cout<〈"重新输入信息:\n";inti;stringsex;CC:for(i=l;i<=l;i++){cout<<"学号:";cin>>id;cout<<endl;cout<<"姓名:";cin>>name;cout<<endl;cout<〈"专业年级:";cin>>grade;cout<<endl;cout<<"性别(1.男/2.女):";cin>>ssex;cout<<endl;cout<〈"生日:";cin>>birthday;cout<<endl;cout<<"联系电话:";cin>>tell;cout<<endl;cout<<"家庭住址:";cin>>adress;cout<<endl;cout<<"QQ;";cin>>QQ;cout<<endl;if(ssex==1){sex="男";}elseif(ssex==2){sex=女;}else{cout<〈"输入有错,请重输";gotoCC;}ofstreamo1("xuesheng.txt",ios::app);//写入if(!o1)cout<〈〃不能打开所需文件,系统出错〃;return;ol<<setw(10)<<id<<setw(10)<<name<<setw(10)<<grade<<setw(10)<<sex<<setw(10)//将修改后的信息写入xuesheng<<birthday<<setw(10)<<tell<<setw(10)<<adress<<setw(10)<<QQ<<endl;cout<<〃修改成功!〃<<endl;}}}voidstudent::shanchu()//删除学生信息{system("cls");ifstreamout3("xuesheng.txt",ios::in);//读ofstreamin3("meijie.txt",ios::out);//写if(!out3||!in3){cout<<endl<<"对不起!找不到文件!"<<endl;return;}stringsign;cout<<endl<<"你要删除联系人的姓名或学号:〃;cin>>sign;boolflag=false;stringstr;while(out3>>name>>id){getline(out3,str);if((sign二二name)||(sign二二id)){cout<<endl<<〃你想删除的联系人:〃<<endl;cout<<setiosflags(ios::left)<<setw(10)<<name<<〃〃<<id<<str<<endl;flag=true;break;}in3<<setw(10)<<name<<〃〃<<id<<str<<endl;}if(!flag){cout<<end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论