职场大变样社区

5598

主题

6638

帖子

79

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
79
跳转到指定楼层
楼主
发表于 2017-1-6 11:24:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
技术:C语言
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define MY1printf("学号\t姓名\t性别\t年龄\t生日")
#define MY2printf("\n%d  %6s     %4s\t%2d %8d%2d%2d \n",s.num,s.name,s.sex,s.age,s.a.year,s
.a.month,s.a.day)
#define MY3printf("家庭住址  联系方式 高数 英语 大物 总成绩")
#define MY4printf("\n%4s      %4s     %2d   %2d   %2d   %2d\n",s.address,s.tel,s.c.gao,s.c.ying,s
.c.wu,s.c.total)
#define MAX 30
int     i;
int     sum;
/*时间结构体类型*/
struct  date
       {
           int year;
             int  month;
             int  day;
       }a;
/*学生成绩结构体类型*/
struct  score
       {
           int gao;
             int  ying;
             int  wu;
             int  total;
       }c;
/*学生信息结构体类型*/
       struct s_message
        {
             int  num;
             char name[20];
             char sex[5];
             int  age;
             struct  date a;
             char address[50];
             char tel    [11];
             struct  score c;
       }s[MAX];
/*保存学生信息模块*/
void save_message(intsum)
{
         int  i;
            FILE*fp;
         if((fp=fopen("D:\\s.txt","wb"))==NULL)
         {
                printf("reading file is wrong!\n");
                return;
         }
           for (i=0;i<sum;i++)
         {
                if(fwrite(&s,sizeof(struct s_message),1,fp)!=1)
                        printf("writing file iswrong!\n");
         }
                fclose(fp);
}
/*读取学生信息模块*/
        int read_message()
         {
           FILE *fp;
         int i=0;
         if((fp=fopen("D:\\s.txt","rb"))==NULL)
         {
           printf("\n\n***********暂时无任何库存信息,按回车键进入主菜单选择基本信息的录入!***********\n");
                return 0 ;
         }
       while(feof(fp)==0)
       {
                if(fread(&s,sizeof(structs_message),1,fp)!=1)  break;
                i++;
         }
       fclose(fp);
         return(i);
            
       }
/*输入学生信息模块*/
       putin_message()
       {system("cls");
           int i=0,m=0;
             printf("\n\n***********输入学生信息****************\n\n");
              printf("输入要输入的学生的个数(m<MAX)\n");
             scanf("%d",&m);
         for(i=sum;i<sum+m;i++)
         {      printf("\n\n%d个学生的信息\n",i+1);
                    printf("\n           学生学号:");
                    scanf("%d",&s.num);
                    if(s.num==0) break;            
                    printf("\n           学生姓名:");
                    scanf("%s",s.name);
                    printf("\n           学生性别:");
                    scanf("%s",s.sex);
                    printf("\n           学生年龄:");
                    scanf("%d",&s.age);
                    printf("\n           学生生日:");
                    scanf("%d%d%d",&s.a.year,&s.a.month,&s.a.day);
                printf("\n           家庭住址:");
                    scanf("%s",s.address);
                    printf("\n           联系方式:");
                    scanf("%s",s.tel);
                    printf("\n           高数--英语--大物(成绩0-100):");
                    scanf("%d%d%d",&s.c.gao,&s.c.ying,&s.c.wu);
                   s.c.total=s.c.gao+s.c.ying+s.c.wu;
                    flushall();
         }
         printf("\n***********************学生信息输入完毕**********************\n");
         sum+=m;
       printf("\n           按回车键返回主菜单!");
         getch();
         return 0;
       }
/*输出学生信息模块*/
        void putout_message()
        {system("cls");
              int i=0;
              printf("\n*****************************学生信息表**********************\n\n");
          for(i=0;i<sum;i++)
              {
                MY1;
                MY2;
                MY3;
                MY4;
                printf("\n\n");
              }
              printf("按回车键返回主菜单!");
              getch();
       }
