C语言课程设计之学生学籍管理系统

做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct student
{
    char xuehao[100];//输入学号
    char name[100];//输入姓名
    char sex[100];//输入性别
    int age;//输入年龄
    char jiguan[100];//输入籍贯
    char dianhua[100];//输入电话
    char yuanxi[100];//输入院系
    char banji[100];//输入班级
} stu[1000];
void shouye()//首页
{
    int i;
    printf("^-^-----------------------------------------------------^-^\n");
    printf("\n");
    printf(" $               欢迎使用学生学籍管理系统!               $\n");
    printf(" $                            制作人:                    $\n");
    printf(" $                                   李威鹏              $\n");
    printf(" $                           时间:2017.12               $\n");
    printf("\n");
    printf("^-^-----------------------------------------------------^-^\n");
    printf("Enter键继续!");
    getchar();
    system("cls");
}
void zhuxiao()//注销用户
{
    system("shutdown -f ");
}
void denglu()//登陆
{
    void menu();
    int i,j;
    char mima[16];
    for(j=1; j<=4;)
    {
        if(j==4)
            break;
        else if(j<4)
        {
            printf("请输入6位密码:\n");
            printf("剩余输入次数%d\n",4-j);
            for(i=0; i<6; i++)
            {
                mima[i]=getch();
                printf("*");
            }
        }
        mima[i]='\0';
        if(strcmp(mima,"123456")==0)
        {
 
            system("cls");
            printf("密码正确\n");
            printf("登陆成功!\n");
            printf("按Enter键继续!");
            getchar();
            menu();
            return;
 
        }
        else
        {
            system("cls");
            printf("密码错误\n");
            j++;
        }
    }
    printf("注销用户!!!\n");
    zhuxiao();
    getch();
 
}
void menu()//菜单
{
    system("cls");
    printf("*-----------------------------学生管理系统--------------------------------*\n");
    printf("\n");
    printf("1.添加学生信息    2.删除某个学生信息     3.浏览学生信息\n");
    printf("4.修改学生信息    5.查找某个学生信息     6.显示信息数量\n");
    printf("0.退出系统\n");
    printf("\n");
    printf("*-------------------------------------------------------------------------*\n");
 
}
void save(int m)
{
    int i;
    FILE*fp;
    if ((fp=fopen("系统","wb"))==NULL)
    {
        printf ("文件打开失败\n");
        exit(0);
    }
    for (i=0; i<m; i++)
        if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
            printf("文件打开失败\n");
    fclose(fp);
}
int load()//打开文件,读取里面的数据
{
    FILE*fp;
    int i=0;
    if((fp=fopen("系统","rb"))==NULL)
    {
        printf ("文件打开失败\n");
        exit(0);
    }
    else
    {
        do
        {
            fread(&stu[i],sizeof(struct student),1,fp);
            i++;
        }
        while(feof(fp)==0);
    }
    fclose(fp);
    return(i-1);
}
int menuchoose()//选择菜单
{
    int n;
    menu();
    printf("请选择菜单0~6:");
    while(1 != scanf("%d", &n) || n < 0 || n> 6)
    {
        menu();
        printf("选择菜单错误,请重新选择(0 ~ 6):");
        fflush(stdin);//清空输入缓冲区
    }
    return n;
}
void add()//添加学生信息
{
    int i,m,q,s=1;
    system("cls");
    printf("---------------输入学生信息---------------\n");
    printf("请输入需要添加学生的总人数:\n");
    scanf("%d",&m);
    for (i=0; i<m; i++)
    {
        printf("\n输入第 %d 个学生学籍信息.\n",i+1);
        printf("请输入学号:");
        scanf("%s",stu[i].xuehao);
        for(q=0; q<m; q++)
        {
            if(strcmp(stu[q].xuehao,stu[i].xuehao)==0&&q!=i)
            {
                printf("该学号已经存在,请重新输入:\n");
                printf("请输入学号:\n");
                s=1;
                scanf("%s",stu[q].xuehao);
            }
        }
        printf("请输入姓名:");
        scanf("%s",stu[i].name);
        printf("请输入性别:");
        scanf("%s",stu[i].sex);
        printf("请输入年龄:");
        scanf("%d",&stu[i].age);
        getchar();
        printf("请输入籍贯:");
        scanf("%s",stu[i].jiguan);
        printf("请输入电话:");
        scanf("%s",stu[i].dianhua);
        printf("请输入院系:");
        scanf("%s",stu[i].yuanxi);
        printf("请输入班级:");
        scanf("%s",stu[i].banji);
    }
    save(m);
}
void show()
{
    system("cls");
    int i;
    int m=load();
    if(m==0)
    {
        printf("\n暂无学生信息!\n");
        printf("是否添加学生信息?\n     是:1    否:2\n");
        int a2;
        scanf("%d",&a2);
        if(a2==1)
            add();
        else
            menu();
    }
    else
    {
        printf("----------------------浏览学生信息--------------------------\n");
        printf("\n");
        printf("\t\t\t\t\t\t\t\n");
        for(i=0; i<m; i++)
        {
             printf("第%d位同学的信息为:\n",i+1);
        printf("学号:%s\n",stu[i].xuehao);
        printf("姓名:%s\n",stu[i].name);
        printf("性别:%s\n",stu[i].sex);
        printf("年龄:%d\n",stu[i].age);
        printf("籍贯:%s\n",stu[i].jiguan);
        printf("电话:%s\n",stu[i].dianhua);
        printf("院系:%s\n",stu[i].yuanxi);
        printf("班级:%s\n",stu[i].banji);
        }
        system("pause");
    }
}
void del()
{
 
    int m=load();
    int i,j,n,t,flag;
    char xuehao[20];
    printf("\n 原有的学生信息为:\n");
    show();
    printf("\n");
    printf("请输入要删除的学生的学号:\n");
    scanf("%s",xuehao);
    for(flag=1,i=0; flag&&i<m; i++)
    {
        if(strcmp(stu[i].xuehao,xuehao)==0)
        {
             printf("学号:%s\n",stu[i].xuehao);
        printf("姓名:%s\n",stu[i].name);
        printf("性别:%s\n",stu[i].sex);
        printf("年龄:%d\n",stu[i].age);
        printf("籍贯:%s\n",stu[i].jiguan);
        printf("电话:%s\n",stu[i].dianhua);
        printf("院系:%s\n",stu[i].yuanxi);
        printf("班级:%s\n",stu[i].banji);
            printf("是否要删除此人信息?\n是请按1,否请按0:\n");
            scanf("%d",&n);
            if(n==1)
            {
                for(j=i; j<m-1; j++)
                {
                    strcpy(stu[j].name,stu[j+1].name);
                    strcpy(stu[j].xuehao,stu[j+1].xuehao);
                    strcpy(stu[j].sex,stu[j+1].sex);
                    stu[j].age=stu[j+1].age;
                    strcpy(stu[j].yuanxi,stu[j+1].yuanxi);
                    strcpy(stu[j].banji,stu[j+1].banji);
                    strcpy(stu[j].jiguan,stu[j+1].jiguan);
                    strcpy(stu[j].dianhua,stu[j+1].dianhua);
                }
                flag=0;
            }
        }
    }
    if(!flag)
        m=m-1;
    else
        printf("\n无此人信息!\n");
    save(m);
    printf("\n是否继续删除信息\n 继续请按1\n退出请按0\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:
        del();
        break;
    case 0:
        menu();
        break;
    default :
        break;
    }
}
void xiugai()//修改学生信息
{
    system("cls");
    FILE *fp;
    int n,i,j,c,x,y;
    char m[10];
    n=load();
    show();
    printf("请输入要修改学生的学号或姓名:");
    scanf("%s",&m);
    do
    {
        printf("\n请选择要修改的选项:\n\n1.学号  2.姓名  3.性别  4.年龄  5.籍贯  6.电话  7.院系  8.班级  9.取消并返回\n");
        printf("请选择?:\n ");
        scanf("%d",&c);
        if(c>9||c<1)
        {
            menu();
            puts("\n选择错误!请重新选择!");
            fflush(stdin);//清空输入缓冲区
        }
    }
    while(c>9||c<1);
    for (i=0; i<n; i++)
        if (!strcmp(stu[i].xuehao,m)||!strcmp(stu[i].name,m))
        {
            switch (c)
            {
            case 1:
                printf("学号:");
                scanf("%s",stu[i].xuehao);
                break;
            case 2:
                printf("姓名:");
                scanf("%s",stu[i].name);
                break;
            case 3:
                printf("性别:");
                scanf("%s",stu[i].sex);
                break;
            case 4:
                printf("年龄:");
                scanf("%d",&stu[i].age);
                break;
            case 5:
                printf("籍贯:");
                scanf("%s",stu[i].jiguan);
                break;
            case 6:
                printf("电话:");
                scanf("%s",stu[i].dianhua);
                break;
            case 7:
                printf("院系:");
                scanf("%s",stu[i].yuanxi);
                break;
            case 8:
                printf("班级:");
                scanf("%s",stu[i].banji);
                break;
            case 9:
                menu();/*返回主菜单*/
            }
            printf("是否保存?\n");
            printf("是:1\n否:2\n");
            scanf("%d",&x);
        }
    if(x==1)
    {
        save(n);
        printf("保存成功!\n");
        printf("是否继续修改?继续:1  否:2\n");
        int p;
        scanf("%d",&p);
        if(p==1)
        {
            xiugai();
        }
        else
        {
            menu();
        }
    }
    else
    {
        printf("退出请按0,继续修改请按1\n");
        scanf("%d",&y);
        switch(y)
        {
        case 0:
            break;
        case 1:
            xiugai();
            break;
        }
    }
}
void showone(int c) /*输出一个学生的信息*/
{
     printf("学号:%s\n",stu[c].xuehao);
        printf("姓名:%s\n",stu[c].name);
        printf("性别:%s\n",stu[c].sex);
        printf("年龄:%d\n",stu[c].age);
        printf("籍贯:%s\n",stu[c].jiguan);
        printf("电话:%s\n",stu[c].dianhua);
        printf("院系:%s\n",stu[c].yuanxi);
        printf("班级:%s\n",stu[c].banji);
}
void chazhao()//查找某个学生的信息
{
    system("cls");
    FILE*fp;
    int a1,b1,c1,d1,e1,n,i;
    char t[10];
    n=load();
    printf("请输入要查找的学生的学号或姓名:");
    scanf("%s",t);
    for(i=0; i<n; i++)
        if (!strcmp(stu[i].xuehao,t)||!strcmp(stu[i].name,t))
        {
             printf("学号:%s\n",stu[i].xuehao);
        printf("姓名:%s\n",stu[i].name);
        printf("性别:%s\n",stu[i].sex);
        printf("年龄:%d\n",stu[i].age);
        printf("籍贯:%s\n",stu[i].jiguan);
        printf("电话:%s\n",stu[i].dianhua);
        printf("院系:%s\n",stu[i].yuanxi);
        printf("班级:%s\n",stu[i].banji);
            printf("是否继续查找?继续:1   返回主菜单:2\n");
            scanf("%d",&c1);
            switch(c1)
            {
            case 1:
                chazhao();
                return ;
            case 2:
                system("cls");
                menu();
                return;
            }
        }
    if (strcmp(stu[i].xuehao,t)||strcmp(stu[i].name,t))
    {
        printf("无该学生信息!\n");
        printf("是否继续查找?   继续:1    返回主菜单:2\n");
        scanf("%d",&b1);
        switch(b1)
        {
        case 1:
            chazhao();
            return;
        case 2:
            menu();
            return ;
        }
    }
}
void shuliang()
{
    system("cls");
    int n,h;
    n=load();
    printf("共有 %d 个学生的记录.\n",n);
    if(n==0)
    {
        printf("暂无学生信息!\n");
        system("pause");
        menu();
    }
    else
    {
        printf("是否显示学生信息?\n是:1   否:2\n");
        scanf("%d",&h);
        if(h==1)
        {
            show();
        }
        else
        {
            menu();
        }
    }
    menu(); /*返回主函数*/
}
int main()
{
    shouye();
    denglu();
    int test=1;
    while(test)
    {
        switch(menuchoose())
        {
        case 0:
            test=0;
            printf("\n                       ^-^谢谢使用!^-^         \n");
            printf("             代码有点长,错误也有点多,望见谅^-^\n");
            break;
        case 1://增加学生学籍信息
            add();
            break;
        case 2://删除某个学生信息
            del();
            break;
        case 3://显示学生信息
            show();
            break;
        case 4://修改学生信息
            xiugai();
            break;
        case 5://查找某个学生信息
            chazhao();
            break;
        case 6:
            shuliang();//显示学生学籍数量
            break;
        }
    }
    return 0;
}
 


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值