⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stu.c

📁 这是用C编写的一个学生信息管理系统。有良好的界面
💻 C
📖 第 1 页 / 共 3 页
字号:
}

/*修改功能的具体操作*/
void Rewrite(int x,int n)
{
    FILE *fp;
    char num[20],name[20],age[20],sex[20],birth[20],address[20],tel[20],email[20];
    switch(x)
    {
    case 0:
        gotoxy(35,4);
        printf("修改为:");
        gets(num);
        strcpy(Student[i].num,num);/*修改学号*/
        flag1=1;
        break;
    case 1:
        gotoxy(35,5);
        printf("修改为:");
        gets(name);
        strcpy(Student[i].name,name);/*修改姓名*/
        flag1=1;
        break;
    case 2:
        gotoxy(35,6);
        printf("修改为:");
        gets(age);
        strcpy(Student[i].age,age);/*修改年龄*/
        flag1=1;
        break;
    case 3:
        gotoxy(35,7);
        printf("修改为:");
        gets(sex);
        strcpy(Student[i].sex,sex);/*修改性别*/
        flag1=1;
        break;
    case 4:
        gotoxy(35,8);
        printf("修改为:");
        gets(birth);
        strcpy(Student[i].birth,birth);/*修改生日*/
        flag1=1;
        break;
    case 5:
        gotoxy(35,9);
        printf("修改为:");
        gets(address);
        strcpy(Student[i].address,address);/*修改地址*/
        flag1=1;
        break;
    case 6:
        gotoxy(35,10);
        printf("修改为:");
        gets(tel);
        strcpy(Student[i].tel,tel);/*修改电话*/
        flag1=1;
        break;
    case 7:
        gotoxy(35,11);
        printf("修改为:");
        gets(email);
        strcpy(Student[i].email,email);/*修改Email*/
        flag1=1;
        break;
    case 8:/*保存所作的修改*/
        fp=fopen("students.txt","wb");/*只写方式打开文件*/
        for(i=0;i<n;i++)
            fwrite(&Student[i],sizeof(struct StudentInfo),1,fp);/*逐条将修改处理后的学生信息写入文件*/  
        fclose(fp);/*关闭文件*/ 
        ClrScr();
        DrawFrame(29,11,51,13,0,7); 
        gotoxy(32,12);
        cprintf("学生信息修改成功!");
        gotoxy(79,1);
        getch();
        ClrScr();
        flag1=0;
        break;
    case 9:/*退出不进行修改或不保存修改*/
        flag1=0;
        puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
        break;
    }
}

/*删除学生信息*/
void Delete()
{
    FILE *fp;
    char string[20];
    fp=fopen("students.txt","rb");
    if(fp==NULL)/*如果没有students.txt文件就打印提示*/
    {
        ClrScr();
        DrawFrame(27,11,57,13,0,7); 
        gotoxy(30,12);
        cprintf("目前还没有学生信息,请添加");
        fclose(fp);
        gotoxy(79,1);
        getch();
        ClrScr();
    }
    else
    {
        for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐条读取文件中的学生记录*/
        fclose(fp);/*关闭文件*/
        n=i;/*把学生信息的数目赋值给n*/
        ClrScr();
        printf("请输入学生姓名或学号:");/*输入要删除的学生姓名或学号*/
        gets(string);
        for(flag=1,i=0;flag&&i<n;i++)/*逐条比较姓名或学号*/
        {
            if(strcmp(Student[i].num,string)==0||strcmp(Student[i].name,string)==0)/*如果找到同样姓名或学号,将下一条记录的姓名学号和成绩复制到该条记录中,并且循环将后面的下一条记录复制到前一条中(口才不好,表述的不是太清楚,也就是说将要删除的信息后面的所有信息全部往前移,把要删除的信息挤出去)*/
            {
                for(j=i;j<n-1;j++)
                {
                    Student[j]=Student[j+1];
                }
                flag=0;
            }
        }
    if(flag==0)/*如果成功删除...*/
        {
            n=n-1;/*信息数目减一*/
            fp=fopen("students.txt","wb");/*只写方式打开文件*/
            for(i=0;i<n;i++)
                fwrite(&Student[i],sizeof(struct StudentInfo),1,fp);/*逐条将删除处理过的记录信息写入文件*/  
            fclose(fp);/*关闭文件*/
            ClrScr();
            DrawFrame(29,11,51,13,0,7); 
            gotoxy(32,12);
            cprintf("学生信息删除成功!");
            gotoxy(79,1);
            getch();
            ClrScr();
        }
    else/*如果没有找到同样的姓名,输出相关信息*/
    {
            ClrScr();
            DrawFrame(29,11,56,13,0,7);
            gotoxy(32,12);
            cprintf("没有%s的相关信息!",string);
            gotoxy(79,1);
            getch();
            ClrScr();
        }
    }
}