/*添加学生信息*/
       insert_message()
        {system("cls");
          int i=sum,flag=0;
              char choice;
              printf("\n\n**********添加一个学生信息***********\n");
          do
              {
                      printf("\n       学生学号:");
                      scanf("%d",&s.num);
                      if(s.num==0) break;
                      printf("\n       学生姓名:");
                      fflush(stdin);
             scanf("%s",s.name);
             printf("\n           学生性别:");
                   scanf("%s",s.sex);
                      printf("\n       学生年龄:");
                      scanf("%d",&s.age);
                      printf("\n       学生生日:");
                      scanf("%d %d%d",&s.a.year,&s.a.month,&s.a.day);
                      printf("\n       学生家庭住址:");
                      scanf("%s",s.address);
             printf("\n       联系方式:");
                      scanf("%s",s.tel);
                      printf("\n       高数--英语--大物(成绩0-100):");
                      scanf("%d%d%d",&s.c.gao,&s.c.ying,&s.c.wu);
                      s.c.total=s.c.gao+s.c.ying+s.c.wu;
                      sum++;
                      printf("\n       要继续吗?(Y/N)");
                      choice=getch();
             if(choice=='y'||choice=='Y')
                   {
                          printf("\n        继续!\n");
                          i++;
                       flag=1;
               }
                      else flag=0;
                   }while(flag==1);
            printf("   按回车键返回主菜单!");
            getch();
                   return 0;
       }
/*修改学生信息*/
       revise_message()
       {system("cls");
            int i=0,choice1;
                int revise_num,flag=0;
               int r=0;
               char choice2;
               printf("\n          输入要修改的学生的学号:");
               scanf("%d",&revise_num);      
               for(i=0;i<sum;i++)
               {
                    if(revise_num==s.num)
                              r=1;
          }
          if(r==0||revise_num==0)
               printf("没有该学生的相关信息");
               do
               {
                    for(i=0;i<sum;i++)
                       {      
                               if(s.num==revise_num)
                       {
                              
                                     printf("\n     你要修改哪一项?\n");
                                     printf("\n           1.学号\n");
                                     printf("\n           2.姓名\n");
                                     printf("\n           3.性别\n");
                      printf("\n           4.年龄\n");
                                     printf("\n           5.生日\n");
                                     printf("\n           6.家庭住址\n");
                                     printf("\n           7.联系方式\n");
                                     printf("\n           8.高数--英语--大物--总成绩\n");
                                     printf("请选择:");
                                     scanf("%d",&choice1);
                                     switch(choice1)
                                     {
                                            case 1:        printf("\n    输入修改后的学生学号:");
                                                 scanf("%d",&s.num);break;
                             case 2:        printf("\n    输入修改后的学生姓名:");
                                                  scanf("%s",s.name);break;
                             case 3:        printf("\n    输入修改后的学生性别:");
                                                  scanf("%s",s.sex);break;
                             case 4:        printf("\n    输入修改后的学生年龄:");
                                                 scanf("%d",&s.age);break;
                             case 5:        printf("\n    输入修改后的学生生日:");
                               scanf("%d%d%d",&s.a.year,&s.a.month,&s.a.day);break;
                             case 6:        printf("\n    输入修改后的学生家庭住址:");
                                               scanf("%s",s.address);break;
                                            case 7:       printf("\n    输入修改后的联系方式:");
                               scanf("%s",s.tel);break;
                             case 8:       printf("\n    输入修改后的高数--英语--大物(成绩0-100):");
                                                  scanf("%d%d%d",&s.c.gao,&s.c.ying,&s.c.wu);break;
                                     }
                              }  
                       }
                      printf("\n   要继续吗?(Y/N)");
                      choice2=getch();
                      if(choice2=='y'||choice2=='Y')
                      {
                  printf("\n   继续!\n");
                                      flag=1;
                      }
                      else  flag=0;
               }while(flag==1);
                printf("   按回车键返回主菜单!");
           getch();
                return 0;
       }
