概要
通过使用easyx库,完成学生管理系统,这是简易版,可以在此基础上,增加删改一些内容。
例如:
修改学生信息,使用文件输入输出流保存和读取学生信息等等。
整体架构流程
1.使用easyx库,加载背景图原图(第一张图片),在背景图上增加框,线和文本成为新背景图。其中文本包括标题:学生管理系统,进入和退出按钮。
2.使用鼠标指令对新背景图进行操作,点击进入或退出。点击进入,则加载下一张图片(第二张图片的新图);点击退出,则给提示框(确认退出)。
3.在步骤2中下一张图片,这个图片需要提前进行修改成想要的,在图片上加入框,线和文本。文本就是所需要的功能。如1.录入,2.打印,3.删除,4.退出。
4.在步骤2加载第二张图片的新图后,有1,2,3,4四个功能,使用键盘指令操作,输入1进入录入功能,2进入打印功能,以此类推。
5.录入学生信息,包括姓名,年龄,学号。先加载第二张图片的原图。用InputBox()进行输入,输入完可以进行保存到图片。
6.打印学生信息。加载5保存的图片。
7.删除学生信息。对保存的图片进行删除文本。
8.退出。回到背景图。
9.可以给代码增加音乐。
以下是代码:
#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <malloc.h>
#include <string.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
void bkpic();
void musicstd();
void mouseop();
void firststd();
void keyop();
void logstd();
void printstd();
void delstd();
void backstd();
void pdstd();
IMAGE img;//背景图
IMAGE img1;//第一张图片
IMAGE img2;//第一张图片(新)
IMAGE img3;//背景图(新)
IMAGE img4;//录入学生图片
int main() {
//加载1背景
bkpic();
mouseop();
getchar();
return 0;
}
//背景图片,用buff0,img(原)
void bkpic() {
//音乐
musicstd();
//窗口
initgraph(400, 600);
//加载,绘图bk
loadimage(&img, "ybk.jpg", 400,600,true);
putimage(0, 0, &img);
//加框(总)
setlinecolor(BLACK);
rectangle(100, 0, 400, 300);
line(100, 100, 400, 100);
//加框(小)
setfillcolor(RGB(185, 122, 87));
fillrectangle(120, 160, 220, 220);
fillrectangle(280, 160, 380, 220);
//加文字
settextcolor(RED);
settextstyle(40, 0, "宋体");
setbkmode(TRANSPARENT);
char arr[] = "学生管理系统";
int wigth = (300 - textwidth(arr)) / 2;
int height = (100 - textheight(arr)) / 2;
outtextxy(wigth+100 , height , arr);
settextcolor(GREEN);
setbkmode(TRANSPARENT);
char arr1[] = "进入";
int wigth1 = (100 - textwidth(arr1)) / 2;
int height1 = (60 - textheight(arr1)) / 2;
outtextxy(wigth1+120, height1+160, arr1);
char arr2[] = "退出";
int wigth2 = (100 - textwidth(arr2)) / 2;
int height2 = (60 - textheight(arr2)) / 2;
outtextxy(wigth2 + 280, height2 + 160, arr2);
//保存图像
char buff0[100] = { 0 };
sprintf_s(buff0, "bk.jpg");
saveimage(buff0);
}
//音乐
void musicstd() {
mciSendString("open 两个我们.mp3", 0, 0, 0);
mciSendString("play 两个我们.mp3", 0, 0, 0);
}
//对背景图片的操作,
void mouseop() {
while (1) {
MOUSEMSG msg = GetMouseMsg();
if (msg.uMsg == WM_LBUTTONDOWN) {
if (msg.x > 120 && msg.x < 220 && msg.y>160 && msg.y < 220) {
firststd();
//进入第一张图片
loadimage(&img2, "bk2.jpg", 400, 600, true);
putimage(0, 0, &img2);
//对第一张图片操作
keyop();
break;
}
if (msg.x > 280 && msg.x < 380 && msg.y>160 && msg.y < 220) {
HWND hwnd = GetHWnd();
SetWindowText(hwnd, "学生管理系统");
int a = MessageBox(hwnd, "确定退出吗?", "学生管理系统",MB_OKCANCEL);
if (a == IDOK) {
closegraph();
break;
}
}
}
}
}
//第一张图片,img1(原2),buff1
void firststd() {
//加载1
loadimage(&img1, "ybk2.jpg", 400, 600, true);
putimage(0, 0, &img1);
//第一个图片加框
rectangle(0, 0, 400, 500);
line(0, 100, 400, 100);
//加文字
settextcolor(RED);
settextstyle(50, 0, "宋体");
setbkmode(TRANSPARENT);
char arr[] = "学生管理系统";
int wigth = (400 - textwidth(arr)) / 2;
int height = (100 - textheight(arr)) / 2;
outtextxy(wigth , height, arr);
settextcolor(GREEN);
settextstyle(25, 0, "宋体");
setbkmode(TRANSPARENT);
char t1[] = "1.录入学生信息";
char t2[] = "2.打印学生信息";
char t3[] = "3.删除学生信息";
char t4[] = "4.退出";
int h1 = (50 - textheight(t1)) / 2;
outtextxy(0, h1 + 100, t1);
outtextxy(0, h1 + 150, t2);
outtextxy(0, h1 + 200, t3);
outtextxy(0, h1 + 250, t4);
//保存
char buff1[100] = { 0 };
sprintf_s(buff1, "bk2.jpg");
saveimage(buff1);
}
//对第一张图片操作
void keyop() {
char ch = _getch();
switch (ch) {
case '1':
logstd();
break;
case '2':
printstd();
break;
case '3':
delstd();
break;
case '4':
backstd();
break;
}
}
//录入学生图片,buff2
void logstd() {
putimage(0, 0, &img1);
setbkmode(TRANSPARENT);
outtextxy(0, 40, "姓名");
outtextxy(150, 40, "年龄");
outtextxy(300, 40, "学号");
int tem = 0;
while (1) {
char s[20];
InputBox(s, 20, "请输入学生姓名");
outtextxy(0,100 + tem,s);
InputBox(s, 20, "请输入学生年龄");
outtextxy(150,100 + tem,s);
InputBox(s, 20, "请输入学生id");
outtextxy(300,100 + tem,s);
tem += 50;
HWND hw1 = GetHWnd();
int isok = MessageBox(hw1, "是否继续?", "学生录入",MB_OKCANCEL);
if (isok == IDCANCEL) {
break;
}
}
//保存图片到.jpg
HWND hw3 = GetHWnd();
int isok = MessageBox(hw3, "是否保存录入?", "学生录入", MB_OKCANCEL);
if (isok == IDOK) {
char buff2[100] = { 0 };
sprintf_s(buff2, "luru.jpg");
saveimage(buff2);
}
//返回上一界面
HWND hw2 = GetHWnd();
int isok1 = MessageBox(hw2, "是否返回?", "学生管理系统", MB_OKCANCEL);
if (isok1 == IDOK) {
loadimage(&img2, "bk2.jpg", 400, 600, true);
putimage(0, 0, &img2);
keyop();
}
if (isok1 == IDCANCEL) {
loadimage(&img3, "bk.jpg", 400, 600, true);
putimage(0, 0, &img3);
mouseop();
}
}
//打印学生信息
void printstd() {
loadimage(&img4, "luru.jpg", 400, 600, true);
putimage(0, 0, &img4);
pdstd();
}
//删除学生信息
void delstd() {
loadimage(&img1, "ybk2.jpg", 400, 600, true);
putimage(0, 0, &img1);
pdstd();
}
//退出
void backstd() {
loadimage(&img3, "bk.jpg", 400, 600, true);
putimage(0, 0, &img3);
mouseop();
}
//打印,删除操作
void pdstd() {
setfillcolor(RGB(185, 122, 87));
setlinecolor(BLACK);
fillrectangle(50, 450, 150, 500);
fillrectangle(250, 450, 350, 500);
settextcolor(GREEN);
setbkmode(TRANSPARENT);
char arr1[] = "返回";
int wigth1 = (100 - textwidth(arr1)) / 2;
int height1 = (50 - textheight(arr1)) / 2;
outtextxy(wigth1 + 50, height1 + 450, arr1);
char arr2[] = "退出";
outtextxy(wigth1 + 250, height1 + 450, arr2);
while (1) {
MOUSEMSG msg = GetMouseMsg();
if (msg.uMsg == WM_LBUTTONDOWN) {
if (msg.x > 50 && msg.x < 150 && msg.y>450 && msg.y < 500) {
firststd();
//进入第一张图片
loadimage(&img2, "bk2.jpg", 400, 600, true);
putimage(0, 0, &img2);
//对第一张图片操作
keyop();
break;
}
if (msg.x > 250 && msg.x < 450 && msg.y>450 && msg.y < 500) {
HWND hwnd = GetHWnd();
SetWindowText(hwnd, "学生管理系统");
int a = MessageBox(hwnd, "确定退出吗?", "学生管理系统", MB_OKCANCEL);
if (a == IDOK) {
closegraph();
break;
}
}
}
}
}
重点
//保存图像
char buff0[100] = { 0 };
sprintf_s(buff0, "bk.jpg");
saveimage(buff0);
//音乐加载
mciSendString("open 两个我们.mp3", 0, 0, 0);
mciSendString("play 两个我们.mp3", 0, 0, 0);
//输入学生信息
char s[20];
InputBox(s, 20, "请输入学生姓名");
outtextxy(0,100 + tem,s);
InputBox(s, 20, "请输入学生年龄");
outtextxy(150,100 + tem,s);
InputBox(s, 20, "请输入学生id");
outtextxy(300,100 + tem,s);
//对“对话框的确认和取消”进行操作
HWND hw1 = GetHWnd();
int isok = MessageBox(hw1, "是否继续?", "学生录入",MB_OKCANCEL);
if (isok == IDCANCEL) {
break;
}
技术细节
1.下载easyx.h头文件
2.在程序的文件夹中加入图片(ybk,ybk2),和音乐(两个我们)。
如下:
运行效果
查看视频easyx