您当前的位置: 首页 > 

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

学生信息管理系统开发

MangataTS 发布时间:2020-08-27 22:21:00 ,浏览量:0

学生信息管理系统

想起来好久没写博客了,最近的一段时间是我们学校的小学期,由于忙着设计这个项目(虽然很菜),所以没怎么刷题,博客也咕咕咕了好久

今天基本把所有的问题都处理了,所以我打算写一篇总结博客,总结一下写项目中遇到的坑。

先看看效果:

 

 

那么直接进入正题:

首先我是用的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;//并不存在这个账号
}
View Code

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"已经签到过啦>__            
关注
打赏
1665836431
查看更多评论
0.0460s