祝福烟花设计

祝福烟花设计

一定一定要安装EasyX
一定一定要安装EasyX
一定一定要安装EasyX
知道你们懒 https://easyx.cn/下载之后安装到VC++ 6.0上面相当于图个插件的作用

使用说明:
1.必须把 ‘’祝福烟花设计关‘’这个文件夹整个直接放在D:盘中。(程序路径问题,会的话可以自己更改,把素材等一系列东西打包放到一个“祝福烟花设计关”)
2.创建的账号密码储存的路径也在‘’祝福烟花设计关‘’这个文件夹中。
3.可以无需创建密码进行游客登录。
4.也可以账号123 密码456 老师可以直接进行登录。
在这里插入图片描述
在这里插入图片描述
还是那句话会的话可以自己更改路径,不会的话要严格按照我的路径来创建文件夹

  1. 图片素材
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.音乐素材
(不能上传,在代码里面改一下自己歌曲的名字,把自己要用到的音乐名字填进去就好了)
在这里插入图片描述
3.代码

//********头文件区********* 
#include<stdio.h>
//#include<string.h>
#include <math.h>
#include<stdlib.h>
#include <conio.h>
#include <graphics.h>
#include <time.h>
//#include <iostream.h>
#include <Mmsystem.h>
#pragma comment ( lib, "Winmm.lib" )

//**********宏定义区*********
#define PI 3.1415926548 
#define NUM		13			// 烟花种类数量宏定义
int user_count=0;
int book_count=0;


//********函数声明区********* 
void first();  //首页面

void add_user(void);  //注册账号 
void login_user(void);  //登录账号
void reset_password(void);  //修改密码
void save_user(void);  //将账号写入磁盘
void load_user(void);//将账号读入内存

void jiemian();//烟花界面
void guodu();//到达烟花之前的过渡阶段
void jianjie();//烟花简介 
void kaifa();//小组名单 
void siren();//one笑点 

void Init	( int	 );		// 初始化烟花
void Load	(		 );		// 加载烟花图片
void Shoot	(		 );		// 发射烟花
void Chose	( DWORD& );		// 筛选烟花
void Style	( DWORD& );		// 发射样式
void Show	( DWORD* );		// 绽放烟花


 //*******结构体区**********
struct asccount{  
    char ID[20];  
    char password[20]; 
}user[1010];

struct message{
	char book_number[20];
	char book_name[20];
	char book_writer[20];
	char book_price[20];
}book[1010];

// 烟花结构
struct FIRE
{
	int r;					// 当前爆炸半径
	int max_r;				// 爆炸中心距离边缘最大半径
	int x, y;				// 爆炸中心在窗口的坐标
	int cen_x, cen_y;		// 爆炸中心相对图片左上角的坐标
	int width, height;		// 图片的宽高
	int xy[240][240];		// 储存图片像素点

	bool show;				// 是否绽放
	bool draw;				// 开始输出像素点
	DWORD t1, t2, dt;		// 绽放速度
}Fire[NUM];

// 烟花弹结构
struct JET
{
	int x, y;				// 喷射点坐标
	int hx, hy;				// 最高点坐标------将赋值给 FIRE 里面的 x, y
	int height;				// 烟花高度
	bool shoot;				// 是否可以发射

	DWORD t1, t2, dt;		// 发射速度
	IMAGE img[2];			// 储存花弹一亮一暗图片
	byte n : 1;				// 图片下标
}Jet[NUM];

//*******主函数********** 
int main()
{
	
	load_user();//将账号读入内存
		
	first();



	
	return 0;
}

