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才睡,虽然并不完善但是当程序做出来的时候心里还是很兴奋的,希望与大家共同努力!

原文地址:https://www.cnblogs.com/yjds/p/5886474.html