C语言基于easyx的打字训练软件。

和同学一起做的程序。
程序运行部分截图:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <graphics.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <mmsystem.h> /* 加载音乐需要的头文件 /
#pragma comment(lib,“winmm.lib”) /
加载音乐需要的库文件 */
HWND hWnd;
int main();

void gotoxy(int x,int y); /光标移动函数/

void welcome_1(); /* 主界面 */

int _register(); /* 用户登录 */

int welcome_2(); /* 第二个界面 */

int chinese(); /* 中文训练(包含评分功能) */

int english(); /* 英文训练 */

int game(); /* 游戏 */

int readexplation(); /* 读软件说明 */

int read_c( int x ); /* 读中文文章 */

int read_e( int x ); /* 读英文文章 */

int random_(); /* 随机训练 */

int read_txt( int x ); /* 读记录 */

int grade_(); /* 分数选择界面 */

int IndividualEnglish(); /* 自定义英文 */

int IndividualChinese(); /* 自定义中文 */

int welcome_3(); /* 自定义选项 */

int welcome_4();

int main()
{
welcome_1(); /* 主函数调用主菜单 */
}

void gotoxy(int x,int y)
{
COORD c;
c.X=x;
c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}

int welcome_4()
{
fflush( stdin ); /* 清空输入缓冲区 /
out:
MOUSEMSG m; /
定义一个鼠标变量 /
/

* cleardevice();
* initgraph(606,412);
/
loadimage( NULL, L"书.jpg" ); /
覆盖上一界面的文字 /
settextstyle( 60, 0, L"方正舒体" ); /
字体大小和样式 /
settextcolor( RGB( 24, 137, 109 ) ); /
字体颜色,可用rgb//248 57 10 /
setbkmode( TRANSPARENT ); /
透明 /
settextstyle( 20, 0, L"" ); /
字体大小和样式 /
outtextxy( 200, 20, L"1.中文自定义训练情况" ); /
定义功能位置 /
outtextxy( 200, 70, L"2.英文自定义训练情况" ); /
定义功能位置 /
outtextxy( 200, 120, L"3.返回上一级" ); /
定义功能位置 /
while ( 1 )
{
/
hWnd=GetHWnd();//让提示窗口居中 /
m = GetMouseMsg(); /
获取鼠标消息 /
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 0 && m.y <= 40 ) /
自定义中文训练情况 /
{
read_txt( 3 ); /
调用read_txt函数读取自定义中文训练记录 /
initgraph( 606, 412 ); /
重新生成窗口 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 50 && m.y <= 90 ) /
自定义英文训练情况 /
{
read_txt( 5 ); /
调用read_txt函数读取自定义中文训练记录 /
initgraph( 606, 412 ); /
重新生成窗口 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 100 && m.y <= 140 ) /
返回上一级 /
{
loadimage( NULL, L"书.jpg" ); /
重新加载书.jpg将文字覆盖 /
return(0); /
结束该函数 */
}
}
_getch();
}

int welcome_3()
{
fflush( stdin ); /* 清空输入缓冲区 /
out:
MOUSEMSG m; /
定义一个鼠标变量 /
/

* cleardevice();
* initgraph(606,412);
/
loadimage( NULL, L"书.jpg" ); /
覆盖上一界面的文字 /
settextstyle( 60, 0, L"方正舒体" ); /
字体大小和样式 /
settextcolor( RGB( 24, 137, 109 ) ); /
字体颜色,可用rgb//248 57 10 /
setbkmode( TRANSPARENT ); /
透明 /
settextstyle( 20, 0, L"" ); /
字体大小和样式 /
outtextxy( 200, 20, L"1.中文自定义" ); /
设置界面功能的位置 /
outtextxy( 200, 70, L"2.英文自定义" ); /
设置界面功能的位置 /
outtextxy( 200, 120, L"3.返回上一级" ); /
设置界面功能的位置 /
while ( 1 )
{
/
hWnd=GetHWnd();//让提示窗口居中 /
m = GetMouseMsg(); /
获取鼠标消息 */
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 0 && m.y <= 40 ) /*选择中文自定义功能 /
{
IndividualChinese(); /
调用自定义中文函数 /
initgraph( 606, 412 ); /
重新生成窗口 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 50 && m.y <= 90 ) /*选择英文自定义 /
{
IndividualEnglish(); /
自定义中文函数 /
initgraph( 606, 412 ); /
重新生成窗口 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 100 && m.y <= 140 ) /
返回上一级 /
{
loadimage( NULL, L"书.jpg" ); /
重新加载书.jpg将文字覆盖 */
return(0);
}
}
_getch();
}