void first()
{
	system("color 6");//背景与字体颜色
	 
	int xz;
	
	while(1)
	{
		system("cls");
		
		for(int i=0;i<=5;i++)
		{
			printf("\n");
		}
		
		printf("\n\n\t\t\t◎★★★★★★★★★★★★★★★★★★★★★★★◎");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☆\t\t欢迎来到祝福烟花展示     \t☆");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☆\t\t   ①   Try play  \t\t☆");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☆\t\t   ②   登录账号  \t\t☆");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☆\t\t   ③   注册账号  \t\t☆");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☆\t\t   ④   修改密码  \t\t☆");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☆\t\t   ◎   退出系统  \t\t☆");
		printf("\n\t\t\t☆\t\t\t\t\t\t☆");
		printf("\n\t\t\t☉★★★★★★★★★★★★★★★★★★★★★★★☉");
		printf("\n");
		printf("\n\t\t\t\t\t   从键盘输入:→ ");
		
		scanf("%d",&xz);
		
		switch(xz)
		{
			case 1:
				jiemian(); break;
			case 2:
				login_user(); break;
				
			case 3:
				add_user(); break;
			case 4:
				reset_password(); break;
			case 0:
				return; 
			default :
				printf("\n\t\t\t   输入错误,请重新输入\n\n\t\t\t    "); 
				system("PAUSE");
		}



	}
}
void jiemian()
{
	mciSendString("close music1",0,0,0);//关闭音乐
	mciSendString("close music2",0,0,0);//关闭音乐
	initgraph( 1200, 800 );

	setbkcolor(WHITE);//背景颜色
	//setbkcolor(LIGHTGREEN);//背景颜色
	cleardevice();//背景颜色


	IMAGE img;
	loadimage(&img,"D:\\祝福烟花设计关\\图片素材\\1.jpg",1200,800);
	putimage(0,0,&img);

	mciSendString("open D://祝福烟花设计关//音乐素材//明天会更好.mp3 alias music3",0,0,0);
	mciSendString("play music3",0,0,0);

		setbkmode(0);//清除文字的背景
		
		//祝福烟花设计  字样
	    setcolor(YELLOW);
	    setfont(65, 0, "华文新魏");
	    outtextxy(330, 120, "祝");
	
		
	    outtextxy(430, 100, "福");
	
		
	    outtextxy(530, 80, "烟");
		
		
	    outtextxy(630, 80, "花");
		
		
	    outtextxy(730, 100, "设");
	
		
	    outtextxy(830, 120, "计");
		//警:生命不息,编程不止
	    setcolor(RED);
	    setfont(35, 0, "仿宋");
	    outtextxy(100, 240, "警:生命不息,编程不止");
	
		//选项
		setcolor(BROWN);
		setfont(32,0,"宋体");
	    outtextxy(530, 370, "1	  欣赏烟花");
	    outtextxy(530, 440, "2	  烟花简介");
		outtextxy(530, 510, "3	  开发人员");
		outtextxy(530, 580, "4	  私人定做(收费)");
		
	
		
		 while(1)
		{
			int input;
			input=getch();
			//scanf("%d",&input);
			
			switch(input)
			{
				case '1':
					guodu();break;
				case '2':
					jianjie();break;
				case '3':
					kaifa();break;
				case '4':
					siren();break;
		
			}
		}
	
	
}

