zoukankan      html  css  js  c++  java
  • C程序范例(1)——学生管理系统”数组“实现

    1.在写程序之前,我想告诉大家,这个程序初学者很可能可能看不懂,但是这很正常,因为这是我在学习完C语言之后写的。所以大家好好学习吧!

    由于这是在我大一刚学到数组时编写的程序,有许多冗余的部分,但当时做出来还是很高兴的。

    #include<stdio.h>
    #include<string.h>
    \注意老师登录的密码是123456
    \注意管理员登陆的密码是654321
    struct kecheng
    {
        long int num;
        char id[16];
        int cj;
        char name[16];
    };
    struct student 
    {
        long int num;
        char name[20];
        int age;
        char sex[4];
        char b[30];
        char p[15];
    };
    int n,w,q;
    char c1,c2,c3,c4,c5,c6;
    char n1,n2,n3,n4,n5,n6;
    struct student stu[100];
    struct student *p;
    struct kecheng ke[100];
    struct kecheng *a;
    void lr();
    void ll();
    void lls();
    void lrs();
    void cx();
    void cxs();
    void xg();
    void xgs();
    void sc();
    void scs();
    void jm();
    void jms();
    void main()\主界面显示
    {   
        int m=1;
        do
    {  
        int z;
        m+=1;
        printf("+------------------------+
    ");
        printf("|欢迎进入学生成绩信息系统|
    ");
        printf("+------------------------+
    ");
        printf("提示:请按照提示操作^_^
    ");
        printf("+---------------------+
    ");
        printf("|+[1]---登陆学生界面  |
    ");
        printf("|+[2]---登录教师界面  |
    ");
        printf("|+[3]---登陆管理员界面|
    ");
        printf("|+--------------------+
    ");
        printf("请输入您的选择:
    ");
        scanf("%d",&z);
        if(z==1)
        {   
            int a;
            printf("+---------------------------+
    ");
            printf("|+[1]---学生成绩的查询      |
    ");
            printf("|+[2]---学生个人信息的查询  |
    ");
            printf("|+[3]---学生成绩单的打印    |
    ");
            printf("|+[0]---退出                |
    ");
            printf("+---------------------------+
    ");
            printf("请输入您想查询功能的编号
    ");
            scanf("%d",&a);
            switch(a)
            {
            case 1:cxs();break;
            case 2:cx();break;
            case 3:lls();break;
            case 0:break;
            default:printf("无效选项
    ");
            }
        }
        if(z==2)
        {   
            int b,i=0;
            do
            {
            jm();
            i+=1;
            if(w==1)continue;
            if(w==0)break;
            }while(i<1);
            printf("
    ");
            printf("+-------------------------+
    ");
            printf("|+[1]---学生信息的录入    |
    ");
            printf("|+[2]---课程成绩信息的录入|
    ");
            printf("|+[3]---学生课程成绩单查询|
    ");
            printf("|+[4]---学生信息单查询    |
    ");
            printf("|+[5]---退出              |
    ");
            printf("+-------------------------+
    ");
            printf("请输入您想查询功能的编号
    ");
            scanf("%d",&b);
            switch(b)
            {
            case 1:lr();break;
            case 2:lrs();break;
            case 3:lls();break;
            case 4:ll();break;
            case 5:break;
            default:printf("无效选项
    ");
            }
        }
        if(z==3)
        {
            int c,i=0;
            do
            {
            jms();
            i+=1;
            if(q==1)continue;
            if(q==0)break;
            }while(i<1);
            printf("+------------------------------+
    ");
            printf("|+[1]---学生信息的删除         |
    ");
            printf("|+[2]---学生课程成绩信息的删除 |
    ");
            printf("|+[3]---初始密码的管理         |
    ");
            printf("|+[4]---学生信息的修改         |
    ");
            printf("|+[5]---课程成绩信息的修改     |
    ");
            printf("|+[0]---退出                   |
    ");
            printf("+-------------------------+
    ");
            printf("请输入您想查询功能的编号
    ");
            scanf("%d",&c);
            switch(c)
            {
            case 1:sc();break;
            case 2:scs();break;
            case 3:break;
            case 4:xg();break;
            case 5:xgs();break;
            case 0:break;
            default:printf("无效选项
    ");
            }
        }
    }while(m<=10);
    }
    void jm()\给老师加密的部分
    {   
        int i=1;
        do
    {  
        printf("请输入您的密码
    ");
        i+=1;
        c1=getch();printf("*");
        c2=getch();printf("*");
        c3=getch();printf("*");
        c4=getch();printf("*");
        c5=getch();printf("*");
        c6=getch();printf("*");
        if(c1=='1'&&c2=='2'&&c3=='3'&&c4=='4'&&c5=='5'&&c6=='6')
        {
            printf("登录成功
    ");
            return w=1;
        }
        if(c1!='1'||c2!='2'||c3!='3'||c4!='4'||c5!='5'||c6!='6')
        {
            printf("登录失败
    ");
            return w=0;
        }
    }while(i<=3);
    }
    void jms()\给管理员加密的部分
    {   
        int i=1;
        do
    {  
        printf("请输入您的密码
    ");
        i+=1;
        n1=getch();printf("*");
        n2=getch();printf("*");
        n3=getch();printf("*");
        n4=getch();printf("*");
        n5=getch();printf("*");
        n6=getch();printf("*");
        if(n1=='6'&&n2=='5'&&n3=='4'&&n4=='3'&&n5=='2'&&n6=='1')
        {
            printf("登录成功
    ");
            return q=1;
        }
        if(n1!='6'||n2!='5'||n3!='4'||n4!='3'||n5!='2'||n6!='1')
        {
            printf("登录失败
    ");
            return q=0;
        }
    }while(i<=3);
    }
    void ll()
    {
        int i,j;
        if(n!=0)
        { printf("学生总数:%d
    ", n);
        printf("学号	姓名	年龄	性别	地址		电话
    ");
        printf("-----------------------------------------------------
    ");
        for(i=0;i<n;i++)
        printf("%ld	%s	%d	%s	%s		%s
    ",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);
        }
        else printf("提示:无学生数据,请输入数据!");
    }
    void cx()\查询功能
    {
        int c;
        int w,i,j=0;
        char name[20];
        if(n!=0)
        {
          do{ printf("
    ");
          printf("+--------------------+
    ");
          printf("| 按学号查询 请按 1 |
    ");
          printf("| 按姓名查询 请按 2 |
    "); 
          printf("| 取消        请按 0 |
    ");
          printf("+--------------------+
    ");
          printf("请输入您的选择:");
          scanf("%d", &c);
          switch(c)
          {
          case 0:break;
          case 1:
          printf("请输入学生的学号;");
          scanf("%ld", &w);
          printf("
    ");
          for(i=0;i<n;i++)
          if(stu[i].num==w) 
          {
          printf("
    学号	姓名	年龄	性别	地址		电话
    ");
          printf("%ld	%s	%d	%s	%s		%s
    ",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);
          j=1;
          }
          if(j==0)
           printf("提示:没有该学生记录,请核对!");
           break;
          case 2:
            printf("请输入学生的姓名:");
            scanf("%s", name);
            printf("
    ");
            for(i=0;i<n;i++)
            if(strcmp(name,stu[i].name)==0)
            {
            printf("
    学号	姓名	年龄	性别	地址		电话
    ");
            j=1;
            printf("%ld	%s	%d	%s	%s		%s
    ",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);
            }
          if(j==0)
          printf("提示:没有该学生记录,请核对!");
           break;
           default:
           printf("
    提示:无效选项!");
            break;
          }
    
          }while(c!= 0);
        } else printf("提示:无学生数据,请输入数据!");
         return;
    }
    void lr()\录入功能
    {
         int y;
         if(n==0)
         p=stu;
         do
         {
          printf("--------------------
    ");
           printf("请输入学生的学号:");
           scanf("%ld",&p->num);
           printf("请输入学生的姓名:");
           scanf("%s",p->name);  
          printf("请输入学生的年龄:");
          scanf("%d",&p->age);
          printf("请输入学生的性别:");
          scanf("%s",p->sex);
          printf("请输入学生的地址:");
          scanf("%s",p->b);
          printf("请输入学生的电话:");
          scanf("%s",p->p);
          n++;
          p++;
          printf("
    1.继续输入.
    0.输入完毕.
    ");
           printf("请选择:");
          scanf("%d",&y);
         }
         while(y==1);
         printf("提示:输入完毕!你一共输入%d个
    ",n);
    
    } 
    void lrs()管理员界面的录入功能
    {
         int y;
         if(n==0)
         a=ke;
         do 
         {
         printf("--------------------
    ");
         printf("请输入课程的编号:");
         scanf("%ld",&a->num);
         printf("请输入课程名称:");
         scanf("%s",&a->id);
         printf("请输入课程的成绩:");
         scanf("%d",&a->cj);
         printf("请输入课程的代课老师:");
         scanf("%s",&a->name);
         n++;
         a++;
         printf("
    1.继续输入.
    0.输入完毕.
    ");
         printf("请选择:");
         scanf("%d",&y);
         }
        while(y==1);
        printf("提示:输入完毕!你一共输入%d个
    ",n);
    
    }
    void sc()\删除功能
    {
         long int num;
         int i,j,e; 
        if(n!=0)
        {
         printf("学号	姓名	年龄	性别	地址		电话
    "); 
         printf("-----------------------------------------------------
    ");
        for(i=0;i<n;i++)
           printf("%ld	%s	%d	%s	%s		%s
    ",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);
        printf("请输入您要删除的学生的学号:");
         scanf("%ld", &num);
        printf("
    ");
        for(i=0;i<n;i++)
        if(num==stu[i].num)
        j=i;
        if(j!=(n-1))
        {
         for(e=i-1;e<n;e++,j++)
         {
          stu[j].num=stu[j+1].num;
          strcpy(stu[j].name,stu[j+1].name);
          strcpy(stu[j].sex,stu[j+1].sex);
          stu[j].age=stu[j+1].age;
          strcpy(stu[j].b,stu[j+1].b);\直接将数组中的这个位置跳过,这样就可以实现删除功能
          strcpy(stu[j].p,stu[j+1].p);
           n--;p--;
         }
    }else {n--;p--;}
         printf("提示:删除完毕!");
        }else printf("提示:无学生数据,请输入数据!");
    }
    void lls()
    {
         int i,j;
         if(n!=0)
         { 
            printf("课程总数:%d
    ", n);   
            printf("课程编号	课程名	成绩	代课老师
    ");
            printf("-----------------------------------------------------
    ");
            for(i=0;i<n;i++)
            printf("%ld	%s	%d	%s
    ",ke[i].num,ke[i].id,ke[i].cj,ke[i].name);
         }
         else printf("提示:无课程成绩数据,请输入数据!");
    }
    void cxs()\查询
    {
         int c;
         int w,i,j=0;
         char name[20];
         if(n!=0)
         {
         do{ printf("
    ");
         printf("+--------------------+
    ");
         printf("| 按学号查询 请按 1 |
    ");
         printf("| 按姓名查询 请按 2 |
    "); 
         printf("| 取消        请按 0 |
    ");
         printf("+--------------------+
    ");
         printf("请输入您的选择:");
         scanf("%d", &c);
         switch(c) 
         {
    case 0:break;
    case 1:
    printf("请输入学生的学号;");
    scanf("%ld", &w);
    printf("
    ");
         for(i=0;i<n;i++)
          if(ke[i].num==w)
          {
            printf("
    课程编号	课程名称	成绩	代课老师
    ");
            printf("%ld	%s	%d	%s
    ",ke[i].num,ke[i].id,ke[i].cj,ke[i].name);
            j=1;
          }
          if(j==0)
          printf("提示:没有该课程成绩记录,请核对!");
          break;
    case 2:
    printf("请输入学生的姓名:");
    scanf("%s", name);
    printf("
    ");
    for(i=0;i<n;i++)
    if(strcmp(name,stu[i].name)==0)
    {
    printf("
    学号	姓名	年龄	性别	地址		电话
    ");
    j=1;
    printf("%ld	%s	%d	%s	%s		%s
    ",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p);
    }
    if(j==0)
    printf("提示:没有该学生记录,请核对!");
    break;
    default:
    printf("
    提示:无效选项!");
    break;
    }
    
    }while(c!= 0);
    }else printf("提示:无课程成绩数据,请输入数据!");
    return;
    }
    void scs()\在管理员界面实现删除功能
    {
    long int num;
    int i,j,e; 
    if(n!=0)
    {
    printf("课程编号	课程名称	课程成绩	代课老师
    ");
    printf("-----------------------------------------------------
    ");
    for(i=0;i<n;i++)
    printf("%ld	%s	%d	%s
    ",ke[i].num,ke[i].id,ke[i].cj,ke[i].name);
    printf("请输入您要删除的课程的编号:");
    scanf("%ld", &num);
    printf("
    ");
    for(i=0;i<n;i++)
    if(num==ke[i].num)
    j=i;
    if(j!=(n-1))
    {
    for(e=i-1;e<n;e++,j++)
    {
    ke[j].num=ke[j+1].num;
    strcpy(ke[j].id,ke[j+1].id);
    strcpy(ke[j].cj,ke[j+1].cj);
    strcpy(ke[j].name,ke[j+1].name);
    n--;a--;
    }
    }else {n--;a--;}
    printf("提示:删除完毕!");
    }else printf("提示:无学生数据,请输入数据!");
    }
    void xg()\实现修改功能
    {
    long int num;
    int i,j,c;
    if(n!=0)
    {
    printf("请输入您要修改的学生的学号:");
    scanf("%ld", &num);
    printf("
    ");
    for(i=0;i<n;i++)
    if(stu[i].num==num)
    j=i;
    do{
    printf("请选择您要修改的学生的信息内容:
    ");
    printf("+----------------------+
    ");
    printf("| 姓名 请按 1 |
    ");
    printf("| 年龄 请按 2 |
    ");
    printf("| 性别 请按 3 |
    ");
    printf("| 学号 请按 4 |
    ");
    printf("| 地址 请按 5 |
    ");
    printf("| 电话 请按 6 |
    ");
    printf("| 取消 请按 0 |
    ");
    printf("+----------------------+
    ");
    printf("请输入您的选择:");
    scanf("%d", &c);
    printf("
    ");
    switch(c)
    {
    case 0:break;
    
    case 1:printf("请输入新姓名:");
    scanf("%s",stu[j].name);
    break;
    case 2:printf("请输入新年龄:");
    scanf("%d",&stu[j].age);
    break;
    case 3:printf("请输入新性别:");
    scanf("%s",stu[j].sex);
    break;
    case 4:printf("请输入新学号:");
    scanf("%ld",&stu[j].num);
    break;
    case 5:printf("请输入新地址:");
    scanf("%s",stu[j].b);
    break;
    case 6:printf("请输入新电话:");
    scanf("%s",stu[j].p);
    break;
    default:
    printf("
    无效选项!");
    break;
    }
    
    }while(c!= 0);
    }else printf("提示:无学生数据,请输入数据!");
    }
    void xgs()
    {
    long int num;
    int i,j,c;
    if(n!=0)
    {
    printf("请输入您要修改的课程的编号:");
    scanf("%ld", &num);
    printf("
    ");
    for(i=0;i<n;i++)
    if(ke[i].num==num)
    j=i;
    do{
    printf("请选择您要修改的课程成绩的信息内容:
    ");
    printf("+----------------------+
    ");
    printf("| 课程编号 请按 1 |
    ");
    printf("| 课程名   请按 2 |
    ");
    printf("| 成绩     请按 3 |
    ");
    printf("| 代课老师 请按 4 |
    ");
    printf("+----------------------+
    ");
    printf("请输入您的选择:");
    scanf("%d", &c);
    printf("
    ");
    switch(c)
    {
    case 0:break;
    
    case 1:printf("请输入新课程编号:");
    scanf("%ld",&ke[j].num);
    break;
    case 2:printf("请输入新课程名称:");
    scanf("%s",ke[j].id);
    break;
    case 3:printf("请输入成绩:");
    scanf("%d",&ke[j].cj);
    break;
    case 4:printf("请输入新代课老师:");
    scanf("%s",ke[j].name);
    break;
    default:
    printf("
    无效选项!");
    break;
    }
    
    }while(c!= 0);
    }else printf("提示:无课程成绩数据,请输入数据!");
    }

    记得曾经有一周每天都是晚上2:00才睡,虽然并不完善但是当程序做出来的时候心里还是很兴奋的,希望与大家共同努力!

  • 相关阅读:
    gym 101480 Problem C: Cow Confinement 题解
    Uva 1072 Huffman Codes 题解
    NERC 2015 Hypercube 题解
    ACM ICPC 2017 WF Problem J Son of Pipe Stream题解
    CF Round # 295 (Div. 1)题解
    CF 1444 D Rectangular Polyline 题解
    BZOJ3308 九月的咖啡店
    BZOJ4025 二分图
    BZOJ4000 [TJOI2015]棋盘
    BZOJ3999 [TJOI2015]旅游
  • 原文地址:https://www.cnblogs.com/yjds/p/5886474.html
Copyright © 2011-2022 走看看