C++程序的多文件组成

【例3.32】 一个源程序按照结构划分为3个文件
// 文件1 student.h (类的声明部分)
#include<iostream.h>
#include<string.h>
class Student {
private:
char *name; // 学生姓名
char *stu_no; // 学生学号
float score; // 学生成绩
public: // 类的外部接口
Student(char *name1,char *stu_no1,float score1); // 构造函数
~Student(); // 析构函数
void modify(float score1); // 数据修改
void show(); // 数据输出
};
// 文件2 student.cpp (类的实现部分)
#include "student.h" // 包含类的声明文件
Student∷Student(char *name1,char *stu_no1,float score1)
{
name=new char[strlen(name1)+1];
strcpy(name,name1);
stu_no=new char[strlen(stu_no1)+1];
strcpy(stu_no,stu_no1);
score=score1;
}
Student∷~Student()
{
delete []name;
delete []stu_no;
}
void Student∷modify(float score1)
{ score=score1; }
void Student∷show()
{
cout<<"\n name: "<<name;
cout<<"\n stu_no: "<<stu_no;
cout<<"\n score: "<<score;
}
// 文件3 studentmain.cpp (类的使用部分)
#include "student.h" // 包含类的声明文件
void main()
{
Student stu1("Liming","990201",90);
stu1.show();
stu1.modify(88);
stu1.show();
}
【例3.33】 利用类表示一个堆栈(stack),并为此堆栈建立push()、 pop()及显示堆栈内容的showstack()等函数
//文件1 stack.h
#include <iostream.h>
#include <iomanip.h>
#include <ctype.h>
const int SIZE=10;
class stack{
int stck[SIZE]; // 数组,用于存放栈中数据
int tos; // 栈顶位置(数组下标)
public:
stack();
void push(int ch); // 将数据ch压入栈
int pop(); // 将栈顶数据弹出栈
void ShowStack();
};
// 文件2 stack.cpp
#include <iostream.h>
#include "stack.h"
stack∷stack() // 构造函数,初始化栈
{ tos= 0; }
void stack∷push(int ch)
{
if(tos==SIZE){
cout<<"Stack is full";
return;
}
stck[tos]=ch;
tos++;
cout<<"You have pushed a data into the stack!\n";
}
int stack∷pop()
{
if (tos==0){
cout<<"Stack is empty";
return 0;
}
tos--;
return stck[tos];
}
void stack∷ShowStack()
{
cout<<"\n The content of stack: \n" ;
if (tos==0){
cout<<"\nThe stack has no data!\n";
return;
}
for (int i=tos-1; i>=0;i--)
cout<<stck[i]<<" ";
cout<<"\n\n";
}
//文件3 stackmain.cpp
#include <iostream.h>
#include "stack.h"
main()
{
cout<<endl;
stack ss;
int x;
char ch;
cout<<" <I> ------ Push data to stack\n";
cout<<" <O> ------ Pop data from stack\n";
cout<<" <S> ------ Show the content of stack\n";
cout<<" <Q> ------ Quit... \n";
while (1){
cout<<"Please select an item: ";
cin>>ch;
ch=toupper(ch);
switch(ch){
case 'I':
cout<<"\n Enter the value that "<<"you want to push: ";
cin >>x;
ss.push(x);
break;
case 'O':
x=ss.pop();
cout<<"\n Pop "<<x<<" from stack.\n"; break;
case 'S':
ss.ShowStack();
break;
case 'Q':
return 0;
default:
cout<<"\n You have inputted a wrong item! Please try again!\n";
continue;
}
}
}