/*更新学生信息模块*/
renew_message()
        {system("cls");
               int  choice;
                      do
                      {
                             printf("\n\n\n*****************更新学生信息*******************\n\n");
                             printf("                1.添加学生信息\n\n");
                          printf("                2.修改学生信息\n\n");
                          printf("                0.返回主菜单\n\n");
                             printf("                choice(0-2)");
                             scanf("%d",&choice);
             switch(choice)
                       {
                              case 1:insert_message();break;
                     case2:revise_message();break;
                     case 0:break;
                       }
                      }while(choice!=0);
             return 0;
       }
/*按学号查询*/
int inquire_num()
       {system("cls");
        int i=0,j,r=0;
        printf("\n       输入要查询的学生的学号:");
          scanf("%d",&j);
          for(i=0;i<sum;i++)
          {
              if(j==s.num)
              r=1;
          }
          if(r==0||j==0)
        printf("没有该学生的相关信息");
        for(i=0;i<sum;i++)
        if(j==s.num)
          {
            printf("\n        **********学生信息**********\n");
                      MY1;
                      MY2;
                      MY3;
                      MY4;   
        }
          getch();
          return 0;         
       }
/*按姓名查询*/
       int inquire_name()
       {system("cls");
          int  i=0,r=0;
              char inquire_name[20];
              printf("\n     输入要查询的学生的姓名:");
              scanf("%s",inquire_name);
              for(i=0;i<sum;i++)
              {
                 if(strcmp(s.name,inquire_name)==0)
                       r=1;
              }
        if(r==0)
          printf("无该学生信息!!!\n");
              for(i=0;i<sum;i++)
          if(strcmp(s.name,inquire_name)==0)
              {
          printf("\n        **********学生信息**********\n");
                      MY1;
                      MY2;
                      MY3;
                      MY4;   
              }
          getch();
              return 0;  
       }
                               /*查询高数成绩及格的学生*/
       int inquire_gao()
       {system("cls");
                 int i=0,j=0;
                     int x=60;
                     printf("\n        ***高数成绩及格的学生的信息***\n");
                     for(i=0;i<sum;i++)
                     if(s.c.gao>=x)
                     {     
                                MY1;
                                   MY2;
                                   MY3;
                                   MY4;        
                                   j++;      
                     }
                 if(j==0)
                     printf("无高数成绩及格的学生!!!!\n");
                 getch();
                 return 0;
       }
                                 /*查询英语成绩及格的学生*/
        int inquire_ying()
        {system("cls");
                  inti=0,j=0;
                     int x=60;
                     printf("\n        ***英语成绩及格的学生的信息***\n");
                     for(i=0;i<sum;i++)
                     if(s.c.ying>=x)
                     {     
                                   MY1;
                                      MY2;
                                      MY3;
                                      MY4;   
                                      j++;     
                     }
                     if(j==0)
                     printf("无英语成绩及格的学生!!!!\n");
                     getch();
                     return 0;
       }  
                                   /*查询大学物理成绩及格的学生*/