int IndividualChinese() /* 中文自定义训练 /
{
closegraph(); /
关闭图形系统 /
fflush( stdin ); /
清空输入缓冲区 /
SHOWCONSOLE; /
打开控制台 */
system( “cls” );
system( “color 34” );
FILE *fp, fp2; / 定义一个文件指针fp /
char temp1[3000], a;
float Began = 0.0, End = 0.0, time, speed = 0.0, h = 0.0; /
time为时间,speed为速度,h为准确率 /
int i, j, len, len1, number = 0, right = 0, choice, lenth = 0; /
len,len1为字符长度,right为正确个数,number为汉字个数 /
char word[5000];
out2:
memset( word, 0, sizeof(word) ); /
初始化数组 /
memset( word, 0, sizeof(temp1) ); /
初始化数组 /
printf( “欢迎来到中文自定义,是否继续上一次的训练内容?\n\n” );
printf( “\n\n1.是\n\n2.否\n\n” );
scanf( “%d”, &choice );
fflush( stdin ); /
清空输入缓冲区 /
if ( choice == 1 )
{
system( “cls” );
fflush( stdin ); /
清空输入缓冲区 /
fp = fopen( “自定义中文.txt”, “r” ); /
文件打开 /
rewind( fp ); /
将文件的指针重新指向开头 /
lenth = fread( word, sizeof(word), 1, fp ); /
文件的读取 /
if ( lenth == 0 )
{
fclose( fp );
printf( “抱歉,无上次训练内容记录!请重新选择!” );
Sleep( 200 ); /
延迟0.2s /
system( “cls” );
goto out2;
}
printf( “\n\n%s”, word );
printf( “\n\n请开始打字(回车表示结束)\n\n” );
Began = clock(); /
开始测试时间 /
fflush( stdin ); /
清空输入缓冲区 /
gets_s( temp1 );
End = clock(); /
结束测试时间 /
}
else{
fflush( stdin ); /
清空输入缓冲区 /
fp = fopen( “自定义中文.txt”, “w” );
rewind( fp );
out3:
system( “cls” );
printf( “请输入自定义训练内容(以回车键结束):” );
gets_s( word );
len = strlen( word );
if ( len == 0 )
{
printf( “请输入有效数据!!!” );
memset( word, 0, sizeof(word) ); /
初始化数组 /
Sleep( 500 ); /
延迟0.5s /
goto out3;
}
fwrite( word, sizeof(word), 1, fp ); /
写入文件 /
out4:
printf( “\n%s”, word );
fflush( stdin ); /
清空输入缓冲区 /
printf( “\n\n请开始打字(回车表示结束)\n\n” );
Began = clock(); /
测试开始时间 /
fflush( stdin ); /
清空输入缓冲区 /
gets_s( temp1 );
End = clock(); /
测试结束时间 /
}
time = ( (End - Began) / CLOCKS_PER_SEC); /
消耗时间 /
len = strlen( temp1 );
len1 = strlen( word );
if ( len == 0 )
{
printf( “请输入有效数据!!!” );
Sleep( 500 ); /
延迟0.5s /
goto out4;
}
for ( i = 0, j = 0; i < len1, j < len; i++, j++ )
{
if ( temp1[j] == ‘.’ || temp1[j] == ‘,’ || temp1[j] == 39 || (temp1[j] <= ‘z’ && temp1[j] >= ‘a’) || (temp1[j] <= ‘Z’ && temp1[j] >= ‘A’) )
{ /
判断是否为中文字符,并判断是否为中文的标点符号和空格问题 /
i++;
number++; /
中文字符的数量 /
}
else if ( word[i] == temp1[j] )
{
if ( word[i + 1] == temp1[j + 1] )
{
right++; /
正确的中文字符数量 /
i++;
j++;
}
}
}
if ( len > len1 ) /
字符长度判断 /
{
len = len1;
printf( “\n\n您多输入的字符不计入成绩!!!\n\n” );
}
speed = ( (len - number) / 2 + number) / time; /
中文打字速度 /
h = (right * 1.0) / ( (len - number) / 2 + number); /
准确率 /
printf( “\n\n您输入的总个数为%d 正确个数为%d 准确率为%.3f% % 速度为%.3f字/s”, ( (len - number) / 2 + number), right, h * 100, speed );
fp2 = fopen( “个人中文训练成绩.txt”, “a+” );
if ( ( (len - number) / 2 + number) == 0 )
{
int a1 = 0;
float a2 = 0.0;
fprintf( fp2, “%d %f %f\n”, a1, a2, a2 );
}
else
fprintf( fp2, “%d %f %f\n”, ( (len - number) / 2 + number), h, speed ); /
写入训练成绩 /
fclose( fp );
fclose( fp2 );
printf( “\n\n请按esc键返回上一界面” );
out:
if ( kbhit() ) /
判断是否有键盘输入 /
{
a = getch();
if ( a == 27 ) /
Esc的键位 /
{
system( “cls” );
Sleep( 200 ); /
延迟0.2s */
return(0);
}
else
goto out;
}
else
goto out;
}

int IndividualEnglish() /* 英文自定义训练 /
{
closegraph(); /
图形关闭系统 /
SHOWCONSOLE; /
打开控制台 /
fflush( stdin ); /
清空输入缓冲区 /
system( “cls” );
system( “color 34” );
int i, j, right = 0, lenth = 0, choice, lenth2 = 0, number = 0; /
right为正确个数,lenth,lenth1为字符长度,number为训练记录次数 /
float Began = 0.0, End = 0.0, time = 0.0, speed = 0.0; /
time为时间,speed为速度 */
FILE *fp, fp2;
char word[5000], temp1[5000], a;
out2:
memset( word, 0, sizeof(word) ); /
初始化数组 /
memset( word, 0, sizeof(temp1) ); /
初始化数组 /
printf( “欢迎来到英文自定义,是否继续上一次的训练内容?\n\n” );
printf( “\n\n1.是\n\n2.否\n\n” );
scanf( “%d”, &choice );
fflush( stdin ); /
清空输入缓冲区 /
if ( choice == 1 )
{
system( “cls” );
fflush( stdin ); /
清空输入缓冲区 /
fp = fopen( “自定义英文.txt”, “a+” );
rewind( fp );
number = fread( word, sizeof(word), 1, fp );
if ( number == 0 ) /
判断是否有训练记录 /
{
fclose( fp );
printf( “抱歉,无上次训练内容记录!请重新选择!” );
Sleep( 200 ); /
延迟0.2s /
system( “cls” );
goto out2;
}
printf( “\n\n%s”, word );
printf( “\n\n请开始打字(回车表示结束)\n\n” );
Began = clock(); /
测试开始时间 /
fflush( stdin ); /
清空输入缓冲区 /
gets_s( temp1 );
End = clock(); /
测试结束时间 /
}
else{
fp = fopen( “自定义英文.txt”, “w” );
rewind( fp );
out3:
system( “cls” );
printf( “请输入自定义训练内容(以回车键结束):” );
fflush( stdin ); /
清空输入缓冲区 /
gets_s( word );
lenth = strlen( word );
if ( lenth == 0 )
{
printf( “请输入有效数据!!!” );
Sleep( 500 ); /
延迟0.5s /
goto out3;
}
printf( “\n\n%s”, word );
fflush( stdin ); /
清空输入缓冲区 /
fwrite( word, sizeof(word), 1, fp );
out4:
printf( “\n\n请开始打字(回车表示结束)\n\n” );
Began = clock(); /
测试开始时间 /
fflush( stdin );
gets_s( temp1 );
End = clock(); /
测试结束时间 /
}
time = ( (End - Began) / CLOCKS_PER_SEC); /
消耗时间 /
lenth = strlen( temp1 ); /
数组名为temp1的字符长度 /
lenth2 = strlen( word ); /
数组名为word的字符长度 /
if ( lenth == 0 )
{
printf( “请输入有效数据!!!” );
Sleep( 500 ); /
延迟0.5s /
goto out4;
}
if ( lenth > lenth2 ) /
判断两个数组字符长度 /
{
lenth = lenth2;
printf( “\n\n您多输入的字符不计入成绩!!!\n\n” );
}
for ( i = 0; i < lenth; i++ )
{
if ( word[i] == temp1[i] )
right++; /
英文字符正确的数量 /
}
float h = right / (lenth * 1.0); /
准确率 /
speed = lenth / (time * 1.0); /
速度 /
printf( “\n\n您的打字总个数为%d 正确个数为%d 准确率为:%.3f%% 打字速度为:%.3f字/s”, lenth, right, h * 100, speed );
fp2 = fopen( “个人英文训练成绩.txt”, “a+” );
if ( lenth == 0 ) /
长度为0 /
{
int b = 0;
float d = 0.0;
fprintf( fp2, “%d %f %f\n”, b, d, d ); /
写入成绩 /
}
else
fprintf( fp2, “%d %f %f\n”, lenth, h, speed ); /
写入成绩 /
fclose( fp2 );
fclose( fp );
printf( “\n\n请按esc键返回上一界面” );
out:
if ( kbhit() ) /
是否有键盘输入 /
{
a = getch();
if ( a == 27 ) /
Esc的键位 /
{
system( “cls” );
Sleep( 200 ); /
延迟0.2s */
return(0);
}
else
goto out;
}
else
goto out;
}