C++程序的多文件组成的更多相关文章

  1. [转]MSI安装程序中的文件替换

    原文链接:http://teach.hanzify.org/article/652-1233562028.html 前言 最近有汉化朋友问起如何不重新制作MSI文件,而直接用汉化好的文件替换MSI安装 ...

  2. 使用GDB 追踪依赖poco的so程序,core dump文件分析.

    前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...

  3. 安装程序无法复制文件 convlog.exe的解决方法

    在安装的时候出现一个错误提示“安装程序无法复制文件CONVLOG.EX_”,上网找了很多资料,都说是因为版本问题,考虑到自己的服务器安装的是2003 SP1,后来打了补丁到SP2的,也就认为是版本问题 ...

  4. VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)

    VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)-软件开发-鸡啄米 http://www.jizhuomi.com/software/143.html   鸡啄米在上一讲中 ...

  5. 将Java程序作成exe文件的几种方法【转载】

    看到网上有同志的介绍将Java程序作成exe文件的方法,写的不错,但是也许是这篇文章完成的时间比较早,许多内容已经不合适了.我在这里补充几条: 一.exe4j 说明:exe4j可以将Jar文件制作成e ...

  6. PHP程序缓存之文件缓存处理方式

    PHP程序缓存之文件缓存处理方式在开发程序过程中,缓存的设置大大提升程序效率,减小数据库负载.基本配置缓存和常规配置缓存 基本配置缓存在项目开发中类似这样子的格式: 文件:config.php $CF ...

  7. 程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。

    用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #inclu ...

  8. 微信小程序-02-项目文件之间配合和调用关系

    微信小程序-02-项目文件之间配合和调用关系 我就不说那么多了,我是从官方文档拷贝的,然后加上一些自己的笔记,不喜勿喷 官方文档:https://developers.weixin.qq.com/mi ...

  9. ArcGIS 10 安装程序及破解文件

    1.下载 ArcGIS 10 安装程序及破解文件 后面提供电驴的下载地址(可以使用迅雷.QQ旋风等下载工具下载),下载文件是一个光盘镜像文件:‍ArcGIS_Desktop10_122519.iso. ...

  10. IIS安装出现“安装程序无法复制文件CONVLOG.EX_”的解决办法

    重新安装了一次IIS,结果就在重新安装的时候,出现安装程序无法复制文件CONVLOG.EX_,上网找了找资料,是因为secedit.sdb 数据库的问题,既然是因为这个文件的问题,那么我们就可以使用w ...

随机推荐

  1. DM中将有缝隙的面体缝合为实体

    原版视频下载地址链接: https://pan.baidu.com/s/1mi0NOeO 密码: nw7g

  2. 设计模式-Iterator

    本文参(chao)考(xi)<图解设计模式> 结城浩 (作者) 杨文轩 (译者) 1.Iterator 模式 迭代器作用于集合,是用来遍历集合元素的对象. 迭代器模式提供一种方法顺序访问一 ...

  3. 安卓开发实战之app之版本更新升级(DownloadManager和http下载)完整实现

    转载: https://blog.csdn.net/u013278099/article/details/52692008 前言 本文将讲解app的升级与更新.一般而言用户使用App的时候升级提醒有两 ...

  4. mysql数据库出现无法登录(ERROR 1045 ),预防和解决及系列问题解决方法。

      一 .当在windows下使用mysql数据库时,出现无法登录的现象,需要修改mysql数据库的roo密码时,我们可以使用一下两种方法. 1. (1)关闭mysql服务.然后在bin目录下使用cm ...

  5. C前序遍历二叉树Morris Traversal算法

    首先来递归算法,简单易懂: #include <stdio.h> #include <stdlib.h> #include <stdbool.h> typedef ...

  6. DNGuard HVM Unpacker(3.71 trial support and x64 fixed)

    DNGuard HVM Unpacker(3.71 trial support and x64 fixed) Gr8 news. Finally got the x64 crash fixed. DN ...

  7. Mysql修改数据文件默认目录datadir

    1.停止服务 service mysql stop service mysqld stopmysqladmin -uroot shutdown -p 2.创建目录 cd /data mkdir mys ...

  8. 000 vue各种基本指令

    一:vue实例 1.实例 新建项目: 2.程序 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  9. tomcat NIOEndpoint中的Acceptor实现

    EndPoint的组件就是属于连接器Connector里面的.它是一个通信的端点,就是负责对外实现TCP/IP协议.EndPoint是个接口,它的具体实现类就是AbstractEndpoint,而Ab ...

  10. axios和drf结合的增删改查

    增删改查 查: 前端实例: mounted() { //获取所有数据 // var Base_url = 'http://paas.bktst.sh.sgcc.com.cn/t/files-check ...