m0_73740280 2023-02-02 09:48 采纳率: 86.8%
浏览 49
已结题

请问这个C语言代码的函数为什么全都报错

请问这个代码为什么全部的函数都报错?写的是学生信息管理系统,加上界面设计,用的visualC++6.0

img

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <string.h>
#include <graphics.h>
#include <easyx.h>
struct Student
{
    char id[14];
    char name[10];
    int age;
    char sex[4];
    char date[16];
    char address[20];
    char phone[12];
    char email[20];
};
struct Student stu[50],ss;
void menu();
int searchID(Student stu[], int count, char* keyID);
//功能:在stu的count个元素,查找ss
//返回值:查找成功,返回ss在stu中的位置号;否则,返回 -1 
int searchNAME(Student stu[], int count, char* keyNAME);
int searchPHONE(Student stu[], int count, char* keyPHONE);
int searchEMAIL(Student stu[], int count, char* keyEMAIL);
int search(Student stu[], int count, Student ss);
//正常插入,返回学生数;否则,返回-1
int add(Student stu[] , int count ,Student ss);
//若输入的学号存在,正常修改,返回学生数,否则,修改失败,返回 -1 
int modify(Student stu[],int count,Student ss);
//若输入的学号存在,删除,返回学生数,否则,删除失败,返回 -1 
int Delete(Student stu[],int count,Student ss);
void writeFile(Student stu[] , int count );
int readFile(Student stu[]);
ExMessage msg={0};

