C程序设计大作业含源代码_第1页
C程序设计大作业含源代码_第2页
C程序设计大作业含源代码_第3页
C程序设计大作业含源代码_第4页
C程序设计大作业含源代码_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、21面 向 对 象 程 序 设 计 大 作 业姓名:叶尔凯西学院(系):计科系班级:计科系07-1班学号:027设计本程序的目的:关于一些并不太复杂的集体来说,一般需要管理集体中的每个人的基本信息的,本程序专门为一些在校学生的基本信息的管理而设计的,主要目的是通过本程序来实现简单的记录和 查找学生的基本信息;本程序是通过面向对象的最重要的特点“类”来设计岀来的,其功能是实现简单的学生基 本信息管理。包括一些要求用户从键盘输入(记录)学生的基本信息、输出学生的基本信息和用 学生的学号来查找学生信息表屮的某个学生的基本信息等功能;程序功能的详细介绍:本人设计程序时考虑到的很所内容,其屮输入输出学生

2、的基本信息是最基本的功能。下面来给大家介绍程序的核心类的构建:在程序中共建立了两种类,分别是 person类和student 类。person作为student 类的基类,其内部是如下设计的:class personpublic:void S etPeisonAddiessfcharAddressFiom M ah);void S etP eisonS exfchar5 exFiom M ah);void ShowPersonSexO;void ShowPersonAddrcss0;private :charAddrcss25;charS ex|2;;可以看到,在上面分别声明了四个成员函数和两

3、个数据成员。四个成员函数的作用是对私有数据成员进行访问(包括输入和输出)。所以当建立了一个peison类之后 就可以通过它的对象来访问该类的数据成员。下面分别说明每一个成员函数的具体定义:(1)设置(输入)人地址的成员函数:void person :S etP eisonAddiess fcharddiessFiom M ah)strcpy(Address,AddiessFiom M ah);通过strcpy 把字符指针的内容送入peison类中的数据成员 Address o(2)设置(输入)人性别的成员函数:void person:SetPexsonSexfchar5exFium M ah)

4、strcpy(Sex,SexFiom M ah);通过strcpy 把字符指针SexFxom M ain的内容作为地址的存储单元中的内 容送入peison类中Sex数据成员。(3)输出地址成员函数:void person :S how P eisonA ddiess 0coutA ddxessendl;输出peison类屮的Address数据成员的内容;(4)输出性别的成员函数:void person :S how P eisonS exOcoutS exendl;输出person类屮的Sex数据成员的内容;接下来就是peison基类的派生类student类的内部设计如下:class stud

5、ent: public peisonpublic:void S etS tudenthfcrni a tonam eFium M ah,char tidentA ddiessFiom M a in,char检 tiidentS exFiom M a in,charJS tudeniN um beiFiom M ah, iit *scoxe); voidShow S tudentihforni atbn 0;&iend void FindS UidentN um ber(student*data);friend void FindS UidenlN am e (student*data);pri

6、vate :intM athR esuitEnglishR esult,C R esultC om pUatbnLanguageR esulD itaLogrR esuUM axksism R esuIt;charS tudenlN um ber|25;charN am e 25;floatA veiage;int total;当设计student派生类的时候,最主要的特点就是利用了“类”的一个特点继承。所以说派生出来的student类也具有基类person的一些特点。在继承的方式上本人使用了 共有继承方式(publr ),下面来给大家介绍student类的内部构造: 成员函数共有设置(输入)

7、学生信息、输出学生信息等两个。还有一个非成员函数的 一个函数,它为该student类的友元函数,其功能是实现查找。除此之外还有从基类 peison类继承下来的一些成员函数; 数据成员分别为整形变量的学生成绩(包括数学成绩、英语成绩、C+成绩、汇编语言成绩、数字逻辑成绩、马克思哲学成绩等),字符数组的学生学号和学生姓名以及整型变量的学生的总分和单精度变量的平均分;下面介绍student派生类中的各个成员函数的定义部分:设置(输入)学生信息的成员函数:Voidstudent:S etS tLidentihfoim atbnam eFxom M ah,charl tiidentAddiessFiom

8、 M ah,chai* S UidentS exFiom M a in,char 粘 tudeniN um beiFiom M ah, ht*scorc)strcpy (N am e,N am eFiom M ah);S etP ersonAddiess (S tudentAddrcssFiom M ah);S etP eiBonS ex(S tudentS exFiom M ah);strcpy (S tudeniN um ber ,S tudeniN um beiFxom M ah);for (in tU0;K6;汁+)sw itch Qcase 0 :M athR esuUFscorc