int grade_()
{
fflush( stdin ); /* 清空输入缓冲区 /
out:
MOUSEMSG m; /
定义一个鼠标变量 /
loadimage( NULL, L"书.jpg" ); /
覆盖上一界面的文字 /
settextstyle( 60, 0, L"方正舒体" ); /
字体大小和样式 /
settextcolor( RGB( 24, 137, 109 ) ); /
字体颜色,可用rgb//248 57 10 /
setbkmode( TRANSPARENT ); /
透明 /
settextstyle( 20, 0, L"" ); /
字体大小和样式 /
outtextxy( 200, 20, L"1.中文训练情况" ); /
定义菜单功能的位置 /
outtextxy( 200, 70, L"2.英文训练情况" ); /
定义菜单功能的位置 /
outtextxy( 200, 120, L"3.用户自定义训练情况" ); /
定义菜单功能的位置 /
outtextxy( 200, 170, L"4.随机字符训练情况" ); /
定义菜单功能的位置 /
outtextxy( 200, 220, L"5.趣味游戏得分情况" ); /
定义菜单功能的位置 /
outtextxy( 200, 270, L"6.返回上一级" ); /
定义菜单功能的位置 */
while ( 1 )
{
m = GetMouseMsg();
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 0 && m.y <= 40 ) /*选择中文训练情况自定义功能 /
{
read_txt( 1 ); /
调用读记录函数 /
initgraph( 606, 412 ); /
重新生成窗口 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 50 && m.y <= 90 ) /
选择英文训练情况自定义功能 /
{
read_txt( 2 ); /
调用读记录函数 /
initgraph( 606, 412 ); /
重新生成窗口 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 100 && m.y <= 140 ) /*选择用户自定义训练情况自定义功能 /
{
welcome_4(); /
调用菜单函数 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 50 && m.y <= 190 ) /*选择随机字符训练情况自定义训练 /
{
read_txt( 4 ); /
调用读记录函数 /
initgraph( 606, 412 ); /
重新生成窗口 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 200 && m.y <= 240 ) /*选择趣味游戏得分情况自定义训练 /
{
read_txt( 6 ); /
调用读记录函数 /
initgraph( 606, 412 ); /
重新生成窗口 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 250 && m.y <= 290 ) /
返回上一级 /
{
loadimage( NULL, L"书.jpg" ); /
重新加载书的图形界面覆盖文字 */
return(0);
}
}
_getch();
}

int read_txt( int x ) /* 中文训练成绩 英文训练成绩 个人训练成绩 随机训练成绩 游戏分数 /
{
closegraph(); /
关闭图形界面 /
fflush( stdin ); /
清空输入缓冲区· /
system( “cls” );
system( “color 34” );
SHOWCONSOLE; /
打开控制台 /
FILE * fp;
float a, b;
int i = 1, grade, h;
char g;
if ( x == 1 )
fp = fopen( “中文训练成绩.txt”, “r” );
else if ( x == 2 )
fp = fopen( “英文训练成绩.txt”, “r” );
else if ( x == 3 )
fp = fopen( “个人中文训练成绩.txt”, “r” );
else if ( x == 4 )
fp = fopen( “随机训练成绩.txt”, “r” );
else if ( x == 5 )
fp = fopen( “个人英文训练成绩.txt”, “r” );
else
fp = fopen( “游戏训练分数.txt”, “r” );
while ( x <= 5 )
{
while ( fscanf( fp, “%d %f %f”, &h, &a, &b ) != EOF ) /
成功读取字符 /
{
printf( “第%d次的训练中,您输入了%d字,您的准确率为%.3f%%,速度为%.3f字/s\n”, i, h, a * 100, b );
i++;
}
if ( i == 1 )
printf( “暂无训练数据,请快去训练吧!” );
fclose( fp );
break;
}
while ( x >= 6 )
{
while ( fscanf( fp, “%d”, &grade ) != EOF ) /
成功读取字符 /
{
printf( “第%d次的游戏中,您的得分为%d\n”, i, grade );
i++; /
游戏次数 /
}
if ( i == 1 )
printf( “暂无游戏数据,请快去玩游戏吧!” );
fclose( fp );
break;
}
printf( “\n请按esc键盘返回上一级!” );
out:
if ( kbhit() ) /
是否有键盘输入 /
{
g = getch();
if ( g == 27 ) /
Esc键位为27 /
{
system( “cls” );
Sleep( 200 ); /
延迟0.2s */
return(0);
}
else
goto out;
}
else
goto out;
}