/*按学号查询学生信息*/
void ConsultNum() 
{
    FILE *fp;
    char number[20]; 
    flag=0;
    fp=fopen("students.txt","rb");/*只读方式打开文件*/
    if(fp==NULL)/*如果没有students.txt文件就打印提示*/
    {
        ClrScr();
        DrawFrame(27,11,57,13,0,7); 
        gotoxy(30,12);
        cprintf("目前还没有学生信息,请添加");
        fclose(fp);
        getch();
        ClrScr();
    }
    else/*如果有students.txt文件就进行查询操作*/
    {
        ClrScr();
        printf("请输入要查询的学生学号:");
        gets(number);
        for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐一读取文件中的学生信息*/
        fclose(fp);/*关闭文件*/
        for(t=0;t<=i;t++)/*逐一比较学号,如果找到同样学号,输出相关信息*/
        {
            if(strcmp(Student[t].num,number)==0)
            {
                ClrScr();
                gotoxy(2,3);
                printf("已搜索到%s的相关信息:",number);
                gotoxy(2,4);
                printf("学号:%s",Student[t].num);
                gotoxy(2,5);
                printf("姓名:%s",Student[t].name);
                gotoxy(2,6);
                printf("年龄:%s",Student[t].age);
                gotoxy(2,7);
                printf("性别:%s",Student[t].sex);
                gotoxy(2,8);
                printf("生日:%s",Student[t].birth);
                gotoxy(2,9);
                printf("地址:%s",Student[t].address);
                gotoxy(2,10);
                printf("电话:%s",Student[t].tel);
                gotoxy(2,11);
                printf("Email:%s",Student[t].email);
                gotoxy(79,1);
                flag=1;
                break;
            }
        }
        if(flag==0)/*如果没有找到相同的学号,输出相关信息*/
        {
            ClrScr();
            DrawFrame(29,11,56,13,0,7);
            gotoxy(32,12);
            cprintf("没有%s的相关信息!",number);
            gotoxy(79,1);
            getch();
            ClrScr();
        }
    }
}

/*按姓名查询学生信息*/ 
void ConsultName() 
{
    FILE *fp;
    char name[20]; 
    flag=0;
    fp=fopen("students.txt","rb");/*只读方式打开文件*/
    if(fp==NULL)/*如果没有students.txt文件就打印提示*/
    {
        ClrScr();
        DrawFrame(27,11,57,13,0,7); 
        gotoxy(30,12);
        cprintf("目前还没有学生信息,请添加");
        fclose(fp);
        gotoxy(79,1);
        getch();
        ClrScr();
    }
    else/*如果有students.txt文件就进行查询操作*/
    {
        ClrScr();
        printf("请输入要查询的学生姓名:");
        gets(name);
        for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐一读取文件中的学生信息*/
        fclose(fp);/*关闭文件*/
        for(t=0;t<=i;t++)/*逐条比较姓名,如果找到同样姓名,输出相关信息*/
        {
        if(strcmp(Student[t].name,name)==0)
            {
                ClrScr();
                gotoxy(2,3);
                printf("已搜索到%s的相关信息:",name);
                gotoxy(2,4);
                printf("学号:%s",Student[t].num);
                gotoxy(2,5);
                printf("姓名:%s",Student[t].name);
                gotoxy(2,6);
                printf("年龄:%s",Student[t].age);
                gotoxy(2,7);
                printf("性别:%s",Student[t].sex);
                gotoxy(2,8);
                printf("生日:%s",Student[t].birth);
                gotoxy(2,9);
                printf("地址:%s",Student[t].address);
                gotoxy(2,10);
                printf("电话:%s",Student[t].tel);
                gotoxy(2,11);
                printf("Email:%s",Student[t].email);
                gotoxy(79,1);
                flag=1;
                break;
            }
        }
        if(flag==0)/*如果没有找到相同的姓名,输出相关信息*/
        {
            ClrScr();
            DrawFrame(29,11,57,13,0,7);  
            gotoxy(32,12);
            cprintf("没有%s的相关信息!",name);
            gotoxy(79,1);
            getch();
            ClrScr();
        }
    }
}

void Help() /*帮助*/
{
    ClrScr();
    DrawFrame(27,10,60,12,0,7); /*画边框*/
    gotoxy(30,11);
    cprintf("通过选择菜单来运行相应的功能");/*输出字符串*/
    gotoxy(79,1);
    getch();
    ClrScr();
}





void ClrScr()/*自定义清屏函数*/
{
    int i,j;
    puttext(2,3,78,23,c);/*刚开始已经用gettext把蓝色的一块地方保存下来,现在再还原*/
    gotoxy(2,3);
}

/*初始化界面前的设置,不能删除!*/
void Set()
{    
    system("cls"); 
    textbackground(BLUE);
    window(1,1,25,80);
    clrscr();
    textx=3;
    texty=2;
    gotoxy(79,1);
    getch();   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -