学生通讯录管理系统(c++链表easyx界面)

温馨提示:本内容是本人大一时独立完成的C++作业,时间有限,做的很粗糙,并且因为之前给一位网友解答,将代码中的背景图片全部换成黑色背景,如果要使用,请记得自己更换成自己喜欢的背景图片。

IMAGE img;
//2.把图片保存到定义好的变量load中去加载 
//报错解决方法:在字符串前面加上大写L 2.用一个宏_T()包含 3.项目-属性-配置属性-常规-字符集-改为多字节字符集
loadimage(&img, "bg.jpg",1080,700,1);
//loadimage(&img, _T("IMAGE"), _T("bg.jpg"));
putimage(0, 0, &img);

并且每个功能结束后都可以按ESC返回主页面(如果没有反应,请将光标放至控制台窗口处)。

也希望学有余力的同学可以使用QT去优化这个程序(up是在太忙~)。有问题欢迎私信... 2024.6.11

看过我博客的小伙伴知道,先前发过有关通讯录的博客,从结构体数组到链表,如今也是终于完成了界面化,小组作业也是终于完成了,现在把我的最终结果分享出来(由于时间有限,前期确实浪费了很多时间,导致本管理系统并不是很完美,还有需要改进的地方)

先说说不足(有能力的小伙伴可以自行添加功能):1.创建通讯录时没有对学号进行判重。

2.输入数据有限,最多输入20位同学的信息,有兴趣的同学可以添加上一页,下一页等功能。

3.可以增加文件读入和输出的功能,使程序更加便捷。

说明:

1.使用Visual studio 2019 使用easyx库图形化界面(没有的同学可以去官网下载,找到合适的版本,下载很快的)

2.已经完成了控制台(黑框)程序,具体可参考我之前的博客。

3.把字符集调为多字符集!!!!!(方法vs点击项目->属性->高级->字符集->多字符集)

接下来是源码:(注意loadimage是插入背景图片的函数,如果需要自己插入背景图片,把我的源码中的路径改为自己图片的路径,注意复制过来的路径中的“\\”需要改为‘/’这样才可以)

4.创建通讯录时当你录入结束时全部信息输入0即可

5.进入一个功能后,按ESC键可返回主页面