int random_()
{
closegraph(); /* 图形关闭界面 /
SHOWCONSOLE; /
打开控制台 /
fflush( stdin ); /
清空输入缓冲区 /
system( “color 34” );
system( “cls” );
srand( (unsigned) time( NULL ) ); /
随机数定义 /
int i, j, right = 0, number = 0, lenth, number2 = 0, rands; /
rands为产生的随机数 /
float Began = 0.0, End = 0.0, time, speed;;
char temp[3000], temp1[3000], a;
char b = ‘a’;
FILE * fp;
memset( temp, 0, sizeof(temp) ); /
初始化数组 /
memset( temp, 0, sizeof(temp1) );
printf( “请输入需要产生的随机字符个数,注意请不要输入与中文相关的字符,否则将会导致准确率和速度的计算出错!!!:” );
scanf( “%d”, &number2 );
for ( i = 0; i < number2; i++ )
{
rands = rand() % 26; /
产生在0~26的随机数 /
for ( j = 0; j < rands; j++ )
{
b++;
}
printf( “%c”, b );
temp[i] = b;
b = ‘a’; /
转化为随机产生的英文字符 /
}
printf( “\n\n计时开始请输入!\n\n” );
fflush( stdin ); /
清空输入缓冲区 /
Began = clock(); /
测试开始时间 /
gets_s( temp1 );
End = clock(); /
测试结束时间 /
time = ( (End - Began) / CLOCKS_PER_SEC); /
测试总时间 /
lenth = strlen( temp1 );
for ( i = 0; i < lenth; i++ )
{
if ( temp[i] == temp1[i] )
right++; /
正确的英文字符数 /
}
if ( lenth == 0 )
{
int a1 = 0;
float a2 = 0.0;
printf( “\n\n您的打字总个数为0 正确个数为0 准确率为: 0.000%% 打字速度为:0.000字/s” );
fp = fopen( “随机训练成绩.txt”, “a+” );
fprintf( fp, “%d %f %f\n”, a1, a2, a2 ); /
写入成绩 /
}
else {
float sum = right / (lenth * 1.0); /
准确率 /
speed = lenth / (time * 1.0); /
速度 /
printf( “\n\n您的打字总个数为%d 正确个数为%d 准确率为:%.3f%% 打字速度为:%.3f字/s”, lenth, right, sum * 100, speed );
fp = fopen( “随机训练成绩.txt”, “a+” );
fprintf( fp, “%d %f %f\n”, lenth, sum, speed ); /
写入成绩 /
}
fclose( fp );
printf( “\n\n请按esc键返回上一界面” );
out:
if ( kbhit() ) /
是否有按键按下 /
{
a = getch();
if ( a == 27 ) /
Esc的键位是27 /
{
system( “cls” );
Sleep( 200 ); /
延迟0.2s */
return(0);
}
else
goto out;
}
else
goto out;
}

int read_e( int x )
{
fflush( stdin ); /* 清空输入缓冲区 /
closegraph(); /
关闭图形界面 /
SHOWCONSOLE; /
打开控制台 */
system( “cls” );
system( “color 34” );
int i, j, right = 0, number = 0, lenth;
float Began = 0.0, End = 0.0, time, speed;;
FILE * fp, * fp2;
if ( x == 1 ) /*选择打开地书籍 /
fp = fopen( “如果你害怕,那说明你不傻.txt”, “r” );
else if ( x == 2 )
fp = fopen( “最大的智慧,是保持冷静.txt”, “r” );
else if ( x == 3 )
fp = fopen( “让自己变成乘数.txt”, “r” );
else if ( x == 4 )
fp = fopen( “你唯一该抱怨的是不够努力的自己.txt”, “r” );
else if ( x == 5 )
fp = fopen( “未来是张白纸,由你自己来画就.txt”, “r” );
else
fp = fopen( “这一天,什么也没发生.txt”, “r” );
char temp[3000], temp1[3000], temp3[3000], a;
memset( temp, 0, sizeof(temp) ); /
初始化数组 /
memset( temp, 0, sizeof(temp1) ); /
初始化数组 /
fgets( temp, 4000, fp );
printf( “%s”, temp );
printf( “\n\n计时开始请输入!\n\n” );
Began = clock(); /
测试开始时间 /
gets_s( temp1 ); /
用户 /
End = clock(); /
测试结束时间 /
time = ( (End - Began) / CLOCKS_PER_SEC); /
测试总时间 */
lenth = strlen( temp1 );

for ( i = 0; i < lenth; i++ )
{
	if ( temp[i] == temp1[i] )
		right++;                        /* 正确的英文字符数 */
}
if ( lenth == 0 )
{
	int	a1	= 0;
	float	a2	= 0.0;
	printf( "\n\n您的打字总个数为0  正确个数为0  准确率为: 0.000%%   打字速度为:0.000字/s" );
	fp2 = fopen( "英文训练成绩.txt", "a+" );
	fprintf( fp2, "%d %f %f\n", a1, a2, a2 );               /* 写入成绩 */
}else  {
	float sum = right / (lenth * 1.0);                      /* 准确率 */
	speed = lenth / (time * 1.0);                           /* 速度 */
	printf( "\n\n您的打字总个数为%d  正确个数为%d  准确率为:%.3f%%   打字速度为:%.3f字/s", lenth, right, sum * 100, speed );
	fp2 = fopen( "英文训练成绩.txt", "a+" );
	fprintf( fp2, "%d %f %f\n", lenth, sum, speed );        /* 写入成绩 */
}
fclose( fp );
fclose( fp2 );
printf( "\n\n请按esc键返回上一界面" );

out:
if ( kbhit() ) /* 是否有按键按下 /
{
a = getch();
if ( a == 27 ) /
Esc的键位是27 */
{
system( “cls” );
Sleep( 200 );
return(0);
}
else
goto out;
}
else
goto out;
}