void guodu()//到达烟花之前的过渡阶段
{
	
	initgraph(1200,800);
	//system("cls");
	cleardevice();

	setbkcolor(LIGHTBLUE);//背景颜色
	cleardevice();//背景颜色

	//IMAGE img;
	//loadimage(&img,"D:\\祝福烟花设计关\\图片素材\\毛李.jpg",1200,800);
	//putimage(0,0,&img);

	//mciSendString("open D://祝福烟花设计关//音乐素材//同桌的你.mp3 alias music",0,0,0);
	//mciSendString("play music",0,0,0);


	setcolor(RED);

	int x,y;
	
	for(int k=0;k<50;k++)
	{
		x=500+(200*sin(PI*2*k/60));
		y=250+(200*cos(PI*2*k/60));
		//cleardevice();
		setfont(k,0,"宋体");
		outtextxy(x,y,"☆提前祝物联网☆");
		outtextxy(x+50,y+100,"“小石坝”暑假过的愉快");
		//outtextxy(x+100,y+200,"");
		Sleep(40);
	}
	setfont(25,0,"宋体");
	int c=255;
    while(!kbhit())
     {
		setcolor(RGB(c, 0, 0));
        outtextxy(1030,750, "回车下一页→");
        c -= 8;
        if (c < 0) c = 255;
            Sleep(20);
       }
	getchar();getchar();
    cleardevice();

	setbkcolor(BROWN);//背景颜色
	cleardevice();//清屏

	//IMAGE img;
	//loadimage(&img,"D:\\祝福烟花设计关\\图片素材\\毛李.jpg",1200,800);
	//putimage(0,0,&img);

	setcolor(YELLOW);
	
	int z,h;
	
	for(int j=0;j<40;j++)
	{
		z=500+(200*sin(PI*2*j/60));
		h=250+(200*cos(PI*2*j/60));
		cleardevice();
		setfont(j,0,"宋体");
		outtextxy(z,h, "亲爱的");
		outtextxy(z,h+80, "在爱情的故事里");
		outtextxy(z,h+160, "我一无所有,也一无所知");
		outtextxy(z,h+240, "我愿你是我的第一位来客");
		outtextxy(z,h+320, "也是用远主人");
		outtextxy(z,h+400, "伴着你,宠着你--->直到一生一世");
		outtextxy(z,h+480, "                ysmzh 2018.5.20");
		Sleep(40);
	}
	

	getchar();
	cleardevice();//清屏
	mciSendString("close music3",0,0,0);//关闭音乐

	DWORD t1	= timeGetTime();		// 筛选烟花计时
	DWORD st1	= timeGetTime();		// 播放花样计时
	DWORD* pMem = GetImageBuffer();		// 获取窗口显存指针

	for ( int i = 0; i < NUM; i++ )		// 初始化烟花
	{
		Init( i );
	}
	Load();								// 将烟花图片信息加载进相应结构中

	while ( !kbhit() )
	{
		Sleep( 10 );

		// 随机选择 4000 个像素点擦除
		for ( int clr = 0; clr < 1000; clr++ )
		{
			for ( int j = 0; j < 2; j++ )
			{
				int px1 = rand() % 1200;
				int py1 = rand() % 800;

				if ( py1 < 799 )				// 防止越界
					pMem[py1 * 1200 + px1] = pMem[py1 * 1200 + px1 + 1] = BLACK;	// 对显存赋值擦出像素点
			}
		}
		Chose	( t1	);		// 筛选烟花
		Shoot	(		);		// 发射烟花
		Show	( pMem	);		// 绽放烟花
		Style	( st1	);		// 花样发射
	}

	getchar();getchar();
	cleardevice();//清屏
	jiemian();

}
// 初始化烟花参数
void Init( int i )
{
	// 分别为:烟花中心到图片边缘的最远距离、烟花中心到图片左上角的距离 (x、y) 两个分量
	int r[13] = { 120, 120, 155, 123, 130, 147, 138, 138, 130, 135, 140, 132, 155 };
	int x[13] = { 120, 120, 110, 117, 110, 93,  102, 102, 110, 105, 100, 108, 110 };
	int y[13] = { 120, 120, 85,  118, 120, 103, 105, 110, 110, 120, 120, 104, 85  };

	/**** 初始化烟花 *****/

	Fire[i].x		= 0;				// 烟花中心坐标
	Fire[i].y		= 0;
	Fire[i].width	= 240;				// 图片宽
	Fire[i].height	= 240;				// 图片高
	Fire[i].max_r	= r[i];				// 最大半径
	Fire[i].cen_x	= x[i];				// 中心距左上角距离
	Fire[i].cen_y	= y[i];
	Fire[i].show	= false;			// 是否绽放
	Fire[i].dt		= 5;				// 绽放时间间隔
	Fire[i].t1		= timeGetTime();
	Fire[i].r		= 0;				// 从 0 开始绽放

	/**** 初始化烟花弹 *****/

	Jet[i].x		= -240;				// 烟花弹左上角坐标
	Jet[i].y		= -240;
	Jet[i].hx		= -240;				// 烟花弹发射最高点坐标
	Jet[i].hy		= -240;
	Jet[i].height	= 0;				// 发射高度
	Jet[i].t1		= timeGetTime();
	Jet[i].dt		= rand() % 10;		// 发射速度时间间隔
	Jet[i].n		= 0;				// 烟花弹闪烁图片下标
	Jet[i].shoot	= false;			// 是否发射
}


// 加载图片
void Load()
{
/**** 储存烟花的像素点颜色 ****/
	IMAGE fm, gm;
	loadimage( &fm, "D:\\祝福烟花设计关\\图片素材\\flower.jpg", 3120, 240 );

	for ( int i = 0; i < 13; i++ )
	{
		SetWorkingImage( &fm );
		getimage( &gm, i * 240, 0, 240, 240 );
		SetWorkingImage( &gm );

		for ( int a = 0; a < 240; a++ )
			for ( int b = 0; b < 240; b++ )
				Fire[i].xy[a][b] = getpixel( a, b );
	}

/**** 加载烟花弹 ************/
	IMAGE sm;
	loadimage( &sm, "D:\\祝福烟花设计关\\图片素材\\shoot.jpg", 200, 50 );

	for ( i = 0; i < 13; i++ )
	{
		SetWorkingImage( &sm );
		int n = rand() % 5;

		getimage( &Jet[i].img[0], n * 20, 0, 20, 50 );			// 暗
		getimage( &Jet[i].img[1], (n + 5) * 20, 0, 20, 50 );	// 亮
	}

	SetWorkingImage();		// 设置回绘图窗口
}


// 在一定范围内筛选可发射的烟花,并初始化发射参数,输出烟花弹到屏幕,播放声音
void Chose( DWORD& t1 )
{
	DWORD t2 = timeGetTime();

	if ( t2 - t1 > 50 )
	{
		int n = rand() % 20;

		if ( n < 13 && Jet[n].shoot == false && Fire[n].show == false )
		{
			/**** 重置烟花弹,预备发射 *****/
			Jet[n].x		= rand() % 1200;
			Jet[n].y		= rand() % 100 + 600;
			Jet[n].hx		= Jet[n].x;
			Jet[n].hy		= rand() % 400;
			Jet[n].height	= Jet[n].y - Jet[n].hy;
			Jet[n].shoot	= true;
			putimage( Jet[n].x, Jet[n].y, &Jet[n].img[Jet[n].n], SRCINVERT );

			/**** 播放每个烟花弹的声音 *****/
			char c1[50], c2[30], c3[30];
			sprintf( c1, "open D:\\祝福烟花设计关\\音乐素材\\发射声.mp3 alias s%d", n );
			sprintf( c2, "play s%d", n );
			sprintf( c3, "close n%d", n );

			mciSendString( c3, 0, 0, 0 );
			mciSendString( c1, 0, 0, 0 );
			mciSendString( c2, 0, 0, 0 );
		}
		t1 = t2;
	}
}

// 扫描烟花弹并发射
void Shoot()
{
	for ( int i = 0; i < 13; i++ )
	{
		Jet[i].t2 = timeGetTime();

		if ( Jet[i].t2 - Jet[i].t1 > Jet[i].dt && Jet[i].shoot == true )
		{
			/**** 烟花弹的上升 *****/
			putimage( Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT );

			if ( Jet[i].y > Jet[i].hy )
			{
				Jet[i].n++;
				Jet[i].y -= 5;
			}

			putimage( Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT );

			/**** 上升到高度的 3 / 4,减速 *****/
			if ( (Jet[i].y - Jet[i].hy) * 4 < Jet[i].height )
				Jet[i].dt = rand() % 4 + 10 ;

			/**** 上升到最大高度 *****/
			if ( Jet[i].y <= Jet[i].hy )
			{
				// 播放爆炸声
				char c1[50], c2[30], c3[30];
				//sprintf( c1, "open D://祝福烟花设计关//图片素材//爆炸声.mp3 alias n%d", i );
				sprintf( c2, "play n%d", i );
				sprintf( c3, "close s%d", i );

				mciSendString( c3, 0, 0, 0 );
				mciSendString( c1, 0, 0, 0 );
				mciSendString( c2, 0, 0, 0 );

				putimage( Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT );	// 擦掉烟花弹
				Fire[i].x = Jet[i].hx + 10;											// 在烟花弹中间爆炸
				Fire[i].y = Jet[i].hy;												// 在最高点绽放
				Fire[i].show = true;					// 开始绽放
				Jet[i].shoot = false;					// 停止发射
			}
			Jet[i].t1 = Jet[i].t2;
		}
	}
}

// 显示花样
void Style( DWORD& st1 )
{
	DWORD st2 = timeGetTime();

	if ( st2 - st1 > 266000 )		// 一首歌的时间
	{
		// 心形坐标
		int x[13] = { 60, 75, 91, 100, 95, 75, 60, 45, 25, 15, 25, 41, 60 };
		int y[13] = { 65, 53, 40, 22, 5, 4, 20, 4, 5, 22, 40, 53, 65 };
		for ( int i = 0; i < NUM; i++ )
		{
			cleardevice();
			/**** 规律分布烟花弹 ***/
			Jet[i].x		= x[i] * 10;
			Jet[i].y		= ( y[i] + 75 ) * 10;
			Jet[i].hx		= Jet[i].x;
			Jet[i].hy		= y[i] * 10;
			Jet[i].height	= Jet[i].y - Jet[i].hy;
			Jet[i].shoot	= true;
			Jet[i].dt		= 7;
			putimage( Jet[i].x, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINVERT );	// 显示烟花弹

			/**** 设置烟花参数 ***/
			Fire[i].x		= Jet[i].x + 10;
			Fire[i].y		= Jet[i].hy;
			Fire[i].show	= false;
			Fire[i].r		= 0;

			/**** 播放发射声音 ***/
			char c1[50], c2[30], c3[30];
			sprintf( c1, "open D://祝福烟花设计关//音乐//发射声.mp3 alias s%d", i );
			sprintf( c2, "play s%d", i );
			sprintf( c3, "close n%d", i );

			mciSendString( c3, 0, 0, 0 );
			mciSendString( c1, 0, 0, 0 );
			mciSendString( c2, 0, 0, 0 );
		}
		st1 = st2;
	}
}

// 绽放烟花
void Show( DWORD* pMem )
{
	// 烟花个阶段绽放时间间隔,制作变速绽放效果
	int drt[16] = { 5, 5, 5, 5, 5, 6, 25, 25, 25, 25, 55, 55, 55, 55, 55 };

	for ( int i = 0; i < NUM; i++ )
	{
		Fire[i].t2 = timeGetTime();

		// 增加爆炸半径,绽放烟花,增加时间间隔做变速效果
		if ( Fire[i].t2 - Fire[i].t1 > Fire[i].dt && Fire[i].show == true )
		{
			if ( Fire[i].r < Fire[i].max_r )
			{
				Fire[i].r++;
				Fire[i].dt = drt[Fire[i].r / 10];
				Fire[i].draw = true;
			}

			if ( Fire[i].r >= Fire[i].max_r - 1 )
			{
				Fire[i].draw = false;
				Init( i );
			}
			Fire[i].t1 = Fire[i].t2;
		}

		// 如果该号炮花可爆炸,根据当前爆炸半径画烟花,颜色值接近黑色的不输出。
		if ( Fire[i].draw )
		{
			for ( double a = 0; a <= 6.28; a += 0.01 )
			{
				int x1 = (int)( Fire[i].cen_x + Fire[i].r * cos(a) );				// 相对于图片左上角的坐标
				int y1 = (int)( Fire[i].cen_y - Fire[i].r * sin(a) );

				if ( x1 > 0 && x1 < Fire[i].width && y1 > 0 && y1 < Fire[i].height )	// 只输出图片内的像素点
				{
					int b = Fire[i].xy[x1][y1] & 0xff;
					int g = ( Fire[i].xy[x1][y1] >> 8 ) & 0xff;
					int r = ( Fire[i].xy[x1][y1] >> 16 );

					// 烟花像素点在窗口上的坐标
					int xx = (int)( Fire[i].x + Fire[i].r * cos(a) );
					int yy = (int)( Fire[i].y - Fire[i].r * sin(a) );

					// 较暗的像素点不输出、防止越界
					if ( r > 0x20 && g > 0x20 && b > 0x20 && xx > 0 && xx < 1200 && yy > 0 && yy < 800 )
						pMem[yy * 1200 + xx] = BGR( Fire[i].xy[x1][y1] );	// 显存操作绘制烟花
				}
			}
			Fire[i].draw = false;
		}
	}
}


