【C++】C++自学旅程(10):巨有成就感!:C++类类型结合运用实战

  今天晚上花了好长好长的时间啊,终于把一个程序编完了。

  这是一个录入学生信息的小程序,写了Student、Date两个class,Date嵌套在Student里面,实战演练类类型,第一次用“针对对象编程”编了一个工程量相对算大的程序,还把他们分成了一个工程中的几个文件。巨有成就感!

 1 //main.cpp
 2 //主程序
 3 #include"fram.h"
 4 using namespace std;
 5
 6 int main()
 7 {
 8     Student *p[5];
 9     int i=0,j,n;
10     int choice;
11     for(n=0;n<5;n++) p[n]=0;
12     cout << "----Student Register Editor----" << endl<<"1.录入\t2.输出\t3.重置\t4.退出程序"<<endl<<endl;
13     start:for(;i<5;)
14     {
15         cout<<"请输入指令序号:";
16         lop: cin>>choice;
17         switch (choice)
18         {
19         case 1:
20             p[i]=new Student;
21             p[i]->input();
22             i++;
23             break;
24         case 2:
25             if(p[0]==0)
26             {
27                 cout<<"请先录入信息,录入后才能输出"<<endl<<endl;
28                 continue;
29             }
30             cout<<"----------输出结果----------"<<endl;
31             for(j=0;j<i;j++)
32             p[j]->output();
33             cout<<"----------输出完毕----------"<<endl<<endl;
34             break;
35         case 3:
36             cout<<"----------启动重置----------"<<endl;
37             if (p[0]!=0)
38             {
39                 for(j=0;j<i;j++)
40                 {
41                     delete p[j];
42                     cout<<"删除空间"<<j+1<<endl;
43                 }
44
45             }
46             else cout<<"\t重置中......"<<endl;
47             cout<<"----------重置完成----------"<<endl<<endl;
48             goto start;
49         case 4:
50             return 0;
51         default:
52             cout<<"输入格式错误,请重新输入:";
53             goto lop;
54         }
55     }
56 }
 1 //Student.cpp
 2 //学生的相关函数
 3 #include"fram.h"
 4 using namespace std;
 5 Student::Student()
 6 {
 7     num=grade=0;
 8 }
 9
10 int Student::input()
11 {
12     //姓名 学号 成绩 出生日期 年龄
13     cout<<"----------学生信息输入----------"<<endl;
14     cout<<"请输入姓名:";
15     cin>>name;
16     cout<<"请输入学号:";
17     cin>>num;
18     cout<<"请输入成绩:";
19     cin>>grade;
20     cout<<"请输入出生日期:";
21     bday.input();
22     age=Tyear-bday.gyear();
23     cout<<"----------输入完毕!----------"<<endl<<endl;
24
25 }
26 int Student::output()
27 {
28     cout<<"学生姓名:"<<name<<endl;
29     cout<<"学号:    "<<num<<endl;
30     cout<<"成绩:    "<<grade<<endl;
31     cout<<"出生日期:";
32     bday.output();
33     cout<<"年龄:    "<<age<<endl;
34     cout<<endl;
35 }
 1 //Student.h
 2 //定义学生类类型
 3 #ifndef STUDENT_H_INCLUDED
 4 #define STUDENT_H_INCLUDED
 5 #include"fram.h"
 6 class Student
 7 {
 8 public:
 9     //姓名 学号 成绩 出生日期 年龄
10     Student();
11     int input();
12     int output();
13
14 private:
15     float grade;
16     int age,num;
17     Date bday;
18     char name[20];
19 };
20 #endif // STUDENT_H_INCLUDED
 1 //Date.cpp
 2 //有关日期的一些函数
 3 #include"fram.h"
 4 using namespace std;
 5 Date::Date()
 6 {
 7     year=month=day=0;
 8 }
 9 int Date::input()
10 {
11     cin>>year;
12     cin>>month;
13     cin>>day;
14 }
15 int Date::output()
16 {
17     cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
18 }
19 int Date::gyear()
20 {
21     return year;
22 }
23 int Date::gmonth()
24 {
25     return month;
26 }
27 int Date::gday()
28 {
29     return day;
30 }
 1 //Date.h
 2 //定义日期类类型
 3 #ifndef DATE_H_INCLUDED
 4 #define DATE_H_INCLUDED
 5 #include"fram.h"
 6 class Date
 7 {
 8 public:
 9     Date();
10     int input();
11     int gyear(),gmonth(),gday();
12     int output();
13 private:
14     int year,month,day;
15 };
16
17 #endif // DATE_H_INCLUDED
 1 //fram.h
 2 //嫌麻烦干脆把所有要用的框架放到一起来
 3 #ifndef FRAM_H_INCLUDED
 4 #define FRAM_H_INCLUDED
 5 #include<iostream>
 6 #include<string>
 7 #include"Date.h"
 8 #include"Student.h"
 9 #define Tyear 2015