bool inArea(int x,int y,int rx,int ry,int rw,int rh)
{
    if(x>rx&&x<rx+rw&&y>ry&&y<ry+rh){
        return true;
    }
    return false;
}
bool button(int x,int y,int w,int h,const char* text)
{
    if(inArea(msg.x,msg.y,x,y,w,h)){
        setfillcolor(RGB(187,198,241));
    }
    else{
        setfillcolor(WHITE);
    }
    fillrectangle(x,y,x+w,y+h);
    settextcolor(BLACK);
    int hspace=(w-textwidth(text))/2;
    int vspace=(h-textheight(text))/2;
    outtextxy(x+hspace,y+vspace,text);
    return false;
}
int main()
{
    initgraph(1280,640,EW_SHOWCONSOLE);
    setbkmode(TRANSPARENT);
    char keyID[20],keyNAME[10],keyPHONE[12],keyEMAIL[20];
    int  count = 0, i;
    int select, tag = 1 ;
    count = readFile(stu);
    while(tag)
    {
        //菜单 
    
        while(true){
            getmessage(&msg); 
            BeginBatchDraw();
            if(button(20,20,300,30,"1、插入学生信息")){
                printf("请输入待插入的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                scanf("%s %s %d %s %s %s %s %s", ss.id , ss.name ,&ss.age, ss.sex ,ss.date,ss.address,ss.phone,ss.email);
                i = add(stu,count,ss);
                //如果本来不存在这个学生信息 
                if(i != -1)
                {
                    printf("插入成功\n");
                    count  = i;
                }
                else
                    printf("录入失败\n");
                break;
            }
            if(button(20,50,300,30,"2、查找学生信息(按学号)")){
                printf("请输入学号关键字:");
            scanf("%s", keyID);
            i = searchID(stu, count, keyID);   //i = searchID(stu, count, key);  修改
            if (i != -1)
            {
                printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                printf("%s  %s  %d  %s  %s  %s  %s  %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);
            }    
            else
                printf("%s不存在!\n",keyID);
            break;
            }
            if(button(20,80,300,30,"3、查找学生信息(按姓名)")){
                printf("请输入姓名关键字:");
                scanf("%s", keyNAME);
                i = searchNAME(stu , count ,keyNAME);
                if(i != -1 ){
                    printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                    printf("%s  %s  %d  %s  %s  %s  %s  %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);
                }    
                else
                    printf("%s不存在!\n",keyNAME);
                break;
            }
            if(button(20,110,300,30,"4、查找学生信息(按电话)")){
                    printf("请输入电话关键字:");
                scanf("%s", keyPHONE);
                i = searchPHONE(stu , count ,keyPHONE);
                if(i != -1 ){
                    printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                    printf("%s  %s  %d  %s  %s  %s  %s  %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);
                }    
                else
                    printf("%s不存在!\n",keyPHONE);
                break;    
            }
            if(button(20,140,300,30,"5、查找学生信息(按电子邮箱)")){
                printf("请输入电子邮箱关键字:");
                scanf("%s", keyEMAIL);
                i = searchEMAIL(stu , count ,keyEMAIL);
                if(i != -1 ){
                    printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                    printf("%s  %s  %d  %s  %s  %s  %s  %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);
                }    
                else
                    printf("%s不存在!\n",keyEMAIL);
                break;
            }
            if(button(20,170,300,30,"6、修改学生信息")){
                printf("请输入待修改的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                scanf("%s %s %d %s %s %s %s %s", ss.id , ss.name ,&ss.age, ss.sex ,ss.date,ss.address,ss.phone,ss.email);
                i = modify(stu , count ,ss);
                if(i == -1){
                    printf("%s 不存在,修改失败!\n",ss.id);
                    else
                    printf("修改成功\n"); 
                break;
            }
            if(button(20,200,300,30,"7、删除学生信息")){
                printf("请输入待删除的学生学号:");
                scanf("%s", ss.id);
                i = Delete(stu , count ,ss);
                    if(i != -1 )
                {
                    printf("删除成功\n");
                    count = i; 
                }
                else
                    printf("%s 不存在,删除失败\n",ss.id);
                break;
            }
            if(button(20,230,300,30,"8、显示学生信息")){
                printf("学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                for(i = 0 ; i < count ; i++ )
                    printf("%s  %s  %d  %s  %s  %s  %s  %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);
                break;
            }
            if(button(20,270,300,30,"0、退出系统")){
                system("cls") ;
                printf("欢迎再次使用学生信息管理系统......\n");
                tag = 0 ;
                writeFile(stu ,count );
                break;
            }
            printf("按任意键继续......\n");
            printf("%d %d %d\n", msg.message, msg.x, msg.y); 
            system("cls");
            EndBatchDraw();
            msg.message=0;
        }
        return 0;
}
void menu()
{
    printf("       *学生信息管理系统*    \n");
    printf("1、插入学生信息\n");
    printf("2、查找学生信息(按学号)\n");
    printf("3、查找学生信息(按姓名)\n");
    printf("4、查找学生信息(按电话)\n");
    printf("5、查找学生信息(按电子邮箱)\n");
    printf("6、修改学生信息\n");
    printf("7、删除学生信息\n");
    printf("8、显示学生信息\n");
    printf("0、退出系统\n");
    printf("__________________________\n");
    printf("请选择(0-8):");
}
int searchID(Student stu[], int count, char* keyID)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].id, keyID);
        if (p) return i;
    }
    return -1;
}
int searchNAME(Student stu[], int count, char* keyNAME)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].name, keyNAME);
        if (p) return i;
    }
    return -1;
}
int searchPHONE(Student stu[], int count, char* keyPHONE)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].phone, keyPHONE);
        if (p) return i;
    }
    return -1;
}
int searchEMAIL(Student stu[], int count, char* keyEMAIL)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].email, keyEMAIL);
        if (p) return i;
    }
    return -1;
}
int search(Student stu[], int count, Student ss)
{
    int i;
    for (i = 0; i < count; i++)
        if (strcmp(stu[i].name, ss.id) == 0) return i;
    return -1;
}
//功能:在stu的count个元素,查找ss
//返回值:查找成功,返回ss在stu中的位置号;否则,返回 -1 

int add(Student stu[] , int count ,Student ss)
{
    int pos ;
    //先判断添加的信息是否原本已有这个学生
    pos = searchID(stu, count, ss.id);
    //如果本来不存在,就添加 
    if(pos == -1)
    {
        stu[count] = ss;
        return count + 1;
    }
    return -1;
}
//若输入的学号存在,正常修改,返回学生数,否则,修改失败,返回 -1 
int modify(Student stu[],int count,Student ss)
{
    int pos ;
    pos = searchID(stu, count, ss.id);
    if(pos == -1)
    return -1;
    else
    {
        stu[pos] =ss;
        return count;
    }
} 
 
//若输入的学号存在,删除,返回学生数,否则,删除失败,返回 -1 
int Delete(Student stu[],int count,Student ss)
{
    int pos , i;
        pos =searchID(stu, count, ss.id);
        if(pos == -1)
            return -1;
        else
        {
            for(i = pos + 1 ; i < count ; i++ )
                stu[i - 1 ] = stu[i] ;
            return count - 1;    
        }
} 
void writeFile(Student stu[],int count )
{
    FILE *fp ;
    int i;
    //"w"是写文件 
    fp = fopen ("student.dat" , "w");
    for(i = 0 ; i < count ;i++)
    //fprinf()是把文件内容输出到屏幕 
      fprintf(fp,"%s  %s  %d  %s  %s  %s  %s  %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);
}
//只读文件 
int readFile(Student stu[])
{
    FILE *fp ;
    int i;
    fp = fopen ("student.dat" , "r");
    //如果文件不存在,返回0 
    if(fp == NULL)
     return 0;
    //foef()判断文件是否结束,结束返回1,未结束返回0,用!feof()作为循环条件 
    //fscanf()将文件中的数据读入数组变量id,name...中 
    for(i = 0 ;; i++)
      if (fscanf(fp , "%s %s %d %s %s %s %s %s" ,stu[i].id , stu[i].name , &stu[i].age,stu[i].sex,stu[i].date,stu[i].address,stu[i].phone,stu[i].email)!=8) break;
    fclose(fp);
    return i;
}

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2023-02-02 10:14
    关注

    语法错误修改如下,供参考:

    #include <stdio.h>
    #include <windows.h>
    #include <conio.h>
    #include <string.h>
    #include <graphics.h>
    #include <easyx.h>
    struct Student
    {
        char id[14];
        char name[10];
        int age;
        char sex[4];
        char date[16];
        char address[20];
        char phone[12];
        char email[20];
    };
    struct Student stu[50], ss;
    void menu();
    int searchID(Student stu[], int count, char* keyID);
    //功能:在stu的count个元素,查找ss
    //返回值:查找成功,返回ss在stu中的位置号;否则,返回 -1 
    int searchNAME(Student stu[], int count, char* keyNAME);
    int searchPHONE(Student stu[], int count, char* keyPHONE);
    int searchEMAIL(Student stu[], int count, char* keyEMAIL);
    int search(Student stu[], int count, Student ss);
    //正常插入,返回学生数;否则,返回-1
    int add(Student stu[], int count, Student ss);
    //若输入的学号存在,正常修改,返回学生数,否则,修改失败,返回 -1 
    int modify(Student stu[], int count, Student ss);
    //若输入的学号存在,删除,返回学生数,否则,删除失败,返回 -1 
    int Delete(Student stu[], int count, Student ss);
    void writeFile(Student stu[], int count);
    int readFile(Student stu[]);
    ExMessage msg = { 0 };
    
    bool inArea(int x, int y, int rx, int ry, int rw, int rh)
    {
        if (x > rx && x < rx + rw && y > ry && y < ry + rh) {
            return true;
        }
        return false;
    }
    bool button(int x, int y, int w, int h, const char* text)
    {
        if (inArea(msg.x, msg.y, x, y, w, h)) {
            setfillcolor(RGB(187, 198, 241));
        }
        else {
            setfillcolor(WHITE);
        }
        fillrectangle(x, y, x + w, y + h);
        settextcolor(BLACK);
        int hspace = (w - textwidth(text)) / 2;
        int vspace = (h - textheight(text)) / 2;
        outtextxy(x + hspace, y + vspace, text);
        return false;
    }
    int main()
    {
        initgraph(1280, 640, EW_SHOWCONSOLE);
        setbkmode(TRANSPARENT);
        char keyID[20], keyNAME[10], keyPHONE[12], keyEMAIL[20];
        int  count = 0, i;
        int select, tag = 1;
        count = readFile(stu);
        while (tag)
        {
            //菜单 
            while (true) {
                getmessage(&msg);
                BeginBatchDraw();
                if (button(20, 20, 300, 30, "1、插入学生信息")) {
                    printf("请输入待插入的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                    scanf("%s %s %d %s %s %s %s %s", ss.id, ss.name, &ss.age, ss.sex, ss.date, ss.address, ss.phone, ss.email);
                    i = add(stu, count, ss);
                    //如果本来不存在这个学生信息 
                    if (i != -1)
                    {
                        printf("插入成功\n");
                        count = i;
                    }
                    else
                        printf("录入失败\n");
                    break;
                }
                if (button(20, 50, 300, 30, "2、查找学生信息(按学号)")) {
                    printf("请输入学号关键字:");
                    scanf("%s", keyID);
                    i = searchID(stu, count, keyID);   //i = searchID(stu, count, key);  修改
                    if (i != -1)
                    {
                        printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                        printf("%s  %s  %d  %s  %s  %s  %s  %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);
                    }
                    else
                        printf("%s不存在!\n", keyID);
                    break;
                }
                if (button(20, 80, 300, 30, "3、查找学生信息(按姓名)")) {
                    printf("请输入姓名关键字:");
                    scanf("%s", keyNAME);
                    i = searchNAME(stu, count, keyNAME);
                    if (i != -1) {
                        printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                        printf("%s  %s  %d  %s  %s  %s  %s  %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);
                    }
                    else
                        printf("%s不存在!\n", keyNAME);
                    break;
                }
                if (button(20, 110, 300, 30, "4、查找学生信息(按电话)")) {
                    printf("请输入电话关键字:");
                    scanf("%s", keyPHONE);
                    i = searchPHONE(stu, count, keyPHONE);
                    if (i != -1) {
                        printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                        printf("%s  %s  %d  %s  %s  %s  %s  %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);
                    }
                    else
                        printf("%s不存在!\n", keyPHONE);
                    break;
                }
                if (button(20, 140, 300, 30, "5、查找学生信息(按电子邮箱)")) {
                    printf("请输入电子邮箱关键字:");
                    scanf("%s", keyEMAIL);
                    i = searchEMAIL(stu, count, keyEMAIL);
                    if (i != -1) {
                        printf("待查找的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                        printf("%s  %s  %d  %s  %s  %s  %s  %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);
                    }
                    else
                        printf("%s不存在!\n", keyEMAIL);
                    break;
                }
                if (button(20, 170, 300, 30, "6、修改学生信息")) {
                    printf("请输入待修改的学生\n学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                    scanf("%s %s %d %s %s %s %s %s", ss.id, ss.name, &ss.age, ss.sex, ss.date, ss.address, ss.phone, ss.email);
                    i = modify(stu, count, ss);
                    if (i == -1) {
                        printf("%s 不存在,修改失败!\n", ss.id);
                    }
                    else
                        printf("修改成功\n");
                    break;
                }
                if (button(20, 200, 300, 30, "7、删除学生信息")) {
                    printf("请输入待删除的学生学号:");
                    scanf("%s", ss.id);
                    i = Delete(stu, count, ss);
                    if (i != -1)
                    {
                        printf("删除成功\n");
                        count = i;
                    }
                    else
                        printf("%s 不存在,删除失败\n", ss.id);
                    break;
                }
                if (button(20, 230, 300, 30, "8、显示学生信息")) {
                    printf("学号 姓名 年龄 性别 出生年月 地址 电话 E-mail\n");
                    for (i = 0; i < count; i++)
                        printf("%s  %s  %d  %s  %s  %s  %s  %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);
                    break;
                }
                if (button(20, 270, 300, 30, "0、退出系统")) {
                    system("cls");
                    printf("欢迎再次使用学生信息管理系统......\n");
                    tag = 0;
                    writeFile(stu, count);
                    break;
                }
            }
            printf("按任意键继续......\n");
            printf("%d %d %d\n", msg.message, msg.x, msg.y);
            system("cls");
            EndBatchDraw();
            msg.message = 0;
        }
        return 0;
    }
    void menu()
    {
        printf("       *学生信息管理系统*    \n");
        printf("1、插入学生信息\n");
        printf("2、查找学生信息(按学号)\n");
        printf("3、查找学生信息(按姓名)\n");
        printf("4、查找学生信息(按电话)\n");
        printf("5、查找学生信息(按电子邮箱)\n");
        printf("6、修改学生信息\n");
        printf("7、删除学生信息\n");
        printf("8、显示学生信息\n");
        printf("0、退出系统\n");
        printf("__________________________\n");
        printf("请选择(0-8):");
    }
    int searchID(Student stu[], int count, char* keyID)  //int searchID(Student stu[], int count, char key) 修改
    {
        int i;
        char* p = NULL;
        for (i = 0; i < count; i++)  //先排查 学号
        {
            p = strstr(stu[i].id, keyID);
            if (p) return i;
        }
        return -1;
    }
    int searchNAME(Student stu[], int count, char* keyNAME)  //int searchID(Student stu[], int count, char key) 修改
    {
        int i;
        char* p = NULL;
        for (i = 0; i < count; i++)  //先排查 学号
        {
            p = strstr(stu[i].name, keyNAME);
            if (p) return i;
        }
        return -1;
    }
    int searchPHONE(Student stu[], int count, char* keyPHONE)  //int searchID(Student stu[], int count, char key) 修改
    {
        int i;
        char* p = NULL;
        for (i = 0; i < count; i++)  //先排查 学号
        {
            p = strstr(stu[i].phone, keyPHONE);
            if (p) return i;
        }
        return -1;
    }
    int searchEMAIL(Student stu[], int count, char* keyEMAIL)  //int searchID(Student stu[], int count, char key) 修改
    {
        int i;
        char* p = NULL;
        for (i = 0; i < count; i++)  //先排查 学号
        {
            p = strstr(stu[i].email, keyEMAIL);
            if (p) return i;
        }
        return -1;
    }
    int search(Student stu[], int count, Student ss)
    {
        int i;
        for (i = 0; i < count; i++)
            if (strcmp(stu[i].name, ss.id) == 0) return i;
        return -1;
    }
            //功能:在stu的count个元素,查找ss
            //返回值:查找成功,返回ss在stu中的位置号;否则,返回 -1 
    
    int add(Student stu[], int count, Student ss)
    {
        int pos;
        //先判断添加的信息是否原本已有这个学生
        pos = searchID(stu, count, ss.id);
        //如果本来不存在,就添加 
        if (pos == -1)
        {
            stu[count] = ss;
            return count + 1;
        }
        return -1;
    }
            //若输入的学号存在,正常修改,返回学生数,否则,修改失败,返回 -1 
    int modify(Student stu[], int count, Student ss)
    {
        int pos;
        pos = searchID(stu, count, ss.id);
        if (pos == -1)
            return -1;
        else
        {
            stu[pos] = ss;
            return count;
        }
    }
    
            //若输入的学号存在,删除,返回学生数,否则,删除失败,返回 -1 
    int Delete(Student stu[], int count, Student ss)
    {
        int pos, i;
        pos = searchID(stu, count, ss.id);
        if (pos == -1)
            return -1;
        else
        {
            for (i = pos + 1; i < count; i++)
                stu[i - 1] = stu[i];
            return count - 1;
        }
    }
    void writeFile(Student stu[], int count)
    {
        FILE* fp;
        int i;
        //"w"是写文件 
        fp = fopen("student.dat", "w");
        for (i = 0; i < count; i++)
            //fprinf()是把文件内容输出到屏幕 
            fprintf(fp, "%s  %s  %d  %s  %s  %s  %s  %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);
    }
            //只读文件 
    int readFile(Student stu[])
    {
        FILE* fp;
        int i;
        fp = fopen("student.dat", "r");
        //如果文件不存在,返回0 
        if (fp == NULL)
            return 0;
        //foef()判断文件是否结束,结束返回1,未结束返回0,用!feof()作为循环条件 
        //fscanf()将文件中的数据读入数组变量id,name...中 
        for (i = 0;; i++)
            if (fscanf(fp, "%s %s %d %s %s %s %s %s", stu[i].id, stu[i].name, &stu[i].age, stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email) != 8) break;
        fclose(fp);
        return i;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月10日
  • 已采纳回答 2月2日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加