| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 190 人关注过本帖
标题:求大神给我做一个程序呗
只看楼主 收藏
孤枕者
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-1-7
结帖率:0
  已结贴   问题点数:20  回复次数:3   
求大神给我做一个程序呗
学生成绩管理
内容:1、使用结构体数组定义学生基本信息(学号、姓名、年龄)及成绩(C语言成绩、英语成绩和数据库成绩)。
       2、实现学生基本信息(学号、姓名、年龄)及成绩(C语言成绩、英语成绩和数据库成绩)的录入。
       3、实现基本信息的查询(根据学号)、删除(根据学号)与修改(根据学号)。
       4、根据每科成绩,求出每个人的总分。
       5、对学生考试成绩进行排序(根据学号或各科成绩排序)。
       6、输出显示功能选择提示。
       7、要求每个功能以一个单独的函数实现。
2018-01-07 14:46
孤枕者
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-1-7
  得分:0 
有没有大神会啊,我明天就要交了
2018-01-07 15:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:123
帖 子:5209
专家分:21944
注 册:2014-5-20
  得分:10 
明天就要交,你是神。
论坛搜索“学生成绩”
2018-01-07 19:14
自学的数学
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:69
专家分:186
注 册:2017-11-15
  得分:10 
<span style="font-size:16px;">#include "stdio.h"  
  
#include"string"  
  
/*定义学生结构体*/  
  
struct Student  
  
{  
  
     char ID[20];  
  
     char Name[20];  
  
     float Mark1;  
  
     float Mark2;  
  
     float Mark3;  
  
     float Average;  
  
};  
  
  
/*声明学生数组及学生数量*/  
  
struct Student students[1000];  
  
int num=0;  
  
   
  
/*求平均值*/  
  
float Avg(struct Student stu)  
  
{  
  
     return (stu.Mark1+stu.Mark2+stu.Mark3)/3;  
  
}  
  
   
  
/*通过学号返回数组下标*/  
  
int Student_SearchByIndex(char id[])  
  
{  
  
     int i;  
  
     for (i=0;i<num;i++)  
  
     {  
  
         if (strcmp(students[i].ID,id)==0)  
  
         {  
  
              return i;  
  
         }  
  
     }  
  
     return -1;  
  
}  
  
   
  
/*通过姓名返回数组下标*/  
  
int Student_SearchByName(char name[])  
  
{  
  
     int i;  
  
     for (i=0;i<num;i++)  
  
     {  
  
         if (strcmp(students[i].Name,name)==0)  
  
         {  
  
              return i;  
  
         }  
  
     }  
  
     return -1;  
  
}  
  
   
  
/*显示单条学生记录*/  
  
void Student_DisplaySingle(int index)  
  
{  
  
     printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");  
  
     printf("-------------------------------------------------------------\n");  
  
     printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,  
  
              students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);  
  
}  
  
   
  
/*插入学生信息*/  
  
void Student_Insert()  
  
{  
  
     while(1)  
  
     {  
  
         printf("请输入学号:");  
  
         scanf("%s",&students[num].ID);  
  
         getchar();  
  
   
  
         printf("请输入姓名:");  
  
         scanf("%s",&students[num].Name);  
  
         getchar();  
  
   
  
         printf("请输入成绩:");  
  
         scanf("%f",&students[num].Mark1);  
  
         getchar();  
  
   
  
         printf("请输入成绩:");  
  
         scanf("%f",&students[num].Mark2);  
  
         getchar();  
  
   
  
         printf("请输入成绩:");  
  
         scanf("%f",&students[num].Mark3);  
  
         getchar();  
  
   
  
         students[num].Average=Avg(students[num]);  
  
         num++;  
  
   
  
         printf("是否继续?(y/n)");  
  
         if (getchar()=='n')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
   
  
}  
  
   
  
/*修改学生信息*/  
  
void Student_Modify()  
  
{  
  
     //float mark1,mark2,mark3;  
  
     while(1)  
  
     {  
  
         char id[20];  
  
         int index;  
  
         printf("请输入要修改的学生的学号:");  
  
         scanf("%s",&id);  
  
         getchar();  
  
         index=Student_SearchByIndex(id);  
  
         if (index==-1)  
  
         {  
  
              printf("学生不存在!\n");  
  
         }  
  
         else  
  
         {  
  
              printf("你要修改的学生信息为:\n");  
  
              Student_DisplaySingle(index);  
  
              printf("-- 请输入新值--\n");  
  
  
              printf("请输入学号:");  
  
              scanf("%s",&students[index].ID);  
  
              getchar();  
  
  
              printf("请输入姓名:");  
  
              scanf("%s",&students[index].Name);  
  
              getchar();  
  
  
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].Mark1);  
  
              getchar();  
  
  
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].Mark2);  
  
              getchar();  
  
  
              printf("请输入成绩:");  
  
              scanf("%f",&students[index].Mark3);  
  
              getchar();  
  
  
              students[index].Average=Avg(students[index]);  
  
         }  
  
         printf("是否继续?(y/n)");  
  
         if (getchar()=='n')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
}  
  
   
  
/*删除学生信息*/  
  
void Student_Delete()  
  
{  
  
     int i;  
  
     while(1)  
  
     {  
  
         char id[20];  
  
         int index;  
  
         printf("请输入要删除的学生的学号:");  
  
         scanf("%s",&id);  
  
         getchar();  
  
         index=Student_SearchByIndex(id);  
  
         if (index==-1)  
  
         {  
  
              printf("学生不存在!\n");  
  
         }  
  
         else  
  
         {  
  
              printf("你要删除的学生信息为:\n");  
  
              Student_DisplaySingle(index);  
  
              printf("是否真的要删除?(y/n)");  
  
              if (getchar()=='y')  
  
              {  
  
                   for (i=index;i<num-1;i++)  
  
                   {  
  
                       students[i]=students[i+1];//把后边的对象都向前移动  
  
                   }  
  
                   num--;  
  
              }  
  
              getchar();  
  
         }  
  
         printf("是否继续?(y/n)");  
  
         if (getchar()=='n')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
}  
  
   
  
/*按姓名查询*/  
  
void Student_Select()  
  
{  
  
     while(1)  
  
     {  
  
         char name[20];  
  
         int index;  
  
         printf("请输入要查询的学生的姓名:");  
  
         scanf("%s",&name);  
  
         getchar();  
  
         index=Student_SearchByName(name);  
  
         if (index==-1)  
  
         {  
  
              printf("学生不存在!\n");  
  
         }  
  
         else  
  
         {  
  
              printf("你要查询的学生信息为:\n");  
  
              Student_DisplaySingle(index);  
  
         }  
  
         printf("是否继续?(y/n)");  
  
         if (getchar()=='n')  
  
         {  
  
              break;  
  
         }  
  
     }  
  
}  
  
   
  
/*按平均值排序*/  
  
void Student_SortByAverage()  
  
{  
  
     int i,j;  
  
     struct Student tmp;  
  
     for (i=0;i<num;i++)  
  
     {  
  
         for (j=1;j<num-i;j++)  
  
         {  
  
              if (students[j-1].Average<students[j].Average)  
  
              {  
  
                   tmp=students[j-1];  
  
                   students[j-1]=students[j];  
  
                   students[j]=tmp;  
  
              }  
  
         }  
  
     }  
  
}  
  
   
  
/*显示学生信息*/  
  
void Student_Display()  
  
{  
  
     int i;  
  
     printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");  
  
     printf("-------------------------------------------------------------\n");  
  
     for (i=0;i<num;i++)  
  
     {  
  
         printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,  
  
              students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);  
  
     }  
  
}  
  
   
  
/*将学生信息从文件读出*/  
  
void IO_ReadInfo()  
  
{  
  
     FILE *fp;  
  
     int i;  
  
     if ((fp=fopen("Database.txt","rb"))==NULL)  
  
     {  
  
         printf("不能打开文件!\n");  
  
         return;  
  
     }  
  
     if (fread(&num,sizeof(int),1,fp)!=1)  
  
     {  
  
         num=-1;  
  
     }  
  
     else  
  
     {  
  
         for(i=0;i<num;i++)  
  
         {  
  
              fread(&students[i],sizeof(struct Student),1,fp);  
  
         }  
  
     }  
  
     fclose(fp);  
  
}  
  
   
  
/*将学生信息写入文件*/  
  
void IO_WriteInfo()  
  
{  
  
     FILE *fp;  
  
     int i;  
  
     if ((fp=fopen("Database.txt","wb"))==NULL)  
  
     {  
  
         printf("不能打开文件!\n");  
  
         return;  
  
     }  
  
     if (fwrite(&num,sizeof(int),1,fp)!=1)  
  
     {  
  
         printf("写入文件错误!\n");  
  
     }  
  
     for (i=0;i<num;i++)  
  
     {  
  
         if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)  
  
         {  
  
              printf("写入文件错误!\n");  
  
         }  
  
     }      
  
     fclose(fp);  
  
}  
  
   
  
   
  
/*主程序*/  
  
void main()  
  
{  
  
     int choice;  
  
     IO_ReadInfo();  
  
     while(1)  
  
     {  
  
         /*主菜单*/  
  
         printf("\n------ 学生成绩管理系统------\n");  
  
         printf("1. 增加学生记录\n");  
  
         printf("2. 修改学生记录\n");  
  
         printf("3. 删除学生记录\n");  
  
         printf("4. 按姓名查询学生记录\n");  
  
         printf("5. 按平均成绩排序\n");  
  
         printf("6. 退出\n");  
  
         printf("请选择(1-6):");  
  
         scanf("%d",&choice);  
  
         getchar();  
  
         switch(choice)  
  
         {  
  
         case 1:  
  
              Student_Insert();  
  
              break;  
  
         case 2:  
  
              Student_Modify();  
  
              break;  
  
         case 3:  
  
              Student_Delete();  
  
              break;  
  
         case 4:  
  
              Student_Select();  
  
              break;  
  
         case 5:  
  
              Student_SortByAverage();  
  
              Student_Display();  
  
              break;  
  
         case 6:  
  
              exit(0);  
  
              break;  
  
         }  
  
         IO_WriteInfo();  
  
     }  
  
}  
</span>
2018-01-10 11:28







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077497 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved