学生信息管理系统学生时代小作品源码(C语言版)

/*****************************************************************************/

/*

制作一个学籍管理系统:要求包含以下模块,模块用子函数完成1)输入若干条(20)条记录(包含学号,姓名,科目,科目成绩,学期学分)2)显示所有记录3)按学号排序4)插入一条记录5)查找并显示一条记录6)按姓名查找并删除一条记录7)显示统计信息  PS:因为是初学,不要用指针,用函数的做法做吧~~别做的太高端了。

学籍管理系统

姓名:****              学校:湖南理工学院信息学院              专业:信息工程

 

                                                                                                                                                                                 */

/*****************************************************************************/

 

 

//姓名,学号,英语,语文,数学三种成绩

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

#define maxnumber 30

int student_number;

int count1=0,count2=0,Operate1=3;

//FILE *stream;

typedef struct stu{

         int idnumber;

         char name[20];

         double English_score;

         double chinese_score;

         double math_score;

}Student;

//按学号排序

 

 

void putout_one(Student *sp)

{

         for( int j=0;j<10;j++)

                   printf("******");

         printf("\n");

         printf("     %d    %s              %.1f %.1f         %.1f\n",(*sp).idnumber,(*sp).name,(*sp).English_score,(*sp).chinese_score,(*sp).math_score);

         for( j=0;j<10;j++)

                   printf("******");

         printf("\n");

}

 

void putout_lot(Student *student)

{

         for(int i=0;i<=Operate1;i++)

         {

                   for(int j=0;j<10;j++)

                            printf("******");

                   printf("\n");

        

                   printf("     %d    %s              %.1f %.1f         %.1f\n",student[i].idnumber,student[i].name,student[i].English_score,student[i].chinese_score,student[i].math_score);

         }

         for( int j=0;j<10;j++)

                            printf("******");

                   printf("\n");

}

 

void input_student(Student *S)//输入插入学生的信息

{

         //printf("请输入第%d位学生(学号,名字,语文,英语,数学)\n",i+1);

         scanf("%d",&(*S).idnumber);          

         scanf("%s",&(*S).name);

         scanf("%lf%lf%lf",&(*S).chinese_score,&(*S).English_score,&(*S).math_score);

}

void id_find_in(Student *S,Student *q)//把新的学生信息加入表单

{

         Student *p=S,*t;

         while(count1<Operate1+1)

         {

                   t=p;

                   p++;

                   count1++;

         }

         *t=*q;

         count1=0;

         Operate1++;

}

 

void insert_element(Student *S)//插入学生信息

{

         printf("请输入1位学生(学号,名字,语文,英语,数学)\n");

         Student *temp=(Student *)malloc(sizeof(Student)),*q=S;

         input_student(temp);

         id_find_in(S,temp);

}

 

void delet_element(Student *S,int id_n)

{

         Student *p=S,*t;

         while(count1<Operate1)

         {

                   if((*p).idnumber==id_n)

                   {

                            t=p;

                            printf("已删除%d号学生信息\n",(*p).idnumber);

                            while(count2<Operate1-count1-1)

                            {

                                               *(t-1)=*(++t);

                                               count2++;

                            }

                            break;

                   }

                   count1++;

                   p++;

         }

         count1=0;

         count2=0;

         Operate1--;

}

 

int junge(char*a,char*b)

{

         char *p=a,*q=b;

         while(*p!='\0')

         {

                   if(*p==*q)

                   {

                            p++;

                            q++;

                           

                            continue;

                   }

                   else

                            break;

         }

         if(*p=='\0'&&*q=='\0')

                   return 1;

         else

                   return 0;

}

 

void show_stu_element(Student*S,char*sp)//显示某人信息(功能已实现)

{

         Student *p=S;

         while(count1<Operate1)

         {

                   if(junge((*p).name,sp))

                   {

                            printf("已找到此人:%s\n",(*p).name);

                            putout_one(p);

                            p=S;

                            break;

                   }

                   else

                   {                

                            p++;

                            count1++;

                            continue;

                   }

         }

         if(p!=S)

                   printf("查无此人!\n");

         count1=0;

}

void id_sort(Student *S)

{

         Student *temp=(Student*)malloc(sizeof(Student)),*q=S,*t;

         int num=Operate1;

         while(count1<Operate1)

         {

                   t=q+1;     

                   while(count2<num)

                   {

                            if( (*q).idnumber> (*t).idnumber)

                            {

                                     *temp=*q;

                                     *q=*t;

                                     *(t)=*temp;

                            //      printf("%d\n",(*t).idnumber);

                            }

                             

                            count2++;

                            t++;

                           

                   }

                   num--;

                   q++;

                   count2=0;

                   count1++;

                  

                   //q=q+sizeof(Student);

         }

         count1=0;

         count2=0;

}

 

void count_passnumber(Student *S)

{

         Student *p=S;

         int e_p_number=0,m_p_number=0,c_p_number=0,num=0;

         while(num<=Operate1)

         {

                   if(p->English_score>=60)

                            e_p_number++;

                   if(p->math_score>=60)

                            m_p_number++;

                   if(p->chinese_score>=60)

                            c_p_number++;

                   num++;

                   p++;

         }

         printf("/***学生总人数=:%d\n",Operate1);

         printf("/***英语过关人数=%d       数学过关人数=%d 语文过关人数=%d\n",e_p_number,m_p_number,c_p_number);

         printf("/***英语挂科人数=%d       数学挂科人数=%d 语文挂科人数=%d\n",Operate1+1-e_p_number,Operate1+1-m_p_number,Operate1+1-c_p_number);//因为数组下标是从0开始的

}

 

void main()

{

         Student student[maxnumber];

         //stream=freopen("in.txt","r",stdin);

         int Operate=3;int i;int id_n;

         char student_element[20];

         for(i=0;i<Operate1;i++)

         {

                   printf("请输入第%d位学生(学号,名字,语文,英语,数学)\n",i+1);

                   scanf("%d",&student[i].idnumber);                  

                   scanf("%s",&student[i].name);

                   scanf("%lf%lf%lf",&student[i].chinese_score,&student[i].English_score,&student[i].math_score);     

         }

         //fclose(stream);

         for( i=0;Operate!=0;i++)

         {

                   printf("输入:0.退出。\n1.输入学生信息\n2.按姓名查找并删除学生信息\n3.按学号排序\n4.查找显示一位学生信息     \n5.显示统计记录(成员数、每科平均分)\n6.输出每科及格人数和不及格人数\n7(default).操作完成,等待用户输入:\n");

                   scanf("%d",&Operate);

                   switch(Operate)

                   {

                   case 1:insert_element(student);     break;

                   case 2:      scanf("%d",&id_n);  delet_element(student,id_n);       break;

                   case 3:id_sort(student);break;

                   case 4:scanf("%s",student_element);  show_stu_element(student,student_element);break;

                   case 5:system(“cls”);  putout_lot(student);break;

                   case 6:count_passnumber(student);break;

                   default:    printf("请输入:\n");continue;

                   }

                   if(Operate==0)

                            break;

         }

}

加入了一个统计函数后的结果!

------------------------------------------------------------------------------------------------------2013年5月19日作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值