今天在网上学习的时候看到了一个不错的关于类的学习样例,经过本人一些修改,和大家分享一下。
/*钟表类的设计:学习样例来自网络,侵删*/
#include<cstdio>
#include<windows.h>
using namespace std;
class Clock{
private: //变量或者外部接口禁用的函数用私有
int h,m,s;
void Telltime(){
for(int i=1;i<=7;i++) printf("\007");
} //报时函数,"\007"是转义字符中的响铃
void Set();
public: //外部需要调用的函数用公开
bool Put(int,int,int);
void Time(int);
void Show();
}; //也可以直接在类尾定义对象
void Clock::Set(){ //时间进位和报时判断
if(s>=60) s=0,m++;
if(m>=60) m=0,h++;
if(h>=24) h=0,m=0,s=0;
if(m==0&&s==0) Telltime();
}
bool Clock::Put(int a,int b,int c){
h=a,m=b,s=c; //设置时间并判断合法性
return (a>=0||a<=24)&&(b>=0||b<=60)&&(c>=0&&c<=60);
}
void Clock::Time(int n){ //运行时间并显示
for(int i=1;i<=n;i++){
Set(); s++;
Show(); printf("\r \r");
//"\r"是将光标移动到行首,因为此处要清空字符所以多几个空格
}
}
void Clock::Show(){
Set();
printf("%02d:%02d:%02d",h,m,s);
Sleep(1000); //场宽为2显示更真实,此处是1000毫秒(即1秒)
}
int main(){
Clock bl; //定义类对象
int a,b,c,m;
printf("请输入起始时间(时 分 秒): ");
scanf("%d %d %d",&a,&b,&c); //精髓:C语言输入输出更快
if(!bl.Put(a,b,c)) return puts("输入时间不合法!"),0;
printf("\n"); //判断合法性
while(printf("现在时间 ")){
//printf是有返回布尔值的,输出成功则返回1
bl.Show(); //先显示时间
printf("\n\n请输入想要运行的秒数(停止运行输入-1):");
scanf("%d",&m); system("cls");
if(m!=-1) bl.Time(m); //用对象调用类内函数
else break;
Sleep(1000); system("cls"); //"cls"是清屏的意思
}
puts("本次运行结束!"); //细节输出
system("pause");
return 0;
}
声明:学习样例来自网络,如涉及侵权请联系作者删除。
本文可以转载,但请注明作者及来源侵权问题,谢谢。