学生成绩管理系统

#include 
#include 
#include 
#include 
#define CLS system("cls")
#define N 12
#define MAX 100

int flag=0;
struct X
{
    int x;
};
struct student
{
    char name[N];
    char num[N];
    char major[N];
    struct X A;
    struct X B;
    struct X C;
    struct X D;
} stu[MAX];

void face();
void menue();
void login();
int load();
void input();
void save();
void exit();
void insert();
void printf_back();
void browse();
void printf_n();
void printf_one();
void browse();
void deleter();
void search();
void modify();
int modify_data();

int main()
{
    face();
    menue();
}


void face()
{
    system("color 4e");
    printf("\n\t    ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");
    puts("  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
    puts("  ※※                                                                    ※※");
    puts("  ※※                                                                    ※※");
    puts("  ※※          Welcome to visit the student management system!           ※※");
    puts("  ※※                                                                    ※※");
    puts("  ※※                                                                    ※※");
    puts("  ※※                                                                    ※※");
    puts("  ※※                                                                    ※※");
    puts("  ※※                                           Author:zhangpeng         ※※");
    puts("  ※※                                             Date:2014.06.19        ※※");
    puts("  ※※                                                                    ※※");
    puts("  ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※");
    printf("\n\tPress [ Enter ] key to continue……\n");
    getchar();
    CLS;
}

void menue() //主菜单
{
    int n,w1;
    system("color 2e");
    printf("\n\t      Welcome to use the student management system!!\n");
    printf("\n");
    do
    {
        puts("\t\t★★★★★★★★★  菜单  ★★★★★★★★★");
        puts("\t\t★               1.登  录                 ★");
        puts("\t\t★               2.插  入                 ★");
        puts("\t\t★               3.删  除                 ★");
        puts("\t\t★               4.查  找                 ★");
        puts("\t\t★               5.修  改                 ★");
        puts("\t\t★               6.浏  览                 ★");
        puts("\t\t★               7.退  出                 ★");
        puts("\t\t★★★★★★★★★★★★★★★★★★★★★★");
        printf("\n\n   Please select the type of service (1-7) : [ ]\b\b");
        scanf("%d",&n);
        if(n<1||n>7)
        {
            CLS;
            printf("\nSelect error!  Please try again\n\n\n\n");
            w1=1;
        }
        else
            w1=0;
    }
    while(w1);
    switch(n)
    {
    case 1:
        login();
        break; //登录
    case 2:
        CLS;
        insert();
        break; //插入
    case 3:
        CLS;
        deleter();
        break; //删除
    case 4:
        CLS;
        search();
        break; //查找
    case 5:
        CLS;
        modify();
        break; //修改
    case 6:
        CLS;
        browse();
        break; //浏览
    case 7:
        exit();
        break; //退出
    }
}

int load() //打开文件,读取里面的数据
{
    FILE *fp;
    int i;
    if((fp=fopen("D:\\file.txt","r"))==NULL) ///读入空文件,rb表示打开一个二进制文件,只允许读数据
    {
        printf("\nThere is no such file!:\n");
        return 0;
    }
    for(i=0; !feof(fp); i++) //处理到文件结尾
        fread(&stu[i],sizeof(struct student),1,fp);
    //fread(buffer,size,cout,fp)将磁盘文件中的一批数据作为一个整体一次性读取出来
    //buffer指定数据块位置,sizeof数据块字节数,count读取次数,fp指向源磁盘文件
    fclose(fp);
    return(i-1);
}

void login()
{
    int n,i,m,w,d,q,w2,w3;
    char password[20];
    struct student s;
    CLS;
    if(flag)
    {
        printf(" .--.\n");
        printf("/.-. '----------.\n");
        printf("\'-' .--\"--\"\"-\"-'\n");
        printf(" '--'\n");
        printf("  Logged successful!\n");
        printf("Press any key to continue. . .\n");
        getchar();
        CLS;
        menue();
    }

    FILE *fp;
    if((fp=fopen("D:\\file.txt","r"))!=NULL) ///不是空文件
        n=load(); //打开文件
    else
        n=0;

    do
    {
        printf("\n\t请选择登录身份:\n\n\t\t\t1.管理员      2.用户     [ ]\b\b");
        scanf("%d",&d);
        if (d!=1&&d!=2)
        {
            CLS;
            printf("\nSelect error!  Please try again\n\n\n\n");
            w2=1;
        }
        else
            w2=0;
    }
    while(w2);

    if(d==1)
    {
        printf("\n\t\t\tPlease enter the password:");
        getchar();
        int j=0;
        while(1)
        {
            password[j]=getch();
            if(password[j]=='\r')
                break;
            printf("*");
            j++;
        }
        password[j]='\0';
        if(!strcmp(password,"123")) /*判断密码是否正确*/
        {
            flag=1;
            printf("\n");
            printf("  .--.\n");
            printf(" /.-. '----------.\n");
            printf(" \\'-' .--\"--\"\"-\"-'\n");
            printf("  '--'\n");
            printf("    Logged successful!\n");
            printf("      Press any key to continue. . .\n");
            getchar();
            CLS;
            menue();
        }
        if(!flag)
        {
            CLS;
            printf("\t\nPassword is error!\n\n");
            do
            {
                printf("\n\tWhat do you want to do next? 1.继续登录  2.返回菜单   [ ]\b\b");
                scanf("%d",&q);
                if (q!=1&&q!=2)
                {
                    CLS;
                    printf("\nSelect error!  Please try again\n\n\n");
                    w3=1;
                }
                else
                    w3=0;
            }
            while (w3);

            if(q==1) /*继续登录*/
            {
                CLS;
                login();
            }
            else if(q==2) /*返回主菜单*/
            {
                CLS;
                menue();
            }
        }
    }

    else
    {
        printf("\n\t\t\t用户名:");
        scanf("%s",s.name);
        printf("\t\t\t密  码:");
        int j=0;
        while(1)
        {
            password[j]=getch();
            if(password[j]=='\r')
                break;
            printf("*");
            j++;
        }
        password[j]='\0';
        flag=0; /*未登录时flag=0*/
        for(i=0; i2)
        {
            printf("输入错误!请重新输入!\n");
            w2=1;
        }
        else
            w2=0; /*这里要注意:不加这句话会陷入死循环,跳不出来*/
    }
    while(w2==1);
    if(w1==1) /*按姓名查找*/
    {
        do
        {
            k=-1;
            do
            {
                printf("\n请输入您想要查找的学生的姓名!\nName:");
                scanf("%s",s.name);
                for(i=0; i9||c<1)
        {
            puts("\n选择错误!请重新选择!");
            getchar();
        }
    }
    while(c>9||c<1);
    do
    {
        switch(c)
        {
        case 1:
            printf("学号:");
            gets(stu[i].num);
            break;
        case 2:
            printf("姓名:");
            gets(stu[i].name);
            break;
        case 3:
            printf("专业:");
            gets(stu[i].major);
            break;
        case 4:
            printf("科目A:");
            scanf("%d",&stu[i].A.x);
            break;
        case 5:
            printf("科目B:");
            scanf("%d",&stu[i].B.x);
            break;
        case 6:
            printf("科目C:");
            scanf("%d",&stu[i].C.x);
            break;
        case 7:
            printf("科目D:");
            scanf("%d",&stu[i].D.x);
            break;
        case 8:
            input(i);
            break;  /*修改这个学生的所有信息*/
        case 9:
            menue();  /*返回主菜单*/
        }
        puts("\nNow:\n");
        printf_one(i); /*输出 修改后 的这个学生的信息*/
        printf("\n确定?\n\n\t1).是  2).不,重新修改  3).返回不保存 [ ]\b\b");
        scanf("%d",&w1);
    }
    while(w1==2);
    return(w1); /*修改成功并选择1后返回1*/
}

void modify() /*修改*/
{
    if(!flag)
    {
        printf("\n\n\t请先登录!\n");
        printf("\n\t请按 Enter 键进入登录界面!");
        getchar();
        getchar();
        login();
    }
    else
    {
        struct student s;
        int i,n,k,w0=1,w1,w2=0;
        n=load();
        do
        {
            k=-1;
            //printf_n(n); /*删除之前先显示所有学生的信息*/
            do
            {
                printf("\n请输入您想要修改的学生的姓名!\nName:");
                scanf("%s",s.name);
                for(i=0; i

你可能感兴趣的:(学生成绩管理系统)