9、0上case 1:EnglishR esultFscoie 1;case 2 :C R esuttFscoie 2;case 3 :C om pUatbnLanguageR esute=score 3;case 4 :D itaLogicR esultFscorc 上case 5 :M aiksism R esuhFscorc 5;athR esutt+EnglishR esulb-C R esuit+C om pilaWnLanguageR esuH+D 运itaLogicR esuit+M aiksism R esult;A veiage=total/6.0;可以看到在设计student类

10、的输入成员函数时其内部同时调用了从基类继承下来的一些成 员函数,这就是继承的特点。下面将会详细地介绍该成员函数的功能:首先是student类的两个字符数组变量学生姓名和学生学号的赋值通过stapy來直接实现,也就是可通过该类的成员函数来给数据成员赋值。还有两个数据成员是不能够被继承下来的基类的两个字符数组学生性别和家庭地址,它们是通过student派生类的成员函数中调用从基类peison屮继承下来的成员函数,从而改变对不能被继承下来的基类的数据成员赋 值。接着就是对student类屮自己的数据成员学生成绩的赋值,它们是通过一个简单的switch case语句来实现的。输出学生信息的成员函数:v

11、oid student:Show S tLidenthfoim atbn 0cout(endl;coutz/学生的基本信息如下:endKendl;cou学生的姓名:N am eendKendl;cout/ 学生的学号为:S tudentNum berendKendl;couKz/学生的家庭地址为:;S how P ersonA ddiess 0;couKendl;cou学生的性别为:;ShowPersonSexO;couKendl;cou学生的考试课程成绩如下:endKendl;学生的离散数学课程成绩为:XM athR esulK分/zendKendl;cou学生的英语课程成绩为 :Engli

12、shR esulK分endKendl;cout(z/ 学生的 C+ +课程成绩为:CResute(”分 endKendl;cout(z/学生的 汇编语 言课程 成绩为:*C om pilatbnLanguageR esult 分 endKendl;cout,z 学生的数字逻辑课程成绩为:XD igitalLogicR esulK“ 分 z/endKendl;couKz/学生的马克思主义哲学课程成绩为:M aiksism R esutK分,zendKendl;cout(,z 学生的总分为: totaK分 endKendl;coutz/ 学生的平均分为: A veiagez/ 分/zendKend

13、l;输出学生信息的成员函数的定义中不难发现输出时不仅会输岀student派生类自己的数据成员的值还会同时输出不能被继承下来的基类person中的数据成员的值。这显然只能通过继承下來的成员函数來实现(如ShowPersonAddrcss ()和ShowPersonSex ()。下面来介绍三个非成员函数,其中两个为student类的友元函数。它就是实现查找功能 的(分别用学生学号和学生姓名来进行查找),另一个是一个单独的普通函数。其功能是当程序运行时保持一个用户界面的功能。S tudent 类共有两个友元函数,分别是 friend void FindS tudentN um ber(student

14、杞ata)和 friend void FhdS tidentN am e fctudentata),它们两个都有查找功能,只是一个用学生的学号另一个用学生的姓名进行查找。下面详细介绍student类的两个友元函数中的用学号查找的函数是如何的定义:void FhdS tudenlN um berfctudent*data)charfednum 25;coutfridnum ;int 匚0;ford;iStuNum ;汁 + )if(strcm p data E0.S tidentN um bei;fhdnum )二二0)couK在第汁1个编号里有您查找的记录:endl;date fl.S how

15、 S tudenthfoim atbnO;if($trcm p (data i.S tudenlN um bei;fednum )0)couKz/在编号汁1里没有您查找的记录!rendl;下面详细介绍student类的两个友元函数中的用姓名查找的函数是如何的定义:void FhdS tudeniN am e fctudentata)char fednam e |25;couKfhdnam e;int UO;for(i;iStLiNum ;汁 + )if(strcm p 0ata 2.N am e,fednam e)二二0)couK在第汁1个编号里有您查找的记录:zzendl;data QS h

16、ow S tLidenthfoim atbn 0:if(fctrcm p 0ata i|.Nam e,fhdnam e)0) couKz/在编号汁1里没有您查找的记录!rendl;可以看出student类的两个友元函数即查找(分别用学号和姓名)函数的定义都很相似,主 要是算法是一致。因为在smdent类中数据成员学生姓名和学生学号都是用字符数组来定义的,所以上面的两个分别用学号和姓名来查找的函数的算法是基本一致的,只是一个是用student类的一个对象中里面的name (姓名)去查找,另一个是用student类的一个对象中 里面的 S tudentN um ber (学生姓名)去查找。在整个查

17、找函数先是在函数的参数表中声明 student类的对象指针,在主函数 mail中当调用查找函数时把mail函数中定义的student类的数组的首地址传送给查找函数。在查找函数中先定义一个字符数组,再提示用户输入要查找的学生的姓名或学号,当姓名或学号在相应的学生编号里的相应的name (姓名)和SUidenlNumber (学生学号)相等时查找便成功并提示用户该学号或姓名为基本信息的学生 信息输出在屏幕上,当不相等时查找不成功并提示用户没有找到学生的记录。下面介绍非成员函数即普通函数(程序运行时保持一个用户界面功能的函数) void pahtOtit i;fer (i= 0;K80 ;汁+) p

18、uteharf% );学生信息管理系统endl;coutendl; cout,z(l) cout(endl; cout cout(endl; cout/z(0) coutz/ 信息再输出!输入学生的信息输出学生信息退出程序endl;endl;(3)用学号查找学生基本信息endl;用姓名查找学生基本信息/zendl;备注:如果您还没有输入任何信息,请先输入coutendl;for (i二 0;K80;汁+) puteharf% ); coutendl;上面的普通函数只是一个简单的函数,其功能只是在屏幕上保持如下一个画面:学生信息管理系统%(1)输入学生的信息(3)用学号查找学生基本信息输出学生信

19、息)用姓名查找学生基本信息(0)退出程序备注:如果您还没有输入任何信息,请先输入信息再输出!%接着给大家介绍主函数 m ah的定义部分:void m ah 0的基本信息:endl;charS tuSex|2,S UiN am e 25 ,S UiAddxess|251S UiNum ber|25; intS tuS coie 6,Ctrl;tit i=0,jslide nt stu S tuN um ;pah tO;cout/z请选择一个序号 ctrl;while (ctrl = 0)sw itch fctrl)case 1:ferd; KStuNum ;汁+ )system (cis。;co

20、uK/z请输入第汁1个学 endl;couKS tuN am e ;coutendl;couKS tuS ex;coutS tuN um ber;coutendl;couKS tuAddiess;coutendl;couK请按顺序输入学生的考试成绩 coutendl;couKS taS core 0上coutendl;couKS tuS coie Q.;coutS tuS core 吃;coutendl;couKS tuS core 3;coutendl;couKS tiS core 4;coutS 1uS core 伍;coutendKendl;stu KS etS tudentihfoim

21、 ation G tuN am e,S tuAddxess,S tuS ex,S tuN um bei;S tuS com); bieak;case 2 :coutendl;system CclsO;fcr(j=O ; jCS tuN um ; j*-+)sUi |j.S how S tudenthfoim ation 0;system (pause);bieak;case 3 :coutendl;system (cis。;FindS UidentNum berfctu);system (pause。;break;case 4 :cout(endl;system (cis。;FindS tud

22、entNam e (stu);system (pause);break;if (ctrl = 5)system (cis。;pah tO;cout(z/请选择一个序号 ctrl;mah主函数的实现比较长,主要是因为在mail函数屮不仅仅定义了普通变量(基 本变量)用来暂时存放从键盘输入的学生基本信息,还定义了 student类的对象数组,且使用了 while 循环和sw itch case 语句来不停地进行选择,case的每一个分句分别实现不同的功能,case 1主要实现输入,用 for循环来把student对象数组的每一个对象本别进行 赋值;case 2 主要实现输出功能,输岀时用 for循

23、环调用每一个 student数组对象的 ShowS tudentlrifoini a ton 0函数(输出学生信息的成员函数);case 3和case 4主要就是实现查找 功能,只是因为查找函数不是student类的成员函数,所以可以直接调用函数,在实参表里写了 student对象数组的首地址,把student对象数组的首地址传递给查找函数;程序源代码:#hclide#hchdeusing nam espace std;const htS tuN um =1;class peisonpublic:void S etP ersonAddrcss fchar d die s sF 10m M a

24、in);void S etP eisonS exfchar*S exFxom M ah);void ShowPeisonS exO;void ShowP eisonAddiess 0;private :charAddress25;charS ex2;void peison :S etP ersonAddrcss fcharddiessFiom M ah)strcpy (Addrcss,AddiessFiom M ah);void peison :S etP ersonS exfcharexFiom M ah)strcpy(Sex,SexFiom M ah);void peison :ShowP

25、 ersonAddress 0coutA ddrcssendl;void peison :ShowP ersonS exOcoutS exendl;class student: public peisonpublic:voidS etS tLidentihfcim atbn fchar粮 am eFiom M ah,char *S UidentA ddiessFxom M ah,charts tudentS exFxom M a in,char祐 UidentN um bexFiom M ah, int*scoxe);void ShowS tudenthfoim atbn 0;friend v

26、oid F hdS tudenlN um berfetudenfriend void F hdS tudeniN am e (3 tilde nt *data);private :iitM athR esultEnglishR esultC R esuitC om pflationLanguageR esultD jgiiaLogrR esuH;Maiksism R esuIt;charS indentum ber25;charN am e 25;float Average;httotal;voidstudent:S etS tudentihfoim atbn fchar粗 am eFiom

27、M ah,char检 UidentA ddiessFiom M ah,chai* S indents exFxom M ah,char *S UidenlN um bexFiom M ah, irit *scoxe)strcpy(Nam e,Nam eFiom M ah);S etPeisonAddiess (S tudentAddrcssFiom M ah);SetPeisonSex(SiudeniSexFxom M ah);strcpy (S UidenlN um ber ,S tudentNum berFiom M ah);for(h t#0;K6 ;汁+)sw itch (i)case

28、 0 :M athR esultFscoie。上case 1:EnglishR esuhFscorc 1;case 2 :C R esultFscoie |2;case 3 :C om pilatbnLanguageR esuh=score |3;case 4 :D igitaLogicR esultFscoxe 4;case 5 :M axksism R esultFscoie |5;fotaUM athR esuit+EnglishR esulf+C R esult+C om pilat bnLanguageR esuH+D itaLogrR esuH+M axksism R esutt;

29、A veragetotal/fe.O;void stiident:Show S Uidenthfoim atbn 0coutendl;cout学生的基本信息如下:z/endKendl;cout/z 学生的姓名:N am eendKendl;cout/ 学生的学号为:S tudenlNum berendKendl;coutz/学生的家庭地址为:“;ShowP ersonAddxess 0; coutendl;cou*学生的性别为:; ShowPersonSexQ; coutendl;couK”学生的考试课程成绩如下:endKendl;学生的离散数学课程成绩为:coutM athR esulK“

30、分z/endKendl;couKV学生的英语课程成绩为:EnglishR esult/分endKendl;cout学生的C+课程成绩为:CResuK/z分 endKendl;C om pilatbnLanguageR esulK“cou*学生的汇编语言课程成绩为: 分endKendl;coutC”学生的数字逻辑课程成绩D itaLogicR esultz, 分endKendl;couK/z学生的马克思主义哲学课程成绩为:M axksism R esulK“ 分 endKendl;coutz/ 学生的总分为:tDlaKz,分endKendl;cout/学生的平均分为:Average* 分endK

31、endl;void FhdS tudeniN um berfctudentata)char findnum 25;coutfindnum ;iit fO;for(i;KStiN um ;汁+)iffctrcm p (jdata i.S tudentN um bex;findnum )=0)couKz/在第C汁1个编号里有您查找的记录:,zendl;data |i.Show S ludenthfeini atbn 0;if (stem p (data EO.S tudeniN um ber; findnum )0)在编号汁1里没有您查找的记录!endl;void F hdS tudeniN am

32、 e Glide nt *data)char findnam e 25;couKfindnam e;iit fO;for(i;iSluNum ;汁+)iffctrcm p 0ata i.N am e,findnam e)二二0)couKz/在第C汁1个编号里有您查找的记录:endl;data i.Show S ludenthfoim atbn 0;if(strcm p (data EO.N am e,findnam e)0)找的记cou* 在编号汁1里没有您录!rendl;void pahtO学生信息管理系统/zendl;tit i; cout/zfor(i= 0;K80 ;汁+) putcharf% ); coutendl; cou

温馨提示

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

最新文档

评论

0/150

提交评论