int read_c( int x ) /* x=1表示读第几篇 /
{
closegraph(); /
关闭图形界面 /
SHOWCONSOLE; /
打开控制台 /
fflush( stdin ); /
清空输入缓冲区 */
system( “cls” );
system( “color 34” );
int i, j, right = 0, number = 0;
float Began = 0.0, End = 0.0, speed, time;
FILE * fp, * fp2;
if ( x == 1 ) /*选择打开地书籍 /
fp = fopen( “蜀道难.txt”, “r” );
else if ( x == 2 )
fp = fopen( “茅屋为秋风所破歌.txt”, “r” );
else if ( x == 3 )
fp = fopen( “水调歌头.txt”, “r” );
else if ( x == 4 )
fp = fopen( “将进酒.txt”, “r” );
else if ( x == 5 )
fp = fopen( “琵琶行.txt”, “r” );
else
fp = fopen( “桃花源记.txt”, “r” );
char temp[3000], temp1[3000], a;
memset( temp, 0, sizeof(temp) ); /
初始化数组 /
memset( temp, 0, sizeof(temp1) ); /
初始化数组 /
fgets( temp, 3000, fp );
printf( “%s”, temp );
printf( “\n\n计时开始请输入!\n\n” );
Began = clock(); /
测试开始时间 /
/
scanf("%s", temp1); /
gets_s( temp1 );
End = clock(); /
测试结束时间 /
time = ( (End - Began) / CLOCKS_PER_SEC); /
测试总时间 /
int len = strlen( temp1 ), len1 = strlen( temp );
for ( i = 0, j = 0; i < len1, j < len; i++, j++ )
{
if ( temp1[j] == ‘.’ || temp1[j] == ‘,’ || temp1[j] == 39 || temp1[j] == 32 || (temp1[j] <= ‘z’ && temp1[j] >= ‘a’) || (temp1[j] <= ‘Z’ && temp1[j] >= ‘A’) )
{ /
判断是否为中文字符,并且判断是否为中文标点符号和空格 /
i++;
number++; /
中文字符的个数 /
}
else if ( temp[i] == temp1[j] )
{
if ( temp[i + 1] == temp1[j + 1] )
{
right++; /
正确的中文字符 /
i++;
j++;
}
}
}
if ( ( (len - number) / 2 + number) == 0 ) /
用户打字个数为0 /
{
int a1 = 0;
float a2 = 0.0;
printf( “您的打字总个数为0 正确个数为0 准确率:0.000%% 打字速度为:0.000字/s” );
fp2 = fopen( “中文训练成绩.txt”, “a+” );
fprintf( fp2, “%d %f %f\n”, a1, a2, a2 ); /
写入成绩 /
}
else {
speed = ( (len - number) / 2 + number) / time; /
速度 /
float sum = (right * 1.0) / ( (len - number) / 2 + number); /
准确率 /
printf( “您的打字总个数为%d 正确个数为%d 准确率:%.3f%% 打字速度为:%.3f字/s”, (len - number) / 2 + number, right, sum * 100, speed );
fp2 = fopen( “中文训练成绩.txt”, “a+” );
fprintf( fp2, “%d %f %f\n”, ( (len - number) / 2 + number), sum, speed ); /
写入成绩 /
}
fclose( fp );
fclose( fp2 );
printf( “\n\n请按esc键返回上一界面” );
out:
if ( kbhit() ) /
是否有键盘按下· /
{
a = getch();
if ( a == 27 ) /
Esc的键位是27 /
{
system( “cls” );
Sleep( 200 ); /
延迟0.2s */
return(0);
}
else
goto out;
}
else
goto out;
}

int readexplation()
{
closegraph(); /* 图形关闭界面 /
SHOWCONSOLE; /
打开控制台 /
fflush( stdin ); /
清空输入缓冲区 /
system( “cls” );
system( “color 34” );
FILE * fp;
char temp[3000], a;
fp = fopen( “软件使用说明.txt”, “r” );
while ( fscanf( fp, “%s”, temp ) != EOF ) /
成功读取字符 /
printf( “%s\n”, temp );
while ( 1 )
{
if ( kbhit() ) /
是否有键盘按下 /
{
a = getch();
if ( a == 27 ) /
Esc的键位是27 */
break;
else
continue;
}
}
fclose( fp );
return(0);
}

int game()
{
fflush( stdin ); /* 清空输入缓冲区 /
srand( (unsigned) time( NULL ) ); /
定义随机数 /
int j = 0, number = 0; /
number表示击中个数,每个字符得三分 /
int num = 0, num2, num3, i, n, blood = 50, number2 = 0; /
用于设置 /
char a = ‘a’, b;
TCHAR s[5], s2[5]; /
一种字符类型 /
FILE * fp;
fp = fopen( “游戏训练分数.txt”, “a+” );
/

* initgraph(606, 412);
* cleardevice();
/
loadimage( NULL, L"海.jpg" );
settextstyle( 30, 0, L"宋体" ); /
字体大小和样式 /
settextcolor( RGB( 24, 137, 109 ) ); /
字体颜色,可用rgb//248 57 10 /
setbkmode( TRANSPARENT ); /
透明 /
settextstyle( 30, 0, L"" ); /
字体大小和样式 /
/
outtextxy(235,120, L"1.用户登陆");// /
while ( 1 )
{
setbkmode( TRANSPARENT ); /
透明 /
a = rand() % 26 + 65; /
用于生成的 A~Z的 ASCII码 /
n = rand() % 590 + 3; /
随机掉落的x轴坐标 */
for ( i = 0; i < 412; i = i + 4 )
{
if ( kbhit() ) /*有键盘按下 */
{
b = getch();
if ( b == a )
{
number++;
break;
}
else if ( b == 27 ) /*按下esc键 /
{
fprintf( fp, “%d\n”, number * 3 );
fflush( stdin ); /
清空缓冲区 */
fclose( fp );
return(0); /*程序结束 /
}
else {
blood–; /
血条减少 /
_stprintf( s, _T( “%d” ), blood );
if ( blood <= 0 ) /
血条小于等于0 /
{
fprintf( fp, “%d\n”, number * 3 );
fclose( fp );
loadimage( NULL, L"游戏结束.jpg" );
Sleep( 2000 );
/
closegraph(); /
fflush( stdin ); /
清空缓冲区 */
return(0);
}
continue;
} /*按错血量减一 /
}
setbkmode( TRANSPARENT ); /
透明 /
settextstyle( 15, 0, L"" ); /
设置字体 大小和样式 /
settextcolor( RED );
/
outtextxy(10, 60, s); /
outtextxy( 0, 0, s ); /
/
settextstyle( 30, 0, L"" );
num = rand() % 256 + 1; /
随机产生颜色的编号,+1是为了不产生黑色 /
num2 = rand() % 256 + 1; /
随机产生颜色的编号,+1是为了不产生黑色 /
num3 = rand() % 256 + 1; /
随机产生颜色的编号,+1是为了不产生黑色 /
settextcolor( RGB( num, num2, num3 ) ); /
设置颜色 /
outtextxy( n, i, a );
setlinecolor( RGB( num, num2, num3 ) ); /
设置颜色 /
circle( n, i + 20, 20 ); /
画圆 /
if ( number <= 15 ) /
击中字母个数小于等于15 */
Sleep( 20 ); /*下降速度 /
if ( number <= 25 ) /
击中字母个数小于等于25 */
Sleep( 15 ); /*下降速度 /
if ( number <= 35 ) /
击中字母个数小于等于35 */
Sleep( 10 ); /*下降速度 /
if ( number <= 45 ) /
击中字母个数小于等于45 */
Sleep( 5 ); /*下降速度 /
loadimage( NULL, L"海.jpg" );
if ( i >= 402 ) /
最大右边界设定为402 /
{
blood–; /
血条减少 /
_stprintf( s, _T( “%d” ), blood ); /
将blood的数值转化为 TCGAR类型并存在这个数组里 /
if ( blood <= 0 )
{
fprintf( fp, “%d\n”, number * 3 );
fclose( fp );
loadimage( NULL, L"游戏结束.jpg" ); /
游戏结束的图片覆盖游戏 /
Sleep( 2000 );
fflush( stdin ); /
清空输入缓冲区 /
/
closegraph(); */
return(0);
}
break;
}
}
loadimage( NULL, L"海.jpg" );
}
}