void jianjie() //烟花简介
{
	initgraph(1200,800);
	mciSendString("close music3",0,0,0);//关闭音乐
	//IMAGE img;
	//loadimage(&img,"D:\\祝福烟花设计关\\图片素材\\毛李.jpg",1200,800);
	//putimage(0,0,&img);

	mciSendString("open D://祝福烟花设计关//音乐素材//方向.mp3 alias music2",0,0,0);
	mciSendString("play music2",0,0,0);


	//cleardevice();

	setbkcolor(GREEN);//背景颜色
	cleardevice();//背景颜色

	
	setcolor(YELLOW);
	
	int z,h;
	
	for(int j=0;j<30;j++)
	{
		z=10+(150*sin(PI*2*j/60));
		h=10+(150*cos(PI*2*j/60));
		
		cleardevice();

		setfont(j,0,"楷体");
		outtextxy(z,h,"烟花发明——李畋传人的智慧");
		outtextxy(10,170,"烟花产生的背景");
		outtextxy(10,350,"电影");
		outtextxy(10,400,"诗句");
		Sleep(50);
	}
	
		setfont(30,0,"楷体");
		outtextxy(10,0,"烟花发明——李畋传人的智慧");

		setfont(20,0,"楷体");
		outtextxy(10,40,"  据民国时《浏阳县志》记载,唐玄宗时期,也就是花炮始祖李畋的晚年阶段,烟花才开始问世。李畋借用“硝磺爆竹”的原理,");
		outtextxy(10,60,"“筑彩药于筒,上不封泥,勿爆而喷也。”这种彩色火花便是最初的“竹筒烟花”了。尽管这种烟花是用竹筒制作的,比较粗糙,");
		outtextxy(10,80,"也比较笨重,但毕竟是种新的发明,是个划时代的伟大创造。烟花鞭炮的诞生和发展过程,充分体现了以花炮始祖李畋为代表的历");
		outtextxy(10,100,"代花炮人的无穷智慧。现在,花炮主产区的浏阳、醴陵和江西的上栗萍乡等地,凡是从事花炮生产的人都公认烟花是李畋最先发明");
		outtextxy(10,120,"的,尊李畋为花炮祖师。");

		setfont(30,0,"楷体");
		outtextxy(10,170,"烟花产生的背景");
	
		setfont(20,0,"楷体");
		outtextxy(10,210,"  烟花又称烟火、焰火,在中国发明较早,主要用于军事上、盛大的典礼或表演中,而现代全球唯一能在同天同活动里施放烟花的");
		outtextxy(10,230,"活动则为跨年(除夕夜)活动。《後武林旧事》记有宋孝宗观海潮放烟火的情景说:“淳熙十年(公元1183年)八月十八日,上诣");
		outtextxy(10,250,"德寿宫,共请两殿往浙江观潮……管军命於江面分布五阵,乘骑弄旗,标枪舞刀,如履平地。点放五色烟炮满江、及烟收、炮息,");
		outtextxy(10,270,"则诸船尽藏,不见一只。”宋理宗(公元1225年至1264年)时,周密在《齐东野语》中也记载了当时皇宫观看烟花的故事。到元、");
		outtextxy(10,290,"明年间,许多诗人、文学家都有有关鞭爆烟花这方面的记述。自清代以来鞭爆烟花使用普遍。");

		setfont(30,0,"楷体");
		outtextxy(10,350,"电影:《烟花》");

		setfont(30,0,"楷体");
		outtextxy(10,400,"诗句");

		setfont(30,0,"楷体");
		outtextxy(10,440,"1.火树银花合,星桥铁锁开——苏味道,《正月十五夜》");
		outtextxy(10,470,"2.火树银花不夜天.——柳亚子,《浣溪沙》");
		outtextxy(10,500,"3.东风夜放花千树,更吹落、星如雨。——辛弃疾,《青玉案 ·元夕》");

		setfont(40,0,"楷体");
		outtextxy(245,540,"烟火戏");
		outtextxy(750,540,"赠放烟火者");

		setfont(20,0,"楷体");
		outtextxy(280,590,"瞿佑");
		outtextxy(825,590,"赵孟頫");

		setfont(30,0,"楷体");
		outtextxy(80,610,"天花无数月中开,五采祥云绕绛台。");
		outtextxy(80,640,"堕地忽惊星彩散,飞空旋作雨声来。");
		outtextxy(80,670,"蛾儿雪柳黄金缕,笑语盈盈暗香去。");
		outtextxy(80,700,"怒撞玉斗翻晴雪,勇踏金轮起疾雷。");
		outtextxy(80,730,"更漏已深人渐散,闹竿挑得彩灯回。");

		outtextxy(630,610,"人间巧艺夺天工,炼药燃灯清昼同。");
		outtextxy(630,640,"柳絮飞残铺地白,桃花落尽满阶红。");
		outtextxy(630,670,"后夜再翻花上锦,不愁零乱向东风。");
		
		setcolor(RED);
		setfont(25,0,"宋体");
		int c=255;
        while(!kbhit())
        {
            setcolor(RGB(c, 0, 0));
            outtextxy(1050,750, "回车返回→");
            c -= 8;
            if (c < 0) c = 255;
            Sleep(20);
        }
		//getchar();getchar();
		jiemian();
}

