m0_73740280 2023-02-07 20:22 采纳率: 86.8%
浏览 69

请问这个C语言easyx界面点击以后为什么没有反应

请问这个界面为什么点击以后没反应?点击按钮不显示点击的状态,而且不弹出窗口。第一遍点击的时候还是好好地,结果之后就没有反应了

img

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <string.h>
#include<graphics.h>
#include<ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int COUNT;
char key[20];
struct Student
{
    char id[14];
    char name[10];
    char age[4];
    char sex[4];
    char date[16];
    char address[20];
    char phone[12];
    char email[20];
};
struct Student stu[50], ss;
void menu();
int search();
int add();
int modify();
int Delete();
void writeFile();
int readFile();
void Showall();
void PrintUI();
void Printfind();
int searchid();
int R[] = { 250,80,550,130 };
int r1[] = { 300,150,500,200 };
int r2[] = { 300,220,500,270 };
int r3[] = { 300,290,500,340 };
int r4[] = { 300,360,500,410 };
int r5[] = { 300,430,500,480 };
int r6[] = { 300,500,500,550 };
int r7[] = { 300, 380, 380, 410 };
int r8[] = { 300, 380, 380, 410 };
void menu()
{
    
    initgraph(800, 640);
    setbkcolor(LIGHTRED);
    ExMessage m1;
    cleardevice();
    setbkmode(TRANSPARENT);
    loadimage(0, "C:\\Users\\HONOR\\Pictures\\Saved Pictures\\980.jfif");
    setbkmode(TRANSPARENT);
    setfillcolor(WHITE);
    settextcolor(BLACK);
    fillrectangle(R[0], R[1], R[2], R[3]);
    fillrectangle(r1[0], r1[1], r1[2], r1[3]);
    fillrectangle(r2[0], r2[1], r2[2], r2[3]);
    fillrectangle(r3[0], r3[1], r3[2], r3[3]);
    fillrectangle(r4[0], r4[1], r4[2], r4[3]);
    fillrectangle(r5[0], r5[1], r5[2], r5[3]);
    fillrectangle(r6[0], r6[1], r6[2], r6[3]);
    fillrectangle(r7[0], r7[1], r7[2], r7[3]);
    RECT R1 = { R[0],R[1],R[2],R[3] };
    RECT R2 = { r1[0],r1[1],r1[2],r1[3] };
    RECT R3 = { r2[0],r2[1],r2[2],r2[3] };
    RECT R4 = { r3[0],r3[1],r3[2],r3[3] };
    RECT R5 = { r4[0],r4[1],r4[2],r4[3] };
    RECT R6 = { r5[0],r5[1],r5[2],r5[3] };
    RECT R7 = { r6[0],r6[1],r6[2],r6[3] };
    RECT R8 = { r7[0],r7[1],r7[2],r7[3] };
    drawtext("学生信息管理系统", &R1, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    drawtext("录入", &R2, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    drawtext("查询", &R3, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    drawtext("信息修改", &R4, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    drawtext("删除信息", &R5, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    drawtext("显示信息", &R6, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    drawtext("退出系统", &R7, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    int  i;
    int tag = 1;
    int temp = readFile();
    while (1)
    {
        m1 = getmessage();
        if (m1.x > r1[0] && m1.x < r1[2] && m1.y>r1[1] && m1.y < r1[3]) {
            setlinecolor(BLACK);
            rectangle(r1[0], r1[1], r1[2], r1[3]);
            if (m1.message == WM_LBUTTONDOWN)
            {
                add();
            }
        }
        else if (m1.x >= r2[0] && m1.x <= r2[2] && m1.y >= r2[1] && m1.y <= r2[3]) {
            setlinecolor(BLACK);
            rectangle(r2[0], r2[1], r2[2], r2[3]);
            if (m1.message == WM_LBUTTONDOWN)
            {
                Printfind();
            }
        }
        else if (m1.x >= r3[0] && m1.x <= r3[2] && m1.y >= r3[1] && m1.y <= r3[3]) {
            setlinecolor(BLACK);
            rectangle(r3[0], r3[1], r3[2], r3[3]);
            if (m1.message == WM_LBUTTONDOWN)
            {
                modify();
            }
        }
        else if (m1.x >= r4[0] && m1.x <= r4[2] && m1.y >= r4[1] && m1.y <= r4[3]) {
            setlinecolor(BLACK);
            rectangle(r4[0], r4[1], r4[2], r4[3]);
            if (m1.message == WM_LBUTTONDOWN) {
                Delete();
            }
        }
        else if (m1.x >= r5[0] && m1.x <= r5[2] && m1.y >= r5[1] && m1.y <= r5[3]) {
            setlinecolor(BLACK);
            rectangle(r5[0], r5[1], r5[2], r5[3]);
            if (m1.message == WM_LBUTTONDOWN) {
                Showall(); 
            }
        }
        else if (m1.x >= r6[0] && m1.x <= r6[2] && m1.y >= r6[1] && m1.y <= r6[3]) {
            setlinecolor(BLACK);
            rectangle(r6[0], r6[1], r6[2], r6[3]);
            if (m1.message == WM_LBUTTONDOWN) {
                closegraph();
            }
        }
        else {
            setlinecolor(WHITE);
            rectangle(r1[0], r1[1], r1[2], r1[3]);
            rectangle(r2[0], r2[1], r2[2], r2[3]);
            rectangle(r3[0], r3[1], r3[2], r3[3]);
            rectangle(r4[0], r4[1], r4[2], r4[3]);
            rectangle(r5[0], r5[1], r5[2], r5[3]);
            rectangle(r6[0], r6[1], r6[2], r6[3]);
        }
    }
}
int search(char ke[]) {
    int i;
    for (i = 0; i < COUNT; i++)
    {
        if (strcmp(ke, stu[i].id)==0 || strcmp(ke, stu[i].name) == 0 || strcmp(ke, stu[i].age) == 0 || strcmp(ke, stu[i].date) == 0 || strcmp(ke, stu[i].address) == 0 || strcmp(ke, stu[i].email) == 0 || strcmp(ke, stu[i].phone) == 0 || strcmp(ke, stu[i].sex) == 0)
        return i;
    }
    return -1;
}

int searchid(char ke[])
{
    for (int i = 0; i < COUNT; i++)
    {
        if (strcmp(ke, stu[i].id) == 0 )
            return i;
    }
    return -1;
}
void PrintUI(int q)
{ 
    ExMessage m2;
    initgraph(680, 480);
    loadimage(0, "C:\\Users\\HONOR\\Pictures\\Saved Pictures\\980.jfif");
    cleardevice();
    setfillcolor(WHITE);
    fillrectangle(r7[0],r7[1],r7[2],r7[3]);
    RECT R8 = { r7[0],r7[1],r7[2],r7[3] };
    setbkmode(TRANSPARENT);
    settextcolor(BLACK);   
    drawtext("退出", &R8, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    settextstyle(20, 0, "黑体");
    outtextxy(40, 100, "学号");
    outtextxy(110, 100, "姓名");
    outtextxy(190, 100, "年龄");
    outtextxy(270, 100, "性别");
    outtextxy(333, 100, "出生日期");
    outtextxy(450, 100, "地址");
    outtextxy(515, 100, "电话");
    outtextxy(570, 100, "电子邮箱");
    outtextxy(40, 140, stu[q].id);
    outtextxy(110, 140, stu[q].name);
    outtextxy(190, 140, stu[q].age);
    outtextxy(270, 140, stu[q].sex);
    outtextxy(333, 140,stu[q].date);
    outtextxy(450, 140, stu[q].address);
    outtextxy(515, 140, stu[q].phone);
    outtextxy(570, 140, stu[q].email);  
    while (1) {
        m2 = getmessage();
        if (m2.x > 300 && m2.x < 430 && m2.y>380 && m2.y < 460) {
            setlinecolor(RED);
            rectangle(r7[0], r7[1], r7[2], r7[3]);
            if (m2.message == WM_LBUTTONDOWN) {
                closegraph();
                menu();
            }          
        }
    }
}
void Printfind()
{
    InputBox(key, 10, "请输入学生信息的关键词");
    int fan1 = search(key);
    if (fan1 == -1)
    {
        HWND hndtipsF = GetHWnd();
        int isok = MessageBox(hndtipsF, "查无此人!", "提示", MB_OK);
    }
    else
    {
        PrintUI(fan1);
    }
}
int add()
{
    InputBox(ss.id, 14, "请输入该学生的学号");
    int pos = searchid(ss.id);
    if (pos == -1)
    {
        InputBox(ss.name, 10, "请输入该学生的姓名");
        InputBox(ss.age, 4, "请输入该学生的年龄");
        InputBox(ss.sex, 4, "请输入该学生的性别");
        InputBox(ss.date, 16, "请输入该学生的出生日期");
        InputBox(ss.address, 20, "请输入该学生的地址");
        InputBox(ss.phone, 12, "请输入该学生的电话");
        InputBox(ss.email, 20, "请输入该学生的电子邮箱");
        stu[COUNT] = ss;
        COUNT++;     
        FILE* fp;
        int i;
        fp = fopen("student.txt", "a");
        fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", ss.id, ss.name, ss.age, ss.sex, ss.date, ss.address, ss.phone, ss.email);
        fclose(fp);     
        return 1;
    }
    else {
        HWND hwndInput1 = GetHWnd();
        int isok = MessageBox(hwndInput1, "该学生已经存在,请重新输入", "提示", MB_OK);
    } 
}
int modify()
{
    int pos;
    InputBox(ss.id, 9, "请输入待修改的学生的学号");
    pos = searchid(ss.id);
    if (pos == -1)
    {
        HWND hndtipsM = GetHWnd();
        int isok = MessageBox(hndtipsM, "查无此人!", "提示", MB_OK);
    }
    else {
        InputBox(ss.id, 9, "请输入修改后的学生的学号");
        InputBox(ss.name, 9, "请输入修改后的学生的姓名");
        InputBox(ss.age, 9, "请输入修改后的学生的年龄");
        InputBox(ss.sex, 9, "请输入修改后的学生的性别");
        InputBox(ss.date, 9, "请输入修改后的学生的出生日期");
        InputBox(ss.address, 9, "请输入修改后的学生的地址");
        InputBox(ss.phone, 9, "请输入修改后的学生的电话");
        InputBox(ss.email, 9, "请输入修改后的学生的电子邮箱");
        stu[pos] = ss;
    }
    FILE* fp;
    int i;
    fp = fopen("student.txt", "w+");
    for (i = 0; i < COUNT; i++)
        fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
    fclose(fp);
    return 1;
}
int Delete()
{
    InputBox(ss.id, 14, "请输入待删除学生的学号");
    int pos, i;
    pos = searchid(ss.id);
    if (pos == -1) {
        HWND hndtipsD = GetHWnd();
        int isok = MessageBox(hndtipsD, "查无此人!", "提示", MB_OK);
        return -1;
    }
    else
    {
        HWND hndtipsDS = GetHWnd();
        int isok = MessageBox(hndtipsDS, "确定删除?", "提示", MB_OKCANCEL);
        if (isok == IDOK) {
            int posi = pos + 1;
            for (int j = posi; j < COUNT; j++)
                stu[j-1] = stu[j];
            COUNT--;
            FILE* fp;
            int i;
            fp = fopen("student.txt", "w+");
            for(i=0;i< COUNT;i++)
            fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
            fclose(fp);
            return 1;
        }
        else if (isok == IDCANCEL) {
            return 1;
        }
    }
}
int readFile()
{
    FILE* fp;
    int i;
    fp = fopen("student.txt", "r");
    if (fp == NULL)
        return 0;
    for (i = 0;; i++)
        if (fscanf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, &stu[i].age, stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email) != EOF) break;
    fclose(fp);
    return i;
}
void Showall() 
{
    ExMessage m3;
    initgraph(640, 480);
    loadimage(0, "C:\\Users\\HONOR\\Pictures\\Saved Pictures\\980.jfif");
    cleardevice();
    setbkmode(TRANSPARENT);
    setfillcolor(WHITE);
    fillrectangle(r8[0], r8[1], r8[2], r8[3]);
    RECT R9 = { r8[0],r8[1],r8[2],r8[3] };
    settextcolor(BLACK);
    drawtext("退出", &R9, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    settextstyle(20, 0, "黑体");
    outtextxy(40, 100, "学号");
    outtextxy(110, 100, "姓名");
    outtextxy(190, 100, "年龄");
    outtextxy(270, 100, "性别");
    outtextxy(333, 100, "出生日期");
    outtextxy(450, 100, "地址");
    outtextxy(515, 100, "电话");
    outtextxy(570, 100, "邮箱");
    readFile();
    for (int q = 0; q < COUNT; q++) {
        outtextxy(40, 140+30*q, stu[q].id);
        outtextxy(110, 140 + 30 * q, stu[q].name);
        outtextxy(190, 140 + 30 * q, stu[q].age);
        outtextxy(270, 140 + 30 * q, stu[q].sex);
        outtextxy(333, 140 + 30 * q, stu[q].date);
        outtextxy(450, 140 + 30 * q, stu[q].address);
        outtextxy(515, 140 + 30 * q, stu[q].phone);
        outtextxy(570, 140 + 30 * q, stu[q].email);
    }
    while (1) {
        m3 = getmessage();
        if (m3.x > 300 && m3.x < 380 && m3.y>380 && m3.y < 410) {
            setlinecolor(RED);
            rectangle(r8[0], r8[1], r8[2], r8[3]);
            if (m3.message == WM_LBUTTONDOWN) {
                closegraph();
                menu();
            }
        }
        else {
            setlinecolor(WHITE);
            rectangle(r8[0], r8[1], r8[2], r8[3]);
        }
    }
}
int main(void)
{
    FILE* fp;
    fp = fopen("student.txt", "r");
    if (fp == NULL)
        return 0;
    int i = 0;
    COUNT = 0;
    for (i = 0;; i++)
    {
        if (fscanf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email) != EOF)
        {
            COUNT++;
        }
        else break;
    }
    fclose(fp);
    menu();
    return 0;
}



  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-07 22:13
    关注
    评论

报告相同问题?

问题事件

  • 修改了问题 2月7日
  • 创建了问题 2月7日

悬赏问题

  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥15 抖音看过的视频,缓存在哪个文件