#include<iostream>
#undef UNICODE
#include <conio.h>
#include<stdio.h>
#include<graphics.h> //包含图形库头文件
#include<mmsyscom.h>//包含多媒体库头文件
#include<cstring>
using namespace std;
struct Student {
	char s_number[5];//学号
	char s_name[9];//姓名
	char s_sex[3];//性别
	char s_phone[12];//电话
	char s_school[17];//所属学院
	Student* next;
};
Student* head = NULL;
unsigned int count;
void nodoLine()//表格绘制
{
	setlinecolor(BLACK);
	setlinestyle(PS_SOLID, 3);
	line(0, 2, 1000, 2);
	line(0, 6, 1000, 6);
	line(0, 30, 1000, 30);
	line(0, 34, 1000, 34);
	line(2, 0, 2, 565);
	line(6, 0, 6, 565);
	line(997, 0, 997, 565);
	line(993, 0, 993, 565);
	line(0, 567, 1000, 567);
	line(0, 565, 1000, 565);
	setlinestyle(PS_SOLID, 1);
	line(204, 0, 204, 565);
	line(404, 0, 404, 565);
	line(604, 0, 604, 565);
	line(804, 0, 804, 565);
	for (int i = 0; i < 21; i++)
	{
		line(0, 60 + 25 * i, 1000, 60 + 25 * i);
	}
	settextcolor(RED);
	outtextxy(10, 10, "学号");
	outtextxy(210, 10, "姓名");
	outtextxy(410, 10, "性别");
	outtextxy(610, 10, "电话");
	outtextxy(810, 10, "所属学院");
	settextcolor(BLACK);
}
Student* mycreat() {// 创建通讯录信息函数定义 
	Student* head, * p1, * p2;
	head = NULL;
	int n = 0;
	p1 = p2 = new Student;
	InputBox(p1->s_number, 5, "请输入学生学号");
	InputBox(p1->s_name, 9, "请输入学生姓名");
	InputBox(p1->s_sex, 3, "请输入学生性别");
	InputBox(p1->s_phone, 12, "请输入学生手机号");
	InputBox(p1->s_school, 17, "请输入学生所属学院");
	while (p1->s_number[0] != '0') {
		n = n + 1;
		if (n == 1)head = p1;
		else p2->next = p1;
		p2 = p1;
		p1 = new Student;
		InputBox(p1->s_number, 5, "请输入学生学号");
		InputBox(p1->s_name, 9, "请输入学生姓名");
		InputBox(p1->s_sex, 3, "请输入学生性别");
		InputBox(p1->s_phone, 12, "请输入学生手机号");
		InputBox(p1->s_school, 17, "请输入学生所属学院");
	}
	p2->next = NULL;
	settextstyle(25, 0, "楷体");
	settextcolor(BLACK);
	setbkmode(TRANSPARENT);
	char arr[] = "已成功创建一个通讯录";
	outtextxy(440, 300, arr);
	return (head);
}
void mydisplay(Student* head) {// 显示通讯录信息函数定义 
	Student* p1;
	p1 = head;
	unsigned int i;
	i = 37;
	nodoLine();
	while (p1 != NULL) {
		outtextxy(13, i, p1->s_number);
		outtextxy(213, i, p1->s_name);
		outtextxy(413, i, p1->s_sex);
		outtextxy(613, i, p1->s_phone);
		outtextxy(813, i, p1->s_school);//文字输出形式
		i += 25;
		p1 = p1->next;
	}
}
void search1(Student* head) {//学号查找
	char num[5];
	Student* p;
	p = head;
	InputBox(num, 5, "请输入需要查找学生的学号");
	bool finded = false;
	while (p != NULL) {
		if (strcmp(p->s_number, num) == 0) {
			finded = true;
			nodoLine();
			outtextxy(13, 37, p->s_number);
			outtextxy(213, 37, p->s_name);
			outtextxy(413, 37, p->s_sex);
			outtextxy(613, 37, p->s_phone);
			outtextxy(813, 37, p->s_school);
		}
		p = p->next;
	}
	if (!finded) {
		settextstyle(25, 0, "楷体");
		settextcolor(BLACK);
		setbkmode(TRANSPARENT);
		char arr[] = "没有查询到该同学的信息";
		outtextxy(440, 300, arr);
	}

}
void search2(Student* head) {//姓名查找
	char name[9];
	Student* p;
	p = head;
	InputBox(name, 9, "请输入需要查找学生的姓名");
	bool finded = false;
	while (p != NULL) {
		if (strcmp(p->s_name, name) == 0) {
			finded = true;
			nodoLine();
			outtextxy(13, 37, p->s_number);
			outtextxy(213, 37, p->s_name);
			outtextxy(413, 37, p->s_sex);
			outtextxy(613, 37, p->s_phone);
			outtextxy(813, 37, p->s_school);
		}
		p = p->next;
	}
	if (!finded) {
		settextstyle(25, 0, "楷体");
		settextcolor(BLACK);
		setbkmode(TRANSPARENT);
		char arr[] = "没有查询到该同学的信息";
		outtextxy(440, 300, arr);
	}
}
Student* myadd(Student* head) {// 添加通讯录信息函数定义
	Student* p0, * p1, * p2;
	p1 = head;
	p2 = new Student;
	p0 = new Student; // 插入节点
	InputBox(p0->s_number, 5, "请输入需要添加学生学号");
	InputBox(p0->s_name, 9, "请输入需要添加学生姓名");
	InputBox(p0->s_sex, 3, "请输入需要添加学生性别");
	InputBox(p0->s_phone, 12, "请输入需要添加学生手机号");
	InputBox(p0->s_school, 17, "请输入需要添加学生所属学院");
	Student* p;
	p = head;
	bool finded = false;
	while (p != NULL) {
		if (strcmp(p->s_number, p0->s_number) == 0) {
			finded = true;
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arr[] = "已存在该同学的信息,请检查输入是否有误";
			outtextxy(380, 300, arr);
			break;
		}
		p = p->next;
	}
	if (!finded) {
		if (head == NULL) {
			head = p0; p0->next = NULL;
		}
		else
			while ((int)(p0->s_number) > (int)(p1->s_number) && p1->next != NULL)
			{
				p2 = p1;
				p1 = p1->next;// p0,p1和p2位置: p2->p1->p0
			}

		if ((int)(p0->s_number) <= (int)(p1->s_number))
		{
			if (p1 == head)
			{// 头部前段插入 p0和p1位置: p0->p1->...
				head = p0;
				p0->next = p1;
			}
			else
			{// 插入中间节点 p0,p1和p2位置: p2-> p0 -> p1
				p2->next = p0;
				p0->next = p1;
			}
		}
		else
		{   // 尾部插入节点 p0,p1和p2位置: p2->p1->p0->NULL
			p1->next = p0;
			p0->next = NULL;
		}
		settextstyle(25, 0, "楷体");
		settextcolor(BLACK);
		setbkmode(TRANSPARENT);
		char arr[] = "已成功添加该学生的信息";
		outtextxy(440, 300, arr);
	}
	return head;
}
void mymodify(Student* head) {// 修改通讯录信息函数定义 
	char ans[2];
	InputBox(ans, 2, "请先查询需要修改信息的同学(1.学号 2.姓名)");
	if (ans[0] == '2') {
		char ans2[2];
		char name[9];
		Student* p;
		p = head;
		InputBox(name, 9, "请输入需要查找学生的姓名");
		bool finded = false;
		while (p != NULL) {
			if (strcmp(p->s_name, name) == 0) {
				finded = true;
				nodoLine();
				outtextxy(13, 37, p->s_number);
				outtextxy(213, 37, p->s_name);
				outtextxy(413, 37, p->s_sex);
				outtextxy(613, 37, p->s_phone);
				outtextxy(813, 37, p->s_school);
				InputBox(ans2, 2, "请输入需要修改的信息(1.学号 2.姓名 3.性别 4.电话 5.学院)");
				switch (ans2[0]) {
				case '1':InputBox(p->s_number, 5, "请输入修改后的学号"); break;
				case '2':InputBox(p->s_name, 9, "请输入修改后的姓名"); break;
				case '3':InputBox(p->s_sex, 3, "请输入修改后的性别"); break;
				case '4':InputBox(p->s_phone, 12, "请输入修改后的电话"); break;
				case '5':InputBox(p->s_school, 17, "请输入修改后的学院"); break;
				}
				break;
			}
			p = p->next;
		}
		settextstyle(25, 0, "楷体");
		settextcolor(BLACK);
		setbkmode(TRANSPARENT);
		char arr[] = "已成功修改该学生的信息";
		outtextxy(440, 600, arr);
		if (!finded) {
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arr[] = "没有查询到该同学的信息";
			outtextxy(440, 600, arr);
		}
	}
	else if (ans[0] == '1') {
		char ans3[2];
		char number[9];
		Student* p;
		p = head;
		InputBox(number, 5, "请输入需要查找学生的学号");
		bool finded = false;
		while (p != NULL) {
			if (strcmp(p->s_number, number) == 0) {
				finded = true;
				nodoLine();
				outtextxy(13, 37, p->s_number);
				outtextxy(213, 37, p->s_name);
				outtextxy(413, 37, p->s_sex);
				outtextxy(613, 37, p->s_phone);
				outtextxy(813, 37, p->s_school);
				InputBox(ans3, 2, "请输入需要修改的信息(1.学号 2.姓名 3.性别 4.电话 5.学院)");
				switch (ans3[0]) {
				case '1':InputBox(p->s_number, 5, "请输入修改后的学号"); break;
				case '2':InputBox(p->s_name, 9, "请输入修改后的姓名"); break;
				case '3':InputBox(p->s_sex, 3, "请输入修改后的性别"); break;
				case '4':InputBox(p->s_phone, 12, "请输入修改后的电话"); break;
				case '5':InputBox(p->s_school, 17, "请输入修改后的学院"); break;
				}
				break;
			}
			p = p->next;
		}
		settextstyle(25, 0, "楷体");
		settextcolor(BLACK);
		setbkmode(TRANSPARENT);
		char arr[] = "已成功修改该学生的信息";
		outtextxy(440, 600, arr);
		if (!finded) {
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arr[] = "没有查询到该同学的信息";
			outtextxy(440, 600, arr);
		}
	}
}
Student* mydelete(Student* head) {// 删除通讯录信息函数定义
	char ansdel[2];
	char c[2];
	InputBox(ansdel, 2, "请选择根据何种方式确定需要删除学生(1.学号 2.姓名)");
	if (ansdel[0] == '1') {
		char delnumber[5];
		InputBox(delnumber, 5, "请输入需要删除的学生学号");
		struct Student* p1, * p2 = NULL;
		if (head == NULL)
		{
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arr[] = "通讯录为空";
			outtextxy(440, 600, arr);
		}
		p1 = head;
		while (strcmp(delnumber, p1->s_number) != 0 && p1->next != NULL)
		{
			p2 = p1; p1 = p1->next;
		}
		if (strcmp(delnumber, p1->s_number) == 0)
		{
			nodoLine();
			outtextxy(13, 37, p1->s_number);
			outtextxy(213, 37, p1->s_name);
			outtextxy(413, 37, p1->s_sex);
			outtextxy(613, 37, p1->s_phone);
			outtextxy(813, 37, p1->s_school);
			InputBox(c, 2, "确定要删除该同学的信息吗?(是:y,否:n)");
			if (c[0] == 'n') return head;
			else {
				if (strcmp(delnumber, head->s_number) == 0)head = p1->next;
				else p2->next = p1->next;
			}
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arrdel[] = "已成功删除该学生的信息";
			outtextxy(440, 600, arrdel);
		}
		else {
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arrdel2[] = "通讯录中没有录入该同学的信息";
			outtextxy(440, 600, arrdel2);
		}
		return head;

	}
	else if (ansdel[0] == '2') {
		char delname[9];
		InputBox(delname, 9, "请输入需要删除的学生姓名");
		struct Student* p1, * p2 = NULL;
		if (head == NULL)
		{
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arr[] = "通讯录为空";
			outtextxy(440, 600, arr);
		}
		p1 = head;
		while (strcmp(delname, p1->s_name) != 0 && p1->next != NULL)
		{
			p2 = p1; p1 = p1->next;
		}
		if (strcmp(delname, p1->s_name) == 0)
		{
			nodoLine();
			outtextxy(13, 37, p1->s_number);
			outtextxy(213, 37, p1->s_name);
			outtextxy(413, 37, p1->s_sex);
			outtextxy(613, 37, p1->s_phone);
			outtextxy(813, 37, p1->s_school);
			InputBox(c, 2, "确定要删除该同学的信息吗?(是:y,否:n)");
			if (c[0] == 'n') return head;
			else {
				if (strcmp(delname, head->s_name) == 0)head = p1->next;
				else p2->next = p1->next;
			}
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arrdel[] = "已成功删除该学生的信息";
			outtextxy(440, 600, arrdel);
		}
		else {
			settextstyle(25, 0, "楷体");
			settextcolor(BLACK);
			setbkmode(TRANSPARENT);
			char arrdel2[] = "通讯录中没有录入该同学的信息";
			outtextxy(440, 600, arrdel2);
		}
		return head;

	}
}
void fuzhi(char a[], char b[], int n) {//数组复制函数
	for (int i = 0; i < n; i++)
	{
		a[i] = b[i];
	}

}
void mysort(Student* head) {// 通讯录信息排序函数定义 
	Student* p;
	char temp[5], temp2[9], temp3[3], temp4[12], temp5[17];
	int flag;
	while (true) {
		flag = 0;
		for (p = head; p->next != NULL; p = p->next) {
			if (strcmp(p->s_number, p->next->s_number) == 1) {
				fuzhi(temp, p->s_number, 5);
				fuzhi(p->s_number, p->next->s_number, 5);
				fuzhi(p->next->s_number, temp, 5);
				fuzhi(temp2, p->s_name, 9);
				fuzhi(p->s_name, p->next->s_name, 9);
				fuzhi(p->next->s_name, temp2, 9);
				fuzhi(temp3, p->s_sex, 3);
				fuzhi(p->s_sex, p->next->s_sex, 3);
				fuzhi(p->next->s_sex, temp3, 3);
				fuzhi(temp4, p->s_phone, 12);
				fuzhi(p->s_phone, p->next->s_phone, 12);
				fuzhi(p->next->s_phone, temp4, 12);
				fuzhi(temp5, p->s_school, 17);
				fuzhi(p->s_school, p->next->s_school, 17);
				fuzhi(p->next->s_school, temp5, 17);
				flag = 1;
			}
		}
		if (flag == 0)break;
	}
	settextstyle(25, 0, "楷体");
	settextcolor(BLACK);
	setbkmode(TRANSPARENT);
	char arr[] = "已完成按照学号(从小到大)排序";
	outtextxy(440, 300, arr);
}
void showmenu() {//主页面函数
	initgraph(1080, 700);//创建窗口
	//画东西
	//fillcircle(320, 240, 10);
	//显示图片,首先把图片资源放到我们的项目文件夹中
	//1.定义图片变量
	//IMAGE img;
	//2.把图片保存到定义好的变量load中去加载 
	//报错解决方法:在字符串前面加上大写L 2.用一个宏_T()包含 3.项目-属性-配置属性-常规-字符集-改为多字节字符集
	//loadimage(&img, "JPG", MAKEINTRESOURCE("IDR_JPG1"));
	loadimage(NULL, _T("IMAGE"), _T("Background"));
	//putimage(0, 0, &img);
	//3.通过颜色设置背景
	//setbkcolor(YELLOW);
	//cleardevice;
	settextstyle(25, 0, "楷体");
	settextcolor(BLACK);
	setbkmode(TRANSPARENT);
	char arr[] = "学生通讯录管理系统";
	outtextxy(440, 150, arr);
	//创建按钮,并且选中可以看到红框,函数待写
	//创建通讯录
	MOUSEMSG m;
	settextstyle(25, 0, "楷体");
	settextcolor(BLACK);
	setbkmode(TRANSPARENT);
	char arrzuozhe[] = "作者: 神奇的海子";
	outtextxy(700, 225, arrzuozhe);
	settextstyle(15, 0, "楷体");
	settextcolor(BLACK);
	setbkmode(TRANSPARENT);
	char arrbanben[] = "版本: 2022(1.0)";
	outtextxy(700, 275, arrbanben);
	setfillcolor(BLUE);
	fillrectangle(450, 200, 650, 250);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 220, "创建通讯录");
	//显示通讯录
	setfillcolor(BLUE);
	fillrectangle(450, 255, 650, 305);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 275, "显示通讯录");
	//查询通讯录
	setfillcolor(BLUE);
	fillrectangle(450, 310, 650, 360);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 330, "查询通讯录");
	//添加通讯录
	setfillcolor(BLUE);
	fillrectangle(450, 365, 650, 415);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 385, "添加通讯录");
	//修改通讯录
	setfillcolor(BLUE);
	fillrectangle(450, 420, 650, 470);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 440, "修改通讯录");
	//删除通讯录
	setfillcolor(BLUE);
	fillrectangle(450, 475, 650, 525);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 495, "删除通讯录");
	//排序通讯录
	setfillcolor(BLUE);
	fillrectangle(450, 530, 650, 580);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 550, "排序通讯录");
	//退出通讯录
	setfillcolor(BLUE);
	fillrectangle(450, 585, 650, 635);
	settextstyle(15, 0, "微软黑体");
	setbkmode(TRANSPARENT);
	outtextxy(500, 605, "退出通讯录");
	while (1) {
		m = GetMouseMsg();
		//创建通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 200 && m.y <= 250) {
			setlinecolor(RED);
			rectangle(448, 198, 652, 252);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				//putimage(0, 0, &img);
				loadimage(NULL, _T("IMAGE"), _T("Background"));
				settextstyle(25, 0, "楷体");
				settextcolor(BLACK);
				setbkmode(TRANSPARENT);
				char arr[] = "全部输入0表示输入结束";
				outtextxy(440, 150, arr);
				head = mycreat();
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 198, 652, 252);
		}
		//显示通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 255 && m.y <= 305) {
			setlinecolor(RED);
			rectangle(448, 253, 652, 307);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				//putimage(0, 0, &img);
				loadimage(NULL, _T("IMAGE"), _T("Background"));
				mydisplay(head);
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 253, 652, 307);
		}
		//查询通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 310 && m.y <= 360) {
			setlinecolor(RED);
			rectangle(448, 308, 652, 362);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				//putimage(0, 0, &img);
				loadimage(NULL, _T("IMAGE"), _T("Background"));
				char ans[2];
				InputBox(ans, 2, "请输入根据何种方式查询(1.学号 2.姓名)");
				if (ans[0] == '1') {
					search1(head);
				}
				else if (ans[0] == '2') {
					search2(head);
				}
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 308, 652, 362);
		}
		//添加通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 365 && m.y <= 415) {
			setlinecolor(RED);
			rectangle(448, 363, 652, 417);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				//putimage(0, 0, &img);
				loadimage(NULL, _T("IMAGE"), _T("Background"));
				myadd(head);
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 363, 652, 417);
		}
		//修改通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 420 && m.y <= 470) {
			setlinecolor(RED);
			rectangle(448, 418, 652, 472);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				//putimage(0, 0, &img);
				loadimage(NULL, _T("IMAGE"), _T("Background"));
				mymodify(head);
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 418, 652, 472);
		}
		//删除通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 475 && m.y <= 525) {
			setlinecolor(RED);
			rectangle(448, 473, 652, 527);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				//putimage(0, 0, &img);
				loadimage(NULL, _T("IMAGE"), _T("Background"));
				mydelete(head);
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 473, 652, 527);
		}
		//排序通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 530 && m.y <= 580) {
			setlinecolor(RED);
			rectangle(448, 528, 652, 582);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				//putimage(0, 0, &img);
				loadimage(NULL, _T("IMAGE"), _T("Background"));
				mysort(head);
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 528, 652, 582);
		}
		//退出通讯录
		if (m.x >= 450 && m.x <= 650 && m.y >= 585 && m.y <= 635) {
			setlinecolor(RED);
			rectangle(448, 583, 652, 637);
			if (m.uMsg == WM_LBUTTONDOWN) {		//如果按下鼠标左键实现相应功能.
				closegraph();
				printf("已退出通讯录\n欢迎您的下次使用!\n祝您生活愉快!");
				break;
			}
		}
		else {	//当鼠标不在目标位置就覆盖之前的蓝色边框.
			setlinecolor(WHITE);
			rectangle(448, 583, 652, 637);
		}
	}
}
int main() {
	showmenu();
	while (1) {
		if (_kbhit()) {
			if (_getch() == 27) {
				showmenu();
			}
		}
	}
	// 按任意键退出
	_getch();
	closegraph();//关闭窗口
}

如果有小伙伴遇到了生成exe程序发给别人却没有背景图片的问题,请去搜索如何把图片设置成资源文件即可解决这个问题。把我遇到的困难都告诉你们啦。

欢迎大家讨论交流! 

  • 18
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Showball.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值