10
11
12 #endif // FRAM_H_INCLUDED

  通过这次实战演练,我学会了:

  1、一个程序多个文件

  2、用类类型写程序,切实感觉到后期更改起来非常的容易,程序像是许多个框架嵌套组合而成

  3、用了构造函数

  4、熟练了类类型的语法规则

  5、复习了很多语法的用法,例如for if...else语句等等

  该休息了……

  ~完~

时间: 2024-12-18 03:02:20

【C++】C++自学旅程(10):巨有成就感!:C++类类型结合运用实战的相关文章

【C++】C++自学旅程(7):类类型初识——类的定义

新年第一博,新年快乐! 一直不明白面对对象的“对象”是什么意思,想象不出:在学OC时出现了奇怪的语法,让程序“自己”运行:EDA的沙龙中提到了类类型,但不知道这是个什么鬼.终于这些问题的谜底要被我自己自学揭开了,哈哈哈!类类型我来啦! 类(Class)是一种自定义数据类型,是具有相同属性和行为的一组对象的集合,它是面向对象中最为重要的概念之一.类类型中有变量来存储属性和数据,叫做成员变量或数据成员,还有操作这些数据的函数,叫做成员函数. 类类型的作用: 实现封装 数据隐藏 继承和派生多态 ……

oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)

一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类型的数据:1.如果是整型,那么mysql中,用int即可:2.如果是带小数位的,那么mysql中可用numeric类型. 注:mysql中没有varchar2(10)和number这两个数据类型 二. Mysql varchar VS Oracle varchar2 mysql和oracle做数据同

建议10:必须知道如何实现类比较器 接口实现对象排序

建议10:必须知道如何实现类比较器 所谓的比较器就只是一个接口,也只需要实现一个方法(public int CompareTo(object obj)).实现了比较器有什么用呢?除了顾名思义的可以比较两个实例的大小.还可以用来排序(比如是List集合,就直接调用.Sort()方法就可以 了.方便至极.定义Salay class: public class Salary : IComparable<Salary> { public int RMB { get; set; } public int

oracle转Mysql中,varchar2(10)和number应该转换为什么类型?

一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类型的数据:1.如果是整型,那么mysql中,用int即可:2.如果是带小数位的,那么mysql中可用numeric类型. 注:mysql中没有varchar2(10)和number这两个数据类型 二. Mysql varchar VS Oracle varchar2 mysql和oracle做数据同

【C++】C++自学旅程(1):新认识的朋友,C的升级版

下学期学校会开课,但机智的我决定还是先自己学习.从图书馆借了两本C++的书,一本是Bjarne Stroustrup的<C++程序设计语言>,一本是清华大学出版社的田秀霞主编的<C++高级程序设计>.本想自学参考前者,大一没什么基础,简直看不懂,无奈放弃,选择了薄了很多的.很有可能是我们的教材的后者.嗯~就这样吧.正式开始学了. 我是有C语言基础的,上学期学完了同系列书的<C程序设计快速进阶大学教程>,也算是粗略的了解了C语言.而C++是对C语言的发展和补充,是“带类的

HTML5自学笔记[ 10 ]简单的购物车拖拽

用html5拖拽功能实现了一个简单的购物车,样式简陋,得学学画画提高下审美了T^T: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>购物车拖拽</title> 6 7 <style> 8 *{ margin:0; padding:0;} 9 #proList{ overflow:hidden;} 10 #pro

【C++】C++自学旅程(5):指针和引用

学C语言的时候,指针一直是一个让人头大的东西,懂,但是不会用,还好现在慢慢会了,还好C++的指针还是跟C基本相同,还好如此我就只用记一些不同的东西了:) 一.无名变量(动态变量) 可以用new来创建一个无名变量,这种变量没有标识符,如: int *p = new int; 可以在动态创建的同时指定初始化列表,如: double *pdouble; pdouble = new double(26.7); 之后这个变量就通过指针来间接访问,如: cin>>*p; cout<<*p; i

DayDayUP_Python自学记录[10]_迭代

什么是迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过 for - in 来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码: for (i=0; i<list.length; i++) { n = list[i]; } 可以看出,Python的for循环抽象程度要高于Java的for循环. 因为 Python 的 for循

【C++】C++自学旅程(4):数组与字符数组

数组方面基本与C相同.需要注意几个点如下: 一.多维数组 除了一维数组.二维数组,当然还可以实现多维数组(n维都可以),定义和使用方式类比二维数组.多维数组其实就是很多个一维数组的嵌套,数组里面有数组. 二.字符数组 字符数组就是数组元素为字符的数组,但其值得一提的是可以作为字符串使用.C++仍然没有字符串变量,实际上,string并不是C++语言本身具有的基本类型,它是在C++标准库中声明的一个字符串类,用这种类可以定义对象.每一个字符串变量都是string类的一个对象. 一个中文字占2B.