想起来好久没写博客了,最近的一段时间是我们学校的小学期,由于忙着设计这个项目(虽然很菜),所以没怎么刷题,博客也咕咕咕了好久
今天基本把所有的问题都处理了,所以我打算写一篇总结博客,总结一下写项目中遇到的坑。
先看看效果:



那么直接进入正题:
首先我是用的IDE是:VS2019(Visual Studio 2019)
开发用到了 easyx图形库(毕竟是一个UI程序嘛)
开发环境是Windows10 版本号是1909
然后采用了多文件编程(就是一个嘘头而已)
我先用多文件的思路,最后再把整个完整的代码放出来,只想看单文件编程的请跳过
首先写程序要先梳理思路,先要思考要实现什么功能,这点是很重要的,有什么想法可以先写下来,
就算后面实际写代码的时候不好实现,不写就行(能去查资料还是尽量查资料)
需求分析:这是我的需求:

当然这些所谓的功能其实后面用一个函数就能实现一个功能,我喜欢在完成这些功能后打上√
然后开始分析我们需要写一个学生端,然后写一个教师端
登录和注册是两个端都共有的,所以我们发现可以写份分文件和一个主要的.cpp文件(当然如果是C语言的话,就是.c 后面同上)
由于代码比较长,我就不逐一解释。
多文件编程操作博客:传送门1 传送门2 传送门3
先说.h文件里面存放的是结构体/类的还有该.h文件对应的.cpp文件里面的函数声明(注意只是声明!!!)
.h对应的.c文件里面放的是.h里面的声明的函数内容(可能有点绕,请理解)
注意1:所有的结构体或者什么声明只能定义一次,其他的文件想使用的话,直接#include"XXX.h"(包含需要使用的定义的头文件)
注意2: 如果你在引用头文件的时候遇到了头文件重定义问题,你可以使用#ifndef/#define/#endif 操作方法:传送门
我们先来看公共部分的分文件操作:
MAIN.h:#pragma once
#include
#include"hstudent.h"
#include"hteacher.h"
#include"MAIN.h"
extern class List1* L1;//第一个学生
extern class List2* L2;//第一个老师
extern SYSTEMTIME st;
extern int X , Y ;//X:界面宽度 Y界面高度
extern int randnum;
extern HWND HD;
extern char qiandaoyuji[][50];
class List1* add_stu(class student* p, class List1* L);//学生信息添加 名字,学号,初始化学生信息
class List2* add_tea(class teacher* p, class List2* L);//初始化老师信息
int find_ID(class student* p1, class teacher* p2, class List1* L_1, class List2* L_2);
bool save1(List1* p1);//学生文件存储函数
bool save2(List2* p2);//教师文件存储函数
void read(class List1* p1, class List2* p2);//文件读取函数
void Pregister();//注册
void Plog();//登录
void PMAIN();//主界面
存放的就是函数和结构体还有一些全局变量的引用
MAIN.cpp:
#pragma once
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include"hstudent.h"
#include"hteacher.h"
#include"MAIN.h"
#pragma comment(lib,"Winmm.lib")
using namespace std;
List1* add_stu(student* p, List1* L)//学生信息添加 名字,学号,初始化学生信息
{
student* temp = (student*)malloc(sizeof(student));
::memset(temp, 0, sizeof(temp));
::memset(temp->Data.cfxinxi.name, 0, sizeof(temp->Data.cfxinxi.name));
::memset(temp->Data.hjxinxi.name, 0, sizeof(temp->Data.hjxinxi.name));
::memset(&temp->Data.all_kemu, 0, sizeof(temp->Data.all_kemu));
::memset(temp->Data.kebiao, 0, sizeof(temp->Data.kebiao));
temp->Data.cfxinxi.loc = 0;
temp->Data.all_kemu.score = 0;
temp->next = NULL;
temp->Data.hjxinxi.loc = 0;//获奖
temp->Data.lastqiandao = p->Data.lastqiandao;//签到信息,每次登录都会重新置为0,别问为什么,问就是不会实时更新。°(°¯᷄◠¯᷅°)°。
GetLocalTime(&st);
if (temp->Data.lastqiandao == (st.wYear * 365 + st.wMonth * 30 + st.wDay))
{
temp->Data.qiandao = 1;
}
else
{
temp->Data.qiandao = 0;
}
if (*p->Data.ID != '\0')
strcpy_s(temp->Data.ID, (p->Data.ID));//拷贝学生ID
if (*p->Data.name != '\0')
strcpy_s(temp->Data.name, (p->Data.name));//拷贝学生名字
if (*p->Data.mima != '\0')
strcpy_s(temp->Data.mima, (p->Data.mima));//拷贝学生密码
if (p->Data.cfxinxi.loc)//拷贝处分信息
{
add_chufen(&p->Data.cfxinxi, temp);
}
if (p->Data.hjxinxi.loc)//拷贝获奖信息
{
add_huojiang(&p->Data.hjxinxi, temp);
}
//成绩录入
temp->Data.all_kemu.yuwen = p->Data.all_kemu.yuwen;
temp->Data.all_kemu.shuxue = p->Data.all_kemu.shuxue;
temp->Data.all_kemu.yingyu = p->Data.all_kemu.yingyu;
temp->Data.all_kemu.wuli = p->Data.all_kemu.wuli;
temp->Data.all_kemu.huaxue = p->Data.all_kemu.huaxue;
temp->Data.all_kemu.Cyuyan = p->Data.all_kemu.Cyuyan;
temp->Data.all_kemu.score = p->Data.all_kemu.score;//p->Data.all_kemu.yuwen + p->Data.all_kemu.shuxue + p->Data.all_kemu.yingyu + p->Data.all_kemu.wuli + p->Data.all_kemu.huaxue + p->Data.all_kemu.Cyuyan;
//课表读取
for (int i = 0; i < 25; ++i)
{
strcpy_s(temp->Data.kebiao[i], p->Data.kebiao[i]);
}
student* pp = L->head;
if (pp != NULL)//如果已有多个学生信息
{
while (pp->next)//找到指针末尾
pp = pp->next;
pp->next = temp;
}
else//如果为第一个学生
{
L->head = temp;
}
return L;
}
List2* add_tea(teacher* p, List2* L)//初始化老师信息
{
teacher* temp = (teacher*)malloc(sizeof(teacher));
temp->next = NULL;
if (*p->Data.ID != '\0')
strcpy_s(temp->Data.ID, p->Data.ID);//拷贝ID
if (*p->Data.mima != '\0')
strcpy_s(temp->Data.mima, p->Data.mima);//拷贝密码
if (*p->Data.name != '\0')
strcpy_s(temp->Data.name, p->Data.name);//拷贝名字
teacher* pp = L->head;
if (pp)
{
while (pp->next)
pp = pp->next;
pp->next = temp;
}
else
L->head = temp;
return L;
}
void add_huojiang(huojiang* hj, student* L)//学生获奖信息添加 用于初始化
{
for (int i = 0; i < hj->loc && L->Data.hjxinxi.loc < 10 && i < 10; ++i)
{
strcpy_s(L->Data.hjxinxi.name[L->Data.hjxinxi.loc++], hj->name[i]);
}
return;
}
void add_chufen(chufen* cf, student* L)//添加学生处分信息 用于初始化时
{
for (int i = 0; i < cf->loc && i < 10 && L->Data.cfxinxi.loc < 10; ++i)
{
strcpy_s(L->Data.cfxinxi.name[L->Data.cfxinxi.loc++], cf->name[i]);
}
return;
}
bool save1(List1* p1)
{
student* pp1;
FILE* fp1 = NULL;
fp1 = fopen("student.txt", "wb");
for (pp1 = p1->head; pp1 != NULL; pp1 = pp1->next)
{
fwrite(pp1, sizeof(student), 1, fp1);
}
fclose(fp1);
return true;
}
bool save2(List2* p2)
{
teacher* pp2;
FILE* fp2 = NULL;
fp2 = fopen("teacher.txt", "wb");
if (fp2 == NULL)
{
printf("kk");
}
for (pp2 = p2->head; pp2 != NULL; pp2 = pp2->next)
{
fwrite(pp2, sizeof(teacher), 1, fp2);
}
fclose(fp2);
return true;
}
void read(List1* p1, List2* p2)
{
student* s1 = (student*)malloc(sizeof(student));
teacher* s2 = (teacher*)malloc(sizeof(student));
chufen* cf1 = (chufen*)malloc(sizeof(chufen));
::memset(cf1->name, 0, sizeof(cf1->name));
cf1->loc = 0;
::memset(s1->Data.cfxinxi.name, 0, sizeof(s1->Data.cfxinxi.name));
s1->Data.cfxinxi.loc = 0;
FILE* fp1 = NULL;
FILE* fp2 = NULL;
fp1 = fopen("student.txt", "rb");
if (fp1 == NULL)
{
fp1 = fopen("student.txt", "wb");
goto out1;
}
while (fread(s1, sizeof(student), 1, fp1))
{
L1 = add_stu(s1, p1);
}
out1:
fclose(fp1);
fp2 = fopen("teacher.txt", "rb");
if (fp2 == NULL)
{
fopen("teacher.txt", "wb");
return;
}
while (fread(s2, sizeof(teacher), 1, fp2) != 0)
{
L2 = add_tea(s2, p2);
}
fclose(fp2);
}
void Plog()//登录界面
{
cleardevice();
IMAGE pmain;//登录注册界面
IMAGE tp;
loadimage(&pmain, L"PMAIN.jpg", X, Y);
putimage(0, 0, &pmain);
setbkmode(TRANSPARENT);
settextstyle(50, 30, L"微软雅黑");
outtextxy(360, 200, L"西柚信息管理登陆");
rectangle(520, 360, 850, 410);
rectangle(520, 450, 850, 500);
rectangle(520, 540, 850, 590);
rectangle(0, 0, 100, 50);
settextstyle(40, 20, L"微软雅黑");
outtextxy(420, 365, L"学号:");
outtextxy(420, 455, L"密码:");
outtextxy(640, 545, L"登录");
outtextxy(5, 5, L"返回");
MOUSEMSG mg;
student* stu = (student*)malloc(sizeof(student));
teacher* tea = (teacher*)malloc(sizeof(teacher));
wchar_t xuehao[20];
::memset(xuehao, 0, sizeof(xuehao));
wchar_t mima[20];
::memset(mima, 0, sizeof(mima));
while (1)
{
mg = GetMouseMsg();
if (mg.x > 0 && mg.x < 100 && mg.y>0 && mg.y < 50 && mg.uMsg == WM_LBUTTONUP)//返回主界面
{
PMAIN();
}
else if (mg.x > 520 && mg.x < 850 && mg.y>360 && mg.y < 410 && mg.uMsg == WM_LBUTTONUP)//学号输入
{
setbkcolor(getpixel(521, 361));
clearrectangle(520, 360, 850, 410);
rectangle(520, 360, 850, 410);
InputBox(xuehao, 13, L"请输入学号");
WideCharToMultiByte(CP_ACP, 0, xuehao, -1, stu->Data.ID, wcslen(xuehao) * 2 + 1, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, xuehao, -1, tea->Data.ID, wcslen(xuehao) * 2 + 1, NULL, NULL);
outtextxy(525, 365, xuehao);
}
else if (mg.x > 520 && mg.x < 850 && mg.y>450 && mg.y < 500 && mg.uMsg == WM_LBUTTONUP)//密码输入
{
setbkcolor(getpixel(521, 451));
clearrectangle(520, 450, 850, 500);
rectangle(520, 450, 850, 500);
InputBox(mima, 13, L"请输入密码");
WideCharToMultiByte(CP_ACP, 0, mima, -1, stu->Data.mima, wcslen(mima) * 2 + 1, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, mima, -1, tea->Data.mima, wcslen(mima) * 2 + 1, NULL, NULL);
outtextxy(525, 460, mima);
}
else if (mg.x > 520 && mg.x < 850 && mg.y>540 && mg.y < 590 && mg.uMsg == WM_LBUTTONUP)//登录
{
int flag = find_ID(stu, tea, L1, L2);
if (flag)
{
if (flag == 1)//学生账号
{
student* k1 = NULL;
k1 = find_student(stu, L1);
outtextxy(520, 700, L"学生登录成功");
Sleep(1000);
Pstudent(k1);
}
else if (flag == 2)//老师账号
{
teacher* k2 = NULL;
k2 = find_teacher(tea, L2);
outtextxy(560, 700, L"老师登录成功");
Sleep(100);
Pteacher(k2);
}
else if (flag == -1)//学生密码错误
{
MessageBox(HD, L"密码错误,请重新输入", L"登录信息", MB_OK);
}
else if (flag == -2)//学生密码错误
{
MessageBox(HD, L"密码错误,请重新输入", L"登录信息", MB_OK);
}
}
else
{
MessageBox(HD, L"此账号并不存在", L"登录信息", MB_OK);
}
}
}
}
void PMAIN()//主界面,初始界面
{
cleardevice();
IMAGE pmain;//登录注册界面
loadimage(&pmain, L"PMAIN.jpg", X, Y);
putimage(0, 0, &pmain);
setbkmode(TRANSPARENT);
settextstyle(50, 30, L"微软雅黑");
outtextxy(360, 200, L"西柚信息管理登陆");
rectangle(520, 360, 690, 410);
rectangle(520, 450, 690, 500);
rectangle(1100, 750, 1199, 799);
settextstyle(40, 20, L"微软雅黑");
outtextxy(565, 365, L"登录");
outtextxy(565, 455, L"注册");
outtextxy(1110, 755, L"退出");
MOUSEMSG mg;
while (1)
{
mg = GetMouseMsg();
if (mg.x > 520 && mg.x < 690)
{
if (mg.y > 360 && mg.y < 410 && mg.uMsg == WM_LBUTTONUP)//登录
{
Plog();
}
else if (mg.y > 450 && mg.y < 500 && mg.uMsg == WM_LBUTTONUP)//注册
{
Pregister();
}
}
else if (mg.x > 1100 && mg.x < 1200 && mg.y>750 && mg.y < 800 && mg.uMsg == WM_LBUTTONUP)
{
exit(0);
}
}
}
void Pregister()//注册界面
{
cleardevice();
IMAGE pmain;//登录注册界面
loadimage(&pmain, L"PMAIN.jpg", X, Y);
putimage(0, 0, &pmain);
setbkmode(TRANSPARENT);
settextstyle(50, 30, L"微软雅黑");
outtextxy(350, 50, L"西柚信息管理登陆");
rectangle(520, 120, 850, 180);//账号框
rectangle(520, 220, 850, 280);//密码框
rectangle(520, 320, 850, 380);//姓名框
rectangle(320, 420, 490, 480);//学生注册框
rectangle(720, 420, 890, 480);//教师注册框
rectangle(0, 0, 100, 50);
settextstyle(40, 20, L"微软雅黑");
outtextxy(5, 5, L"返回");
settextstyle(30, 18, L"微软雅黑");
outtextxy(420, 130, L"账号");
outtextxy(420, 230, L"密码");
outtextxy(420, 330, L"姓名");
outtextxy(330, 430, L"学生注册");
outtextxy(730, 430, L"教师注册");
student* stu = (student*)malloc(sizeof(student));
teacher* tea = (teacher*)malloc(sizeof(student));
stu->Data.cfxinxi.loc = 0;
stu->Data.hjxinxi.loc = 0;
::memset(stu, 0, sizeof(student));
::memset(tea, 0, sizeof(teacher));
MOUSEMSG mg;
wchar_t zhanghao[20];
wchar_t mima[20];
wchar_t mingzi[20];
while (1)
{
mg = GetMouseMsg();
if (mg.x > 520 && mg.x < 850)
{
if (mg.y > 120 && mg.y < 180 && mg.uMsg == WM_LBUTTONUP)//账号
{
setbkcolor(getpixel(521, 121));
clearrectangle(520, 120, 850, 180);
rectangle(520, 120, 850, 180);
InputBox(zhanghao, 13, L"请输入账号/学号");
outtextxy(530, 130, zhanghao);
WideCharToMultiByte(CP_ACP, 0, zhanghao, -1, stu->Data.ID, wcslen(zhanghao) * 2 + 1, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, zhanghao, -1, tea->Data.ID, wcslen(zhanghao) * 2 + 1, NULL, NULL);
}
else if (mg.y > 220 && mg.y < 280 && mg.uMsg == WM_LBUTTONUP)//密码
{
setbkcolor(getpixel(521, 221));
clearrectangle(520, 220, 850, 280);
rectangle(520, 220, 850, 280);
InputBox(mima, 13, L"请输入密码");
outtextxy(530, 230, mima);
WideCharToMultiByte(CP_ACP, 0, mima, -1, stu->Data.mima, wcslen(mima) * 2 + 1, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, mima, -1, tea->Data.mima, wcslen(mima) * 2 + 1, NULL, NULL);
}
else if (mg.y > 320 && mg.y < 380 && mg.uMsg == WM_LBUTTONUP)//姓名
{
setbkcolor(getpixel(521, 321));
clearrectangle(520, 320, 850, 380);
rectangle(520, 320, 850, 380);
InputBox(mingzi, 13, L"请输入姓名");
outtextxy(530, 330, mingzi);
WideCharToMultiByte(CP_ACP, 0, mingzi, -1, stu->Data.name, wcslen(mingzi) * 2 + 1, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, mingzi, -1, tea->Data.name, wcslen(mingzi) * 2 + 1, NULL, NULL);
}
}
else if (mg.y > 420 && mg.y < 480)//注册
{
if (mg.x > 320 && mg.x < 490 && mg.uMsg == WM_LBUTTONUP)
{
if (*stu->Data.ID == '\0')
{
MessageBox(HD, L"请先输入学号", L"注册信息", MB_OK);
}
else if (*stu->Data.mima == '\0')
{
MessageBox(HD, L"请先输入密码", L"注册信息", MB_OK);
}
else if (*stu->Data.name == '\0')
{
MessageBox(HD, L"请先输入姓名", L"注册信息", MB_OK);
}
else
{
int flag = find_ID(stu, tea, L1, L2);
if (!flag)
{
chufen* chuf = (chufen*)malloc(sizeof(chufen));
::memset(chuf, 0, sizeof(chuf));
::memset(chuf->name, 0, sizeof(chuf->name));
chuf->loc = 1;
strcpy_s(chuf->name[0], "暂无处分");
add_chufen(chuf, stu);
huojiang huoj;
::memset(&huoj, 0, sizeof(huoj));
::memset(huoj.name, 0, sizeof(huoj.name));
huoj.loc = 1;
strcpy_s(huoj.name[0], "暂无获奖");
add_huojiang(&huoj, stu);
::memset(&stu->Data.all_kemu, 0, sizeof(stu->Data.all_kemu));
stu->Data.all_kemu.score = stu->Data.all_kemu.yuwen = stu->Data.all_kemu.shuxue = stu->Data.all_kemu.yingyu = stu->Data.all_kemu.wuli = stu->Data.all_kemu.huaxue = stu->Data.all_kemu.Cyuyan = 0;
stu->Data.qiandao = 0;
stu->Data.lastqiandao = 0;
::memset(stu->Data.kebiao, 0, sizeof(stu->Data.kebiao));
L1 = add_stu(stu, L1);
save1(L1);
MessageBox(HD, L"学生注册成功", L"注册信息", MB_OK);
PMAIN();
}
else
{
MessageBox(HD, L"该学号已经注册过", L"注册信息", MB_OK);
}
}
}
else if (mg.x > 720 && mg.x < 890 && mg.uMsg == WM_LBUTTONUP)
{
int flag = find_ID(stu, tea, L1, L2);
if (!flag)
{
L2 = add_tea(tea, L2);
save2(L2);
MessageBox(HD, L"教师注册成功", L"注册信息", MB_OK);
PMAIN();
}
}
}
else if (mg.x > 0 && mg.x < 100 && mg.y>0 && mg.y < 50 && mg.uMsg == WM_LBUTTONUP)
{
PMAIN();
}
}
}
int find_ID(student* p1, teacher* p2, List1* L_1, List2* L_2)
{
class student* pp1 = L_1->head;
class teacher* pp2 = L_2->head;
while (pp1)//查找ID是否是学生
{
if (!strcmp(pp1->Data.ID, p1->Data.ID))
{
if (!strcmp(pp1->Data.mima, p1->Data.mima))
return 1;//是学生返回1
else
return -1;//密码错误
}
pp1 = pp1->next;
}
while (pp2)//查找是不是老师
{
if (!strcmp(pp2->Data.ID, p2->Data.ID))
{
if (!strcmp(pp2->Data.mima, p2->Data.mima))
return 2;//是老师返回2
else
return -1;//老师密码错误
}
pp2 = pp2->next;
}
return 0;//并不存在这个账号
}
cpp存放的就是这些函数的实现
先看学生端的分文件:
hstudennt.h:#pragma once
#include
#include"hstudent.h"
#include"hteacher.h"
#include"MAIN.h"
extern class List1* L1;//第一个学生 extern表示的是这个全局变量在其他文件定义过,所以直接定义就行,是起到一个修饰的作用
extern class List2* L2;//第一个老师
extern SYSTEMTIME st;
extern int X , Y ;//X:界面宽度 Y界面高度
extern int randnum;
extern HWND HD;
extern char qiandaoyuji[][50];
class data2//老师的数据
{
public:
char ID[20];//账号
char mima[30];//密码
char name[30];//名字
};
class teacher
{
public:
class data2 Data;
class teacher* next;//指向下一个位置的指针
};
class List2//老师端,这样更方便记录信息
{
public:
class teacher* head;
};
void Pteacher(teacher* tea);
void Pteacher_GCJ(teacher* tea);
void Pteacher_GHJ(teacher* tea);
void Pteacher_KPM(teacher* tea);
void Pteacher_GMA(teacher* tea);
void Pteacher_CKQD(teacher* tea);
void Pteacherr_GCF(teacher* tea);
teacher* find_teacher(teacher* tea, List2* L);
这个.h文件存放的是老师端所有操作的声明(包括类的声明,那些操作函数的声明)
hstudent.cpp(注意和.h文件名称保持一致):
#pragma once
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include"hstudent.h"
#include"MAIN.h"
#include"hteacher.h"
#pragma comment(lib,"Winmm.lib")
using namespace std;
void Pstudent(student* stu)
{
cleardevice();
IMAGE pmain;//背景
IMAGE tx1, tx2;
loadimage(&pmain, L"PMAIN.jpg", X, Y);
putimage(0, 0, &pmain);
//loadimage(&tx2, L"tx2.jpg", 200, 300);
loadimage(&tx1, L"tx1.jpg", 200, 300);
//putimage(1000, 0, &tx2, NOTSRCERASE);
putimage(1000, 0, &tx1);// , SRCINVERT);
setbkmode(TRANSPARENT);
settextstyle(50, 30, L"微软雅黑");
outtextxy(370, 100, L"西柚信息管理学生端");
rectangle(1000, 0, 1200, 300);//头像
rectangle(1100, 300, 1200, 350);//签到按钮
rectangle(500, 200, 700, 250);//成绩查看
rectangle(500, 300, 700, 350);//排名查看
rectangle(500, 400, 700, 450);//获奖情况查看
rectangle(500, 500, 700, 550);//学习资料推荐
rectangle(500, 600, 700, 650);//课表查看
rectangle(500, 700, 700, 750);//处分信息查看
rectangle(1100, 750, 1199, 799);//退出程序
rectangle(0, 0, 100, 50);
settextstyle(40, 20, L"微软雅黑");
outtextxy(5, 5, L"返回");//返回
settextstyle(30, 15, L"微软雅黑");//签到字体
outtextxy(1120, 310, L"签到");//签到
outtextxy(1120, 760, L"退出");//退出程序
settextstyle(40, 20, L"微软雅黑");//选项信息字体格式
outtextxy(520, 205, L"我的成绩");//我的成绩
outtextxy(520, 305, L"我的排名");//我的排名
outtextxy(520, 405, L"获奖情况");//获奖情况
outtextxy(520, 505, L"学习资料");//学习资料
outtextxy(520, 605, L"我的课表");//我的课表
outtextxy(520, 705, L"我的处分");//我的处分
outtextxy(100, 100, CString(stu->Data.name));//学生名字
if (stu->Data.qiandao)
{
settextstyle(20, 10, L"微软雅黑");
outtextxy(720, 400, CString(qiandaoyuji[randnum % 20]));
}
MOUSEMSG mg;
while (1)
{
mg = GetMouseMsg();
if (mg.x > 500 && mg.x < 700)
{
if (mg.y > 200 && mg.y < 250 && mg.uMsg == WM_LBUTTONUP)//我的成绩的范围
{
Pstudent_chengji(stu);
}
else if (mg.y > 300 && mg.y < 350 && mg.uMsg == WM_LBUTTONUP)//我的排名的范围
{
Pstudent_paiming(stu);
}
else if (mg.y > 400 && mg.y < 450 && mg.uMsg == WM_LBUTTONUP)//获奖情况的范围
{
Pstudent_huojiang(stu);
}
else if (mg.y > 500 && mg.y < 550 && mg.uMsg == WM_LBUTTONUP)//学习资料的范围
{
Pstudent_xuexi(stu);
}
else if (mg.y > 600 && mg.y < 650 && mg.uMsg == WM_LBUTTONUP)//我的课表的范围
{
Pstudent_kebiao(stu);
}
else if (mg.y > 700 && mg.y < 750 && mg.uMsg == WM_LBUTTONUP)//我的处分的范围
{
Pstudent_chufen(stu);
}
}
else if (mg.x > 1100 && mg.x < 1200)//签到的范围
{
if (mg.y > 300 && mg.y < 350 && mg.uMsg == WM_LBUTTONUP)
{
Pstudent_qiandao(stu);
}
else if (mg.y > 750 && mg.y < 800 && mg.uMsg == WM_LBUTTONUP)
{
save1(L1);
save2(L2);
exit(0);
}
}
else if (mg.x > 0 && mg.x < 100 && mg.y>0 && mg.y < 50 && mg.uMsg == WM_LBUTTONUP)
{
PMAIN();
}
}
}
void Pstudent_qiandao(student* stu)//签到
{
if (stu->Data.qiandao)
{
MessageBox(HD, L"已经签到过啦>__
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?