int  inquire_wu()
{system("cls");
         int i=0,j=0;
         int x=60;
         printf("\n        ***大学物理成绩及格的学生的信息***\n");
         for(i=0;i<sum;i++)
         if(s.c.wu>=x)
         {
                          MY1;
                                MY2;
                             MY3;
                                MY4;        
                                j++;     
         }
         if(j==0)
         printf("无物理成绩及格的学生!!!!\n");
         getch();
         return 0;
}  
/*查询各门成绩及格的学生*/
int  inquire_jige()
{system("cls");
       int choice;
         do
         {
              printf("\n\n********查询学生信息*********\n\n");
                 printf("             1.查询高数成绩及格的学生\n\n");
                printf("             2.查询英语成绩及格的学生\n\n");
                printf("             3.查询大学物理成绩及格的学生\n\n");
                printf("             0.返回主菜单\n\n");
                 printf("            choice(0-3)\n\n");
                 scanf("%d",&choice);
          switch(choice)
              {
                case 1: inquire_gao();break;
                    case 2: inquire_ying();break;
                    case 3: inquire_wu();break;
              case 0: break;
          }
         }while(choice!=0);
          getch();
        return 0;
}
/*查询学生信息模块*/
  inquire_message()
{system("cls");
       int choice;
         do
         {
            printf("\n\n\n********查询学生信息*********\n\n");
                 printf("             1.按学号查询\n\n");
                printf("             2.按姓名查询\n\n");
              printf("             3.查询各门成绩及格的学生\n\n");
              printf("             0.返回主菜单\n\n");
                 printf("            choice(0-3)\n\n");
                 scanf("%d",&choice);
              switch(choice)
              {
                 case 1: inquire_num();break;
                     case 2: inquire_name();break;
                    case 3: inquire_jige();break;
               case 0: break;
              }
         }while(choice!=0);
          getch();
        return 0;
}
/*按学号排名*/
int rank_num()
{system("cls");
         int i=0,j;
         struct s_message t;
         for(i=0;i<sum-1;i++)
         {
            for(j=i+1;j<sum;j++)
               {
                    if(s.num>s[j].num)
                       {
                             t=s[j];
                             s[j]=s;
                             s=t;
                       }
               }
         }
         printf("   从学号小到大排列:\n");
         for(i=0;i<sum;i++)
         {
                 MY1;
                        MY2;
                        MY3;
                        MY4;
         }
         getch();
         return 0;
}   
/*按成绩排名*/
int rank_score()
{system("cls");
         int i=0,j;
         struct s_message t;
         for(i=0;i<sum-1;i++)
         {
            for(j=i+1;j<sum;j++)
               {
                    if(s.c.total<s[j].c.total)
                       {
                             t=s[j];
                             s[j]=s;
                             s=t;
                       }
               }
         }
         printf("   从成绩高到低排列:\n");
         for(i=0;i<sum;i++)
         {
                 MY1;
                        MY2;
                        MY3;
                        MY4;
         }
         getch();
         return 0;
}   
/*学生排名信息模块*/
int rank_message()
{  system("cls");
       int choice;
         do
         {
             printf("\n\n\n***********排名信息************\n\n");
                printf("                 1.按学号排名\n\n");
             printf("                 2.按成绩排名\n\n");
             printf("                 0.返回主菜单\n\n");
                printf("                choice(0-2)");
                scanf("%d",&choice);
                switch(choice)
                {
                       case 1:rank_num();break;
                 case 2:rank_score();break;
                       case 0:break;
                }
         }while(choice!=0);
         return 0;
}
/*统计男女学生的信息*/
int  count_nn()
{system("cls");
       int i=0,j=0;
         char k[5];
         printf("\n      输入要统计的学生的性别:");
         scanf("%s",k);
         printf("\n**********      %s的学生的信息     **********\n",k);
         for(i=0;i<sum;i++)
         {
             if(strcmp(s.sex,k)==0)
                {
                       MY1;
                             MY2;
                             MY3;
                             MY4;
                             j++;
                }
         }
         printf("统计%s的人数是:%d",k,j);
         getch();
         return 0;
}
/*按学号删除*/
int  del_num()
{system("cls");
        int i=0,m=0,k=0,flag;
          char choice;
          char de_num;
          do
         {
                printf("\n    输入要删除的学生的学号:");
                scanf("%d",&de_num);
                for(i=0;i<sum;i++)
                {
                     if(s.num!=de_num);
                  else break;
                       }
                for(i=0;i<sum;i++)
                {
                     if(s.num==de_num)
                        {
                                 m=i;
                           for(i=m+1;i<sum;i++)
                           s[i-1]=s;  
                        }
                }
                sum--;
                printf("\n  此学生的信息已被删除**********\n");
           printf("\n  要继续删除吗?(Y/N)");
                choice=getch();
                if(choice=='y'||choice=='Y')
                {
                        printf("\n  继续!\n");
                              k++;
                              flag=1;
                }
           else   flag=0;
         }while(flag==1);
         printf("  按任意键返回主菜单!");
         getch();
         return 0;
}
/*按姓名删除*/
int  del_name()
{system("cls");
        int i=0,m=0,k=0,flag;
          char choice;
          char de_name[20];
          do
         {
                printf("\n    输入要删除的学生的姓名:");
                scanf("%s",&de_name);
                for(i=0;i<sum;i++)
                {
                     if(strcmp(s.name,de_name)!=0);
                                        else break;
                       }
                for(i=0;i<sum;i++)
                {
                     if(strcmp(s.name,de_name)==0)
                        {
                                 m=i;
                           for(i=m+1;i<sum;i++)
                           s[i-1]=s;  
                        }
                }
                sum=sum-1;
                printf("\n  此学生的信息已被删除**********\n");
           printf("\n  要继续删除吗?(Y/N)");
                choice=getch();
                if(choice=='y'||choice=='Y')
                {
                        printf("\n  继续!\n");
                              k++;
                              flag=1;
                }
           else   flag=0;
         }while(flag==1);
         printf("  按任意键返回主菜单!");
         getch();
         return 0;
}
/*删除学生信息模块*/
del_message()
{system("cls");
           int choice;
                do
                {
                         printf("\n\n\n*****删除学生信息*****\n\n");
                            printf("                1.按学号删除\n\n");
                         printf("                2.按姓名删除\n\n");
                         printf("                0.返回主菜单\n\n");
                         printf("                choice(0-2)");
                            scanf("%d",&choice);
             switch(choice)
                {
                               case 1:del_num();break;
                               case 2:del_name();break;
                               case 0:break;
                }
           }while(choice!=0);
                getchar();
                return 0;
}
/*主函数*/
void main()
{system("cls");
           int choice,m;
                sum=read_message();
           char a[4]="110",b[4];
printf("\n\n\n**********************************请您输入密码**********************************\n");
  printf("密码:");
  for(m=0;m<3;m++)
  { b[m]=getch();
    printf("*");
  }
  b[3]='\0';
  getch();
  if(strcmp(a,b)==0)
  {
   do
  {               
                         printf
("\n\n********************************************************************************\n");
                            printf("\n\n************密码输入成功欢迎您进入学生信息管理系统
******************************\n\n");
                   printf("********************************************************************************\n");
                            printf("                         1.录入学生信息\n\n");
                   printf("                         2.输出学生信息\n\n");
                   printf("                         3.更新学生信息\n\n");
                   printf("                         4.查询学生信息\n\n");
                   printf("                         5.学生排名信息\n\n");
                   printf("                         6.统计学生信息\n\n");
                   printf("                         7.删除学生信息\n\n");
                   printf("                         0.退出系统\n\n");
                         printf("                         请选择(0-7):");
                            scanf("%d",&choice);
                   switch(choice)
                               {   
                       case 1:    putin_message();save_message(sum);break;
                                   case 2:    putout_message();break;
                                   case 3:    renew_message();break;
                                   case 4:    inquire_message();break;
                                   case 5:    rank_message();break;
                                   case 6:    count_nn();break;
                                   case 7:    del_message();break;
                                   case 0:    break;
                               }
           }while(choice!=0);
                save_message(sum);
                printf("学籍信息被保存!--(s.txt)\n");
}
}


学生管理系统.rar

12.8 KB, 下载次数: 2

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

职场大变样社区 分享高质量学习资料(电子课本、毕业设计、编程视频、项目源码、电子书籍等)

快速回复 返回顶部 返回列表