void kaifa()  //开发人员表
{
	IMAGE img;
	loadimage(&img,"D:\\祝福烟花设计关\\图片素材\\2.jpg",1200,800);
	putimage(0,0,&img);
	
	mciSendString("close music3",0,0,0);//关闭音乐

	mciSendString("open D://祝福烟花设计关//音乐素材//同桌的你.mp3 alias music1",0,0,0);
	mciSendString("play music1",0,0,0);

	setbkmode(0);//消除汉字的背景
	
	setcolor(LIGHTGREEN);
	setfont(40,0,"楷体");
	outtextxy(215,160,"学号");
	outtextxy(480,160,"姓名");
	outtextxy(750,160,"个人喜好");

	setfont(40,0,"华文新魏");
	outtextxy(130,290,"201805080128");
	outtextxy(450,290,"毛自怀");
	outtextxy(620,290,"励志做个码农,主写代码");
	
	outtextxy(130,420,"201805080109");
	outtextxy(450,420,"沈思怡");
	outtextxy(620,420,"热爱打字,主写word文档");

	outtextxy(130,560,"201805080147");
	outtextxy(450,560,"杨兆有");
	outtextxy(620,560,"热爱女生,主做画图工作");

	setlinecolor(LIGHTGRAY);
	line(100,120,1080,120);//一横
	line(100,120,100,660);//一竖
	line(100,660,1080,660);//五横
	line(1080,120,1080,660);//四竖

	line(100,250,1080,250);//二横
	line(100,380,1080,380);//三横
	line(100,520,1080,520);//四横

	line(425,120,425,660);//二竖
	line(610,120,610,660);//三竖

	setcolor(RED);
	setfont(25,0,"宋体");
	int c=255;
    while(!kbhit())
     {
		setcolor(RGB(c, 0, 0));
        outtextxy(1050,750, "回车返回→");
        c -= 8;
        if (c < 0) c = 255;
            Sleep(20);
       }
	getchar();getchar();
	jiemian();
}

void siren()
{
	mciSendString("close music3",0,0,0);//关闭音乐

	initgraph(1200,800);
	cleardevice();


	setbkcolor(LIGHTBLUE);//背景颜色
	cleardevice();//背景颜色



	//mciSendString("open D://祝福烟花设计关//音乐素材//同桌的你.mp3 alias music",0,0,0);
	//mciSendString("play music",0,0,0);


	setcolor(YELLOW);

	int x,y;
	
	for(int i=0;i<50;i++)
	{
		x=300+(200*sin(PI*2*i/60));
		y=200+(200*cos(PI*2*i/60));
		cleardevice();
		setfont(i,0,"宋体");
		outtextxy(x,y,"☆941225960☆");
		outtextxy(x+50,y+100,"加我QQ,详谈");
	
		Sleep(60);
	}
	IMAGE imk;
	loadimage(&imk,"D:\\祝福烟花设计关\\图片素材\\5.jpg",1200,800);
	putimage(0,0,&imk);

	setbkmode(0);//消除汉字的背景

	outtextxy(x,y,"☆941225960☆");
	outtextxy(x+50,y+100,"加我QQ,详谈");

	setcolor(BLUE);
	setfont(25,0,"宋体");
	int c=255;
    while(!kbhit())
     {
		setcolor(RGB(c, 0, 0));
        outtextxy(1050,750, "回车返回→");
        c -= 8;
        if (c < 0) c = 255;
            Sleep(20);
       }

	jiemian();
}




void add_user(void)//注册账号
{  
    FILE *fp;  
    
    int i;  
    char str[101];  
    system("cls");  
    printf("\n");
    printf("\t\t\t请输入账号:\n\n\t\t\t   ");  
    scanf("%s",str);
	if(strlen(str)>16)
	{
		printf("\t\t账号长度大于16位,请重新输入\n");
		system("PAUSE");  
        system("cls");  
        printf("\n");  
        
        add_user();
        
		return;
	}	
    for(i=0;i<user_count;i++)
        if(strcmp(user[i].ID,str)==0)
		{  
            printf("\t\t该账号已被注册,请重新注册\n\n\t\t\t   ");  
            system("PAUSE");//按任意键继续
			  
            add_user();  
            
        }
    strcpy(user[i].ID,str);  
    printf("\t\t\t请输入密码:\n\n\t\t\t   ");
	scanf("%s",str);
	while(strlen(str)>16)
	{
		system("cls");
		printf("\n");
		printf("\t\t密码长度大于16位,请重新输入\n\n");
		printf("\t\t\t请输入密码:\n\n\t\t\t   ");
		scanf("%s",str);	
	} 
    strcpy(user[i].password,str);  
    printf("\t\t\t请再次输入密码:\n\n\t\t\t   ");  
    scanf("%s",str);  
    if(strcmp(user[i].password,str)!=0)
	{  
        printf("\t\t两次密码不一致,请重新申请\n\n\t\t\t");  
        system("PAUSE");  
        system("cls");  
        printf("\n");
		  
        add_user();
        
        return;
    }
    save_user();//将账号写入磁盘 
    printf("\t\t\t账号申请成功\n\n\t\t\t");  
    user_count++;
    system("PAUSE");
    
	first();   
} 