int welcome_2() /* 第二个界面 /
{
fflush( stdin ); /
清空输入缓冲区 /
out2:
MOUSEMSG m; /
定义一个鼠标变量 /
initgraph( 606, 412 );
out:
/
cleardevice(); /
loadimage( NULL, L"书.jpg" );
settextstyle( 60, 0, L"宋体" ); /
字体大小和样式 /
settextcolor( RGB( 24, 137, 109 ) ); /
字体颜色,可用rgb//248 57 10 /
setbkmode( TRANSPARENT ); /
透明 /
/
outtextxy(220,50,L"打 字 系 统");// /
settextstyle( 20, 0, L"" ); /
字体大小和样式 /
outtextxy( 200, 20, L"1.中文录入训练" ); /
设置界面功能位置 /
outtextxy( 200, 70, L"2.英文录入训练" ); /
设置界面功能位置 /
outtextxy( 200, 120, L"3.用户自定义训练" ); /
设置界面功能位置 /
outtextxy( 200, 170, L"4.字符随机训练" ); /
设置界面功能位置 /
outtextxy( 200, 220, L"5.趣味游戏" ); /
设置界面功能位置 /
outtextxy( 200, 270, L"6.历史得分" ); /
设置界面功能位置 /
outtextxy( 200, 320, L"7.返回上一级" ); /
设置界面功能位置 /
while ( 1 )
{
m = GetMouseMsg();
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 0 && m.y <= 40 ) /
中文训练 /
{
chinese(); /
调用中文录入函数 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 50 && m.y <= 90 ) /
英文训练 /
{
english(); /
调用英文录入函数 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 100 && m.y <= 140 ) /
用户自定义 /
{
welcome_3(); /
调用界面函数 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 150 && m.y <= 190 ) /
字符随机训练 /
{
random_(); /
调用随机训练函数 /
goto out2;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 200 && m.y <= 240 ) /
趣味游戏 /
{
game(); /
调用游戏函数 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 250 && m.y <= 290 ) /
历史得分 /
{
grade_(); /
调用分数函数 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 300 && m.y <= 340 ) /
返回上一级 /
{
return(0); /
返回上一级 */
}
}
_getch();
}

int english()
{
fflush( stdin ); /* 清空缓冲区 /
out:
MOUSEMSG m; /
定义一个鼠标变量 /
/

* cleardevice();
* initgraph(606,412);
/
loadimage( NULL, L"书.jpg" ); /
覆盖上一界面的文字 /
settextstyle( 60, 0, L"方正舒体" ); /
字体大小和样式 /
settextcolor( RGB( 24, 137, 109 ) ); /
字体颜色,可用rgb//248 57 10 /
setbkmode( TRANSPARENT ); /
透明 /
settextstyle( 20, 0, L"" ); /
字体大小和样式 /
outtextxy( 200, 20, L"1.如果你害怕,那说明你不傻" ); /
设置文章的位置 /
outtextxy( 200, 70, L"2.最大的智慧,是保持冷静" );
outtextxy( 200, 120, L"3.让自己变成乘数" );
outtextxy( 200, 170, L"4.你唯一该抱怨的是不够努力的自己" );
outtextxy( 200, 220, L"5.未来是张白纸,由你自己来画就" );
outtextxy( 200, 270, L"6.这一天,什么也没发生" );
outtextxy( 200, 320, L"7.返回上一级" );
while ( 1 )
{
/
hWnd=GetHWnd();//让提示窗口居中 /
m = GetMouseMsg(); /
获得鼠标消息 */
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 0 && m.y <= 40 ) /*选择第一篇文章 /
{
read_e( 1 ); /
调用读英文文章函数 /
initgraph( 606, 412 ); /
初始化图形界面 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 50 && m.y <= 90 ) /*选择第二篇文章 /
{
read_e( 2 );
initgraph( 606, 412 ); /
初始化图形界面 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 100 && m.y <= 140 ) /*选择第三篇文章 /
{
read_e( 3 );
initgraph( 606, 412 ); /
初始化图形界面 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 50 && m.y <= 190 ) /*选择第四篇文章 /
{
read_e( 4 );
initgraph( 606, 412 ); /
初始化图形界面 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 200 && m.y <= 240 ) /*选择第五篇文章 /
{
read_e( 5 );
initgraph( 606, 412 ); /
初始化图形界面 */
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 250 && m.y <= 290 ) /*选择第六篇文章 /
{
read_e( 6 );
initgraph( 606, 412 ); /
初始化图形界面 /
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 300 && m.y <= 340 ) /
返回上一级 /
{
loadimage( NULL, L"书.jpg" ); /
用书的图片覆盖文章 */
return(0);
}
}
_getch();
}

