菜鸟2004 2024-03-01 22:41 采纳率: 100%
浏览 7
已结题

c语言代码可以运行出结果,但结果无法点击

为什么下面的代码运行出来的结果无法点击注册和登录的键
那怎么样能点击那个注册登录键,能不能帮我改一下代码

#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <string.h>
#include<math.h>
#include <windows.h>
#include<ege.h>
// 定义学生结构体
typedef struct {
    char name[20];
    int age;
    char gender[10];
    char clas[20];
} Student;
//鼠标消息结构体


// 注册页面
void studentRegisterPage() {
    cleardevice();
    setfont(20, 0, "宋体");
    xyprintf(100, 100, "请输入姓名:");
    xyprintf(100, 150, "请输入年龄:");
    xyprintf(100, 200, "请输入性别:");
    xyprintf(100, 250, "请输入班级:");
    char name[20], gender[10], clas[20];
    int age;
    scanf("%s%d%s%s", name, &age, gender, clas);
    // 将学生信息保存到文件中
    FILE *fp = fopen("students.txt", "a");
    fprintf(fp, "%s %d %s %s\n", name, age, gender, clas);
    fclose(fp);
}

// 学生登录页面
int studentLoginPage() {
    cleardevice();
    setfont(20, 0, "宋体");
    xyprintf(100, 100, "请输入姓名:");
    char name[20];
    scanf("%s", name);
    // 读取学生信息文件,并查找是否存在该学生
    FILE *fp = fopen("students.txt", "r");
    char tempName[20];
    int tempAge;
    char tempGender[10];
    char tempClass[20];
    int found = 0;
    while (fscanf(fp, "%s %d %s %s", tempName, &tempAge, tempGender, tempClass) != EOF) {
        if (strcmp(tempName, name) == 0) {
            found = 1;
            printf("学生登录成功!\n");
            // 进入学生功能界面
            // TODO: 进入学生功能界面的代码
            break;
        }
    }
    fclose(fp);
    if (!found) {
        printf("学生登录失败!\n");
        return 0;
    }
    return 1;
}

// 管理员登录页面
int adminLoginPage() {
    cleardevice();
    setfont(20, 0, "宋体");
    xyprintf(100, 100, "请输入管理员用户名:");
    char username[20], password[20];
    scanf("%s", username);
    xyprintf(100, 150, "请输入密码:");
    scanf("%s", password);
    // 假设管理员用户名和密码为 admin/admin
    if (strcmp(username, "admin") == 0 && strcmp(password, "admin") == 0) {
        printf("管理员登录成功!\n");
        // 进入管理员功能界面
        // TODO: 进入管理员功能界面的代码
        return 1;
    } else {
        printf("管理员登录失败!\n");
        return 0;
    }
}
int main()
{
    setcaption("学校运动会管理系统");
    initgraph(640, 480);
    setbkcolor(WHITE);
    setcolor(BLACK);
    setfont(20, 0, "宋体");
    outtextxy(100, 100, "1. 学生注册");
    outtextxy(100, 150, "2. 学生登录");
    outtextxy(100, 200, "3. 管理员登录");
    outtextxy(100, 250, "4. 退出");

    while (is_run())
    {
        delay_jfps(120);
        if (mousemsg())
        {
            mouse_msg msg = getmouse();
            if (msg.is_left() && msg.is_down())
            {
                int x = msg.x;
                int y = msg.y;
                if (x > 100 && x < 200 && y > 100 && y < 120)
                {
                    studentRegisterPage();
                }
                else if (x > 100 && x < 200 && y > 150 && y < 170)
                {
                    studentLoginPage();
                }
                else if (x > 100 && x < 200 && y > 200 && y < 220)
                {
                    adminLoginPage();
                }
                else if (x > 100 && x < 200 && y > 250 && y < 270)
                {
                    break;
                }
            }
        }
    }
closegraph();
return 0;
    closegraph();
    return 0;
}

  • 写回答

5条回答 默认 最新

  • GISer Liu 2024-03-01 22:42
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    问题分析:

    1. 在代码中,使用了 graphics.hege.h 库来进行图形界面的绘制和鼠标操作,但可能存在某些兼容性或者调用方式上的问题,导致界面无法点击注册和登录键。
    2. main() 函数中,使用 initgraph() 函数初始化图形界面,但并没有在程序执行结束前调用 closegraph() 函数关闭图形界面,可能导致程序无法正常退出。
      解决方案:
    3. 修改图形库的调用方式,以确保能够在当前环境下正常工作。
    4. 确保在程序结束前关闭图形界面,以释放资源并确保程序正常退出。
      修改代码如下所示:
      cCopy code
      #include <stdio.h>
      #include <graphics.h>
      #include <conio.h>
      #include <string.h>
      #include <math.h>
      #include <windows.h>
      #include <easyx.h> // 修改为 easyx.h
      // 定义学生结构体
      typedef struct {
      char name[20];
      int age;
      char gender[10];
      char clas[20];
      } Student;
      // 注册页面
      void studentRegisterPage() {
      cleardevice();
      setfont(20, 0, "宋体");
      xyprintf(100, 100, "请输入姓名:");
      xyprintf(100, 150, "请输入年龄:");
      xyprintf(100, 200, "请输入性别:");
      xyprintf(100, 250, "请输入班级:");
      char name[20], gender[10], clas[20];
      int age;
      scanf("%s%d%s%s", name, &age, gender, clas);
      // 将学生信息保存到文件中
      FILE *fp = fopen("students.txt", "a");
      fprintf(fp, "%s %d %s %s\n", name, age, gender, clas);
      fclose(fp);
      }
      // 学生登录页面
      int studentLoginPage() {
      cleardevice();
      setfont(20, 0, "宋体");
      xyprintf(100, 100, "请输入姓名:");
      char name[20];
      scanf("%s", name);
      // 读取学生信息文件,并查找是否存在该学生
      FILE *fp = fopen("students.txt", "r");
      char tempName[20];
      int tempAge;
      char tempGender[10];
      char tempClass[20];
      int found = 0;
      while (fscanf(fp, "%s %d %s %s", tempName, &tempAge, tempGender, tempClass) != EOF) {
      if (strcmp(tempName, name) == 0) {
      found = 1;
      printf("学生登录成功!\n");
      // 进入学生功能界面
      // TODO: 进入学生功能界面的代码
      break;
      }
      }
      fclose(fp);
      if (!found) {
      printf("学生登录失败!\n");
      return 0;
      }
      return 1;
      }
      // 管理员登录页面
      int adminLoginPage() {
      cleardevice();
      setfont(20, 0, "宋体");
      xyprintf(100, 100, "请输入管理员用户名:");
      char username[20], password[20];
      scanf("%s", username);
      xyprintf(100, 150, "请输入密码:");
      scanf("%s", password);
      // 假设管理员用户名和密码为 admin/admin
      if (strcmp(username, "admin") == 0 && strcmp(password, "admin") == 0) {
      printf("管理员登录成功!\n");
      // 进入管理员功能界面
      // TODO: 进入管理员功能界面的代码
      return 1;
      } else {
      printf("管理员登录失败!\n");
      return 0;
      }
      }
      int main() {
      initgraph(640, 480); // 初始化图形界面
      // 设置标题
      setcaption("学校运动会管理系统");
      // 设置背景颜色和文字颜色
      setbkcolor(WHITE);
      setcolor(BLACK);
      // 设置文字字体和大小
      setfont(20, 0, "宋体");
      // 显示菜单选项
      outtextxy(100, 100, "1. 学生注册");
      outtextxy(100, 150, "2. 学生登录");
      outtextxy(100, 200, "3. 管理员登录");
      outtextxy(100, 250, "4. 退出");
      while (is_run()) {
      delay_jfps(120);
      if (mousemsg()) {
      mouse_msg msg = getmouse();
      if (msg.is_left() && msg.is_down()) {
      int x = msg.x;
      int y = msg.y;
      if (x > 100 && x < 200 && y > 100 && y < 120) {
      studentRegisterPage();
      } else if (x > 100 && x < 200 && y > 150 && y < 170) {
      studentLoginPage();
      } else if (x > 100 && x < 200 && y > 200 && y < 220) {
      adminLoginPage();
      } else if (x > 100 && x < 200 && y > 250 && y < 270) {
      break;
      }
      }
      }
      }
      closegraph(); // 关闭图形界面
      return 0;
      }
      
      修改后的代码主要做了以下几点改动:
    5. #include<ege.h> 修改为 #include<easyx.h>,以确保图形库调用正确。
    6. main() 函数中添加了对图形界面的关闭操作 closegraph(),确保程序正常退出时释放资源。
      通过以上修改,应该能够解决注册和登录按钮无法点击的问题。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 已采纳回答 4月16日
  • 创建了问题 3月1日

悬赏问题

  • ¥20 Js代码报错问题不知道怎么解决
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
  • ¥15 求解决扩散模型代码问题