void load_user(void)//将账号读入内存
{  
	FILE *fp;
    fp=fopen("D://祝福烟花设计关//账号.txt","r"); 
    while(fscanf(fp,"%s",user[user_count].ID)!=EOF)
	{  
        fscanf(fp,"%s",user[user_count].password); 
        user_count++;
    }
    
    fclose(fp);
}

void save_user(void)//将账号写入磁盘
{
    int i;
    FILE *fp;  
    fp=fopen("D://祝福烟花设计关//账号.txt","w");
	
    for(i=0;i<=user_count;i++)
	{
        fprintf(fp,"%s\n",user[i].ID);  
        fprintf(fp,"%s\n",user[i].password); 
    }  
    
    fclose(fp);  
} 

void login_user(void)//登录账号
{
	int i,flag=0;
	char str[20];
	system("cls");  
	printf("\n");
	printf("\t\t\t请输入账号:\n\n\t\t\t   ");
	scanf("%s",str);
	for(i=0;i<user_count;i++)
		if(strcmp(user[i].ID,str)==0)
		{
			flag=1;
			break;
		}
	if(flag==0)
	{
		printf("\t\t该账号不存在,请重新登录\n\n\t\t\t");
		system("PAUSE");  
        system("cls");  
        printf("\n");
        
        login_user(); 
        
        return;
	}
	printf("\t\t\t请输入密码:\n\n\t\t\t   ");
	scanf("%s",str);
	while(strcmp(user[i].password,str)!=0)
	{
		system("cls");  
        printf("\n");
		printf("\t\t\t密码错误,请重新输入\n\n\t\t\t\t");
		scanf("%s",str);	
	}
	printf("\t\t\t登录成功\n\n\t\t\t");
	
	jiemian();
	
}

void reset_password(void)//修改密码
{
	int i,flag=0;
	char str[20];
	system("cls");  
	printf("\n");
	printf("\t\t\t请输入账号:\n\n\t\t\t   ");
	scanf("%s",str);
	for(i=0;i<user_count;i++)
		if(strcmp(user[i].ID,str)==0)
		{
			flag=1;
			break;
		}
	if(flag==0)
	{
		printf("\t\t该账号不存在,请重新登录\n\n\t\t\t");
		system("PAUSE");  
        system("cls");  
        printf("\n");
        
        reset_password(); 
        
        return;
	}
	printf("\t\t\t请输入密码:\n\n\t\t\t   ");
	scanf("%s",str);
	while(strcmp(user[i].password,str)!=0)
	{
		system("cls");  
        printf("\n");
		printf("\t\t\t密码错误,请重新输入\n\n\t\t\t\t");
		scanf("%s",str);	
	}
	printf("\t\t\t请输入新密码\n\n\t\t\t   "); 
	scanf("%s",str);
	while(strlen(str)>16)
	{
		printf("\t\t密码长度大于16位,请重新输入\n");
		system("PAUSE");  
        system("cls");  
        printf("\n");  
        scanf("%s",str);
	} 
	
    strcpy(user[i].password,str); 
	 
    printf("\t\t\t请再次输入密码:\n\n\t\t\t   ");  
    scanf("%s",str);  
    while(strcmp(user[i].password,str)!=0)
	{  
        printf("\t\t两次密码不一致,请重新申请\n\n\t\t\t");  
        system("PAUSE");  
        system("cls");  
        printf("\n");  
        scanf("%s",str);
    } 
    
    save_user();
    
	printf("\t\t\t修改成功\n\n\t\t\t"); 
	system("PAUSE");
	
	first();
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

maosql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值