int chinese()
{
fflush( stdin ); /* 清空缓冲区 /
out:
MOUSEMSG m; /
定义鼠标变量 /
/

  • cleardevice();
  • initgraph(606,412);
    /
    loadimage( NULL, L"书.jpg" ); /
    覆盖上一界面的文字 /
    settextstyle( 60, 0, L"方正舒体" ); /
    字体大小和样式 /
    settextcolor( RGB( 24, 137, 109 ) ); /
    字体颜色,可用rgb//248 57 10 /
    setbkmode( TRANSPARENT ); /
    透明 /
    settextstyle( 20, 0, L"" ); /
    字体大小和样式 /
    outtextxy( 200, 20, L"1.蜀道难" ); /
    设置中文文章内容 /
    outtextxy( 200, 70, L"2.茅屋为秋风所破歌" ); /
    设置中文文章内容 /
    outtextxy( 200, 120, L"3.水调歌头" ); /
    设置中文文章内容 /
    outtextxy( 200, 170, L"4.将进酒" ); /
    设置中文文章内容 /
    outtextxy( 200, 220, L"5.琵琶行" ); /
    设置中文文章内容 /
    outtextxy( 200, 270, L"6.桃花源记" ); /
    设置中文文章内容 /
    outtextxy( 200, 320, L"7.返回上一级" ); /
    设置中文文章内容 /
    while ( 1 )
    {
    /
    hWnd=GetHWnd();//让提示窗口居中 */
    m = GetMouseMsg();
    if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 0 && m.y <= 40 ) /*选择蜀道难 /
    {
    read_c( 1 ); /
    调用读中文文章函数 /
    initgraph( 606, 412 ); /
    初始化图形界面 */
    goto out;
    }
    if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 50 && m.y <= 90 ) /*选择茅屋为秋风所破歌 /
    {
    read_c( 2 );
    initgraph( 606, 412 ); /
    初始化图形界面 */
    goto out;
    }
    if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 190 && m.y >= 100 && m.y <= 140 ) /*选择水调歌头 /
    {
    read_c( 3 );
    initgraph( 606, 412 ); /
    初始化图形界面 */
    goto out;
    }
    if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 50 && m.y <= 190 ) /*选择将进酒 /
    {
    read_c( 4 );
    initgraph( 606, 412 ); /
    初始化图形界面 */
    goto out;
    }
    if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 200 && m.y <= 240 ) /*选择琵琶行 /
    {
    read_c( 5 );
    initgraph( 606, 412 ); /
    初始化图形界面 */
    goto out;
    }
    if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 250 && m.y <= 290 ) /*选择桃花源记 /
    {
    read_c( 6 );
    initgraph( 606, 412 ); /
    初始化图形界面 /
    goto out;
    }
    if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 150 && m.y >= 300 && m.y <= 340 ) /
    返回上一级 /
    {
    loadimage( NULL, L"书.jpg" ); /
    用书的图片覆盖文章 */
    return(0);
    }
    }
    _getch();
    }

int _register() /* 用户登录 /
{
fflush( stdin ); /
清空缓冲区· /
SHOWCONSOLE; /
打开控制台 /
fflush( stdin ); /
清空输入缓冲区 */
system( “cls” );
system( “color 34” );
FILE fp, fp2;
fp = fopen( “账号.txt”, “r” );
fp2 = fopen( “密码.txt”, “r” );
rewind( fp );
rewind( fp2 );
if ( fp == NULL || fp2 == NULL )
{
printf( “文件打开失败” );
return(0);
}
char id2[30] = { “\0” }, password2[30] = { “\0” }; /
文件端 /
char a;
fscanf( fp, “%s”, id2 ); /
读入id /
fscanf( fp2, “%s”, password2 ); /
读入密码 /
out:
/

* rewind(fp);
* rewind(fp2);
/
int i = 0;
char id[30] = { “\0” }, password[30] = { “\0” }; /
用户端 /
system( “cls” );
gotoxy(30,5);
printf( “1.请输入账号:” );
scanf( “%s” , id );
fflush( stdin );
gotoxy( 30 , 10 );
printf( “2.请输入密码:” );
out2:
while ( 1 ) /
esc按键返回值是27 /
{
a = getch();
if ( a != 27 && a != ‘\r’ && a != 8 ) /
用户没有按下esc键 /
{
printf( "
" ); /
加密 /
password[i] = a;
i++;
}else if ( a == ‘\r’ ) /
用户按下回车键 /
{
fclose( fp );
fclose( fp2 );
break;
}
else if ( a == 8 ) /
用户按下退格键 /
{
if ( i == 0 )
goto out2;
printf( “\b \b” ); /
覆盖上一个字符 */
i -= 1;
}
else
{
fclose( fp );
fclose( fp2 );
return(0);
}
}

if ( strcmp( id, id2 ) != 0 && strcmp( password, password2 ) == 0 )                                                                                                                     /* 判断账号是否输入正确 */
{
	printf( "\n\n账号错误!请重新输入!" );
	Sleep( 1000 );                                                                                                                                                                  /* 延迟1s */
	goto out;
}
else if ( strcmp( id, id2 ) == 0 && strcmp( password, password2 ) != 0 )                                                                                                               /* 判断密码是否输入正确 */
{
	printf( "\n\n密码错误!请重新输入!" );
	Sleep( 1000 );                                                                                                                                                                  /* 延迟1s */
	goto out;
}
else if ( strcmp( id, id2 ) != 0 && strcmp( password, password2 ) != 0 )                                                                                                               /* 判断账号密码是否输入错误 */
{
	printf( "\n\n账号和密码错误!请重新输入!" );
	Sleep( 1000 );                                                                                                                                                                  /* 延迟1s */
	goto out;
}
else  {
	printf( "\n\n正在进入,请稍候...\n" );
	Sleep( 2000 );                                                                                                                                                                  /* 延迟2s */
	fclose( fp );
	fclose( fp2 );
	/*
	 * system("功能选择界面.exe");//进入下一功能
	 * return 0;
	 */
	welcome_2();                                                                                                                                                                    /* 调用菜单函数 */
	return(0);                                                                                                                                                                      /* 用户选择返回上一级 */
}

}

void welcome_1() /* 主界面 /
{
fflush( stdin ); /
清空缓冲区 /
char temp[100];
int num = 0, choice; /
用于设置 /
MOUSEMSG m; /
定义一个鼠标变量 /
initgraph( 606, 412 ); /
初始化图形界面 /
out:
cleardevice();
loadimage( NULL, L"星空.jpg" );
settextstyle( 30, 0, L"宋体" ); /
字体大小和样式 /
settextcolor( RGB( 24, 137, 109 ) ); /
字体颜色,可用rgb//248 57 10 /
setbkmode( TRANSPARENT ); /
透明 /
outtextxy( 220, 50, L"打 字 系 统" ); /
/
settextstyle( 30, 0, L"" ); /
字体大小和样式 /
outtextxy( 235, 120, L"1.用户登陆" ); /
设置功能选择的位置 /
outtextxy( 235, 160, L"2.背景音选择" ); /
设置功能选择的位置 /
outtextxy( 235, 200, L"3.设置" ); /
设置功能选择的位置 /
outtextxy( 235, 240, L"4.软件使用说明" ); /
设置功能选择的位置 /
outtextxy( 235, 280, L"5.退出程序" ); /
设置功能选择的位置 /
while ( 1 )
{
hWnd = GetHWnd(); /
让提示窗口居中 /
m = GetMouseMsg(); /
获取鼠标信息 /
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 235 && m.y >= 115 && m.y < 155 )
{
closegraph(); /
关闭图形界面 /
_register(); /
调用用户登录函数 /
/

* system(“登录.exe”);
* system(“C:\Users\d311\Desktop\新建文件夹\读.exe”);
/
system( “cls” );
/
system(“taskkill -f -im 登录.exe”);//关闭该程序 */
main();
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 230 && m.y >= 155 && m.y <= 190 && num == 0 ) /*选择歌曲 /
{
cleardevice(); /
清除上一界面的图片和文字 /
loadimage( NULL, L"海.jpg" ); /
用海的图片覆盖界面 /
outtextxy( 0, 0, L"1.有何不可" ); /
设置歌曲选择位置 /
outtextxy( 0, 70, L"2.后来" ); /
设置歌曲选择位置 /
outtextxy( 0, 140, L"3.二十四桥枫别雨" ); /
设置歌曲选择位置 /
outtextxy( 0, 210, L"4.克罗地亚狂想曲" ); /
设置歌曲选择位置 */
out1:
m = GetMouseMsg();
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 0 && m.y >= 0 && m.y <= 45 && num == 0 ) /*选择歌曲“有何不可” /
{
mciSendString( L"close a", 0, 0, 0 ); /
关闭a音乐 /
mciSendString( L"open 有何不可.mp3 alias a", 0, 0, 0 ); /
打开歌曲并命名为a /
mciSendString( L"play a repeat", 0, 0, 0 ); /
循环播放至程序退出 */
num++;
goto out;
}
else if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 0 && m.y > 60 && m.y <= 110 && num == 0 ) /*选择歌曲“后来” /
{
mciSendString( L"close a", 0, 0, 0 ); /
关闭a音乐 /
mciSendString( L"open 后来.mp3 alias a", 0, 0, 0 ); /
打开歌曲并命名为a /
mciSendString( L"play a repeat", 0, 0, 0 ); /
循环播放至程序退出 */
num++;
goto out;
}
else if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 0 && m.y >= 125 & m.y <= 180 && num == 0 ) /*选择歌曲“二十四桥枫别雨” /
{
mciSendString( L"close a", 0, 0, 0 ); /
关闭a音乐 /
mciSendString( L"open 二十四桥枫别雨.mp3 alias a", 0, 0, 0 ); /
打开歌曲并命名为a /
mciSendString( L"play a repeat", 0, 0, 0 ); /
循环播放至程序退出 */
num++;
goto out;
}
else if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 0 && m.y >= 190 & m.y <= 250 && num == 0 ) /*选择歌曲“克罗地亚狂想曲 ” /
{
mciSendString( L"close a", 0, 0, 0 ); /
关闭a音乐 /
mciSendString( L"open 克罗地亚狂想曲.mp3 alias a", 0, 0, 0 ); /
打开歌曲并命名为a /
mciSendString( L"play a repeat", 0, 0, 0 ); /
循环播放至程序退出 /
num++;
goto out;
}
else
goto out1;
}
if ( (m.uMsg == WM_LBUTTONDOWN && m.x >= 230 && m.y >= 195 && m.y <= 235 && num == 1) || (m.uMsg == WM_LBUTTONDOWN && m.x >= 230 && m.y >= 195 && m.y <= 235 && num == 0) ) /
关闭歌曲,只能调用一次 /
{
MessageBox( hWnd, L"是否关闭音乐", L"设置提示", MB_YESNO );
if ( MessageBox( hWnd, L"是否关闭音乐", L"设置提示", MB_YESNO ) == IDYES )
{
num++;
mciSendString( L"close a", 0, 0, 0 ); /
关闭音乐 /
goto out;
}
else
goto out;
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 230 && m.y > 235 && m.y <= 275 ) /
软件使用说明 /
{
readexplation();
welcome_1();
}
if ( m.uMsg == WM_LBUTTONDOWN && m.x >= 230 && m.y > 275 && m.y <= 315 ) /
退出程序 */
{
Sleep( 800 );
exit( 0 );
}
}
_getch();
}

由于没怎么写过博客,所以不知道怎么上传软件需要的文档。。。。。有问题就问吧。。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值