| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1055 人关注过本帖
标题:谁能帮我看看这个啊
只看楼主 加入收藏
xiaomo079
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-9-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
谁能帮我看看这个啊
   编写一个C语言程序,实现学生成绩管理系统。其中:
   
   1)至少能够管理100位同学的个人信息和成绩信息,个人信息和成绩需要有纠错功能。
   2)个人信息包括:学号(53开头的实际学号8位),姓名(至少可以保存4个汉字),性别,民族,出生年月(年份为4位数字,月份为2位数字),行政职务(班长、学委、无)。
   3)成绩信息包括:5门课程和总成绩的相关信息。5门课程包括:高级语言程序设计、高级语言程序设计实验、高级语言课程设计、面向对象程序设计、面向对象程序设计实验;每门课程的相关信息包括:课程名、课程学时、课程学分、所得成绩。总成绩的相关信息包括:平均成绩、加权平均成绩。
   注:要明确区别百分制和五分制的成绩;在折算平均成绩和加权平均成绩时,五分制成绩中优秀、良好、中等、及格、不及格分别对应百分制成绩的95、85、75、65、0;平均成绩不考虑学分因素,为每门课程的算术平均值;加权平均成绩需要考虑学分因素,为每门课程的加权平均值。
   具体功能要求如下:
   1)【增加】能够从文件中录入多位同学的相关信息(全部信息或部分信息),也能够随时录入1位新同学的相关信息(全部信息或部分信息)。需要考虑各种类型的不规范或错误数据。
   2)【修改】能够随时修改1位同学的相关信息,包括:对已录入的信息进行修改或删除、对未录入的信息进行添加。
   3)【删除】能够随时删除1位同学的所有信息。
   4)【计算】能够计算某位同学(按照学号或姓名搜索)的当前平均成绩排名和加权平均成绩排名。
   5)【存储】能够将当前系统中的所有信息保存到文件中。
   6)【某位同学成绩】能够打印某位同学(按照学号或姓名搜索)的平均成绩单和加权平均成绩单。平均成绩单必须包含:学号,姓名,5个课程的课程名和对应成绩,平均成绩,平均成绩排名;加权平均成绩单必须包含:学号,姓名,5个课程的课程名、学分和对应成绩,加权平均成绩,加权平均成绩排名。
   7)【某个班级成绩】能够按照学号顺序打印某班同学的所有成绩单。
   8)【某个科目成绩】能够按照单科成绩排名顺序打印某班同学的某门课程的成绩单,要求用链表实现。
   9)【总成绩】能够按照学号顺序打印某班或系统中所有同学的成绩单。
   10)【总成绩】能够按照平均成绩排名和加权平均成绩排名打印某班或系统中所有同学的成绩单。
   11)【某个科目优秀成绩】能够打印单科成绩为优秀(90-100)的有行政职务的同学成绩单,要求用链表实现。
   12)其它你认为有用的附加功能,可酌情添加。
   本人大一狗一枚  求大神给些指导
搜索更多相关主题的帖子: 程序设计 管理系统 个人信息 总成绩 C语言 
2013-09-07 11:07
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:4 
大一...   确定你可以做?先看看自己学了什么吧

三十年河东,三十年河西,莫欺少年穷!
2013-09-07 11:11
xiaomo079
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-9-7
收藏
得分:0 
回复 2楼 韶志
学了c 数据结构还没学  关键链表不怎么会
2013-09-07 11:13
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:4 
又来个作业

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-07 11:18
xiaomo079
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-9-7
收藏
得分:0 
要沉了么  好吧这是我写的好多排序还没写  大家给点建议吧 = =学的不好  求轻喷
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//记录总数
int num=0;
//结构体定义
struct Student
{
    int number;
    char name[20];
    char sex[10];
    char nation[10];
    int birth[6];
    char post[10];
    float mark1;//高级语言程序设计
    float mark2;//高级语言程序设计实验
    float mark3;//高级语言课程设计
    float mark4;//面向对象程序设计
    float mark5;//面向对象程序设计实验
    float average;//平均
    float weighted_average;//加权平均
}stu[100];
//显示学生记录
void fp_show1(int i)
{
printf("\t学号\t姓名\t性别\t民族\t出生年月\t行政职务\n");
printf("-------------------------------------------------------------\n");
printf("%d%s%s%s%d%s\n",stu[i].number,stu[i].name,
              stu[i].sex,stu[i].nation,stu[i].birth,stu[i].post);
printf("-------------------------------------------------------------\n");
printf("\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩\n");
printf("%f%f%f%f%f%f%f\n",stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].average,stu[i].weighted_average);
printf("-------------------------------------------------------------\n");
}
//学生个人平均成绩单
void fp_show2(int i){
    printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t平均成绩排名");
    printf("-------------------------------------------------------------\n");
    printf("%d%s%f%f%f%f%f%f%d",stu[i].number,stu[i].name,stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].average,&i);
    printf("-------------------------------------------------------------\n");
}
//学生个人加权平均成绩单
void fp_show3(int i){
printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t加权绩\t加权成绩排名");
    printf("-------------------------------------------------------------\n");
    printf("%d%s%f%f%f%f%f%f%d",stu[i].number,stu[i].name,stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].weighted_average,&i);
    printf("-------------------------------------------------------------\n");}
//1增加学生记录
void fp_add()
{
 while(1)
 {
 printf("\n请输入学号:\n");
 scanf("%s",stu[num].number);
 printf("\n请输入姓名:\n");
 scanf("%s",stu[num].name);
 printf("\n请输入性别:\n");
 scanf("%s",stu[num].sex);
 printf("\n请输入民族:\n");
 scanf("%s",stu[num].nation);
 printf("\n请输入出生年月:\n");
 scanf("%d",stu[num].birth);
 printf("\n请输入行政职务:\n");
 scanf("%s",stu[num].post);
 printf("\n请输入高级语言程序设计成绩:\n");
 scanf("%f",&stu[num].mark1);
 printf("\n请输入高级语言程序设计实验成绩:\n");
 scanf("%f",&stu[num].mark2);
 printf("\n请输入高级语言课程设计成绩:\n");
 scanf("%f",&stu[num].mark3);
 printf("\n请输入面向对象程序设计成绩:\n");
 scanf("%f",&stu[num].mark4);
 printf("\n请输入面向对象程序设计实验成绩:\n");
 scanf("%f",&stu[num].mark5);
 stu[num].average=(stu[num].mark1+stu[num].mark2+stu[num].mark3+stu[num].mark4,stu[num].mark5)/5;
 stu[num].weighted_average=stu[num].mark1*0.25+stu[num].mark2*0.125+stu[num].mark3*0.125+stu[num].mark4*0.25+stu[num].mark5*0.125;
 num++;
 getchar();
 printf("\n是否继续添加(y/n)\n");
 if(getchar()=='n') break;
 }
}
//2修改学生记录
void fp_modify()
{   int a;
    int i,t;
    while(1)
    {
    printf("\n请输入学生学号:\n");
    scanf("%d",a);
    if(a<5300||a>5399){
        printf("输入有误,请重新输入:");
           return;}
    else{
        for(t=0;t<num;t++){
             if(strcmp(stu[t].number,a)==0)
            i=t;
        }
        if(i>=0){
            fp_show1(i);
            printf("\n请输入修改后的学号:\n");
            scanf("%d",stu[i].number);
            printf("\n请输入修改后的姓名:\n");
            scanf("%s",stu[i].name);
            printf("\n请输入修改后的性别:\n");
            scanf("%s",stu[i].sex);
            printf("\n请输入修改后的民族:\n");
            scanf("%s",stu[i].nation);        
            printf("\n请输入修改后的出生年月:\n");
            scanf("%d",stu[i].average);
            printf("\n请输入修改后的行政职务:\n");
            scanf("%s",stu[i].post);
            printf("\n请输入修改后的高级语言程序设计成绩:\n");
             scanf("%f",&stu[i].mark1);
            printf("\n请输入修改后的高级语言程序设计实验成绩:\n");
            scanf("%f",&stu[i].mark2);
            printf("\n请输入修改后的高级语言程序课程设计成绩:\n");
            scanf("%f",&stu[i].mark3);
            printf("\n请输入修改后的面向对象程序设计成绩:\n");
            scanf("%f",&stu[i].mark4);
            printf("\n请输入修改后的面向对象程序设计实验成绩:\n");
            scanf("%f",&stu[i].mark5);
            stu[i].average=(stu[i].mark1+stu[i].mark2+stu[i].mark3+stu[i].mark4+stu[i].mark5)/5;}
         else
            printf("输入有误,修改失败");
             getchar();
            printf("\n是否继续修改(y/n)?\n");
                if(getchar()=='n') return;
    }
    }
}
//3删除学生记录
void fp_delete(){
    int i,t,a;
while(1){
    printf("\n请输入删除的学生学号:\n");
    scanf("%d",a);
    for(t=0;t<num;t++)//返回下标;
    {
        if(strcmp(stu[t].number,a)==0)
        i=t;
    }
    if(i>=0)
    {
      fp_show(i);
      getchar();
      printf("\n是否真的要删除?(y/n)\n");
      if(getchar()=='y')
      {
       for(t=i;t<num-1;t++)
           stu[t]=stu[t+1];
       num--;
      }
    }
    else
    printf("输入有误,删除失败");
    getchar();
    printf("\n是否继续删除(y/n)?\n");
    if(getchar()=='n') return;
}
}
//4按姓名查询学生记录
void fp_search()
{ void fp_show1(int);
  char a[20];
  int i,t;
  while(1)
  {
  printf("\n请输入学生姓名:\n");
  scanf("%s",a);
  for(i=0;i<num;i++)
  {
   if(strcmp(stu[i].name,a)==0)
       t=i;
  }
  if(t>=0)
  fp_show(t);
  else
  printf("失败");
  getchar();
  printf("\n返回/继续 y/n\n");
  if(getchar()=='y') break;
  }
}
//学号顺序查询
void fp_show4(int){
    printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩");
    printf("-------------------------------------------------------------\n");
    printf("\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩\n");
    printf("%f%f%f%f%f%f%f\n",stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].average,stu[i].weighted_average);
}
//5按平均成绩排序
void fp_show5(int)
{int i,j;
 struct Student temp;
 for(i=0;i<num-1;i++)//冒泡法排序
  for(j=0;j<num-1-i;j++)
   if(stu[i].average>stu[i+1].average)
   { temp=stu[i];
     stu[i]=stu[i+1];
     stu[i+1]=temp;
   }
  //输出成绩排序
   
   printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩\n");
   printf("-------------------------------------------------------------\n");
   for(i=num-1;i>=0;i--){
   printf("%d%s%f%f%f%f%f%f%f\n",stu[i].number,stu[i].name,
              stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].weighted_average,stu[i].average);
   }
   getchar();
   printf("\n请输入y返回\n");
   if(getchar()=='y') return;

}
//按加权平均成绩排序
void fp_show6(int)
{int i,j;
 struct Student temp;
 for(i=0;i<num-1;i++)//冒泡法排序
  for(j=0;j<num-1-i;j++)
   if(stu[i].weighted_average>stu[i+1].weighted_average)
   { temp=stu[i];
     stu[i]=stu[i+1];
     stu[i+1]=temp;
   }
  //输出成绩排序
   
   printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t加权平均成绩\n");
   printf("-------------------------------------------------------------\n");
   for(i=num-1;i>=0;i--){
   printf("%d%s%f%f%f%f%f%f%f\n",stu[i].number,stu[i].name,
              stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].weighted_average);
   }
   getchar();
   printf("\n请输入y返回\n");
   if(getchar()=='y') return;

}
//单科优秀成绩查询
void fp_show7(int){
    for(i=0;i<num;i++){
        for(j=0;j<num-1-i;j++)
               if(stu[i].mark>stu[i+1].mark)
               { temp=stu[i];
                 stu[i]=stu[i+1];
                  stu[i+1]=temp;
               }
            printf("\t学号\t姓名\t成绩");
            printf("-------------------------------------------------------------\n");
            printf("%d%s%f",stu[i].number,stu[i].name,stu[i].mark);
    }
}
//单科成绩排序
void fp_show8(int){
    for(i=0;i<num;i++){
        if(stu[i].mark>89){
            printf("\t学号\t姓名\t行政职务\t单科成绩");
            printf("-------------------------------------------------------------\n");
            printf("%d%s%s%f",stu[i].number,stu[i].name,stu[i].post,stu[i].mark);}
}
//打开文件
void fp_open()
{ FILE *fp;
  int i;
  if((fp=fopen("database.txt","rb"))==NULL)
  {
      printf("打开文件失败;\n");
      return;
  }
  if(fread(&num,sizeof(int),1,fp)!=1)
  {
      num=0;
  }else
  {
   for(i=0;i<num;i++)
       fread(&stu[i],sizeof(struct Student),1,fp);
  }
  fclose(fp);
}
//写进数据
void fp_write()
{
  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(&stu[i],sizeof(struct Student),1,fp)!=1)
        printf("写入错误\n");
  }
  fclose(fp);

}
//主程序
int main()
{   int choice;
    //打开文件
    fp_open();
    while(1)
    {
       printf("\n\n  ***************欢迎使用学生成绩管理系统***************\n\n\n");
       printf("\t\t☆\t1.增加学生信息\t☆\n");
       printf("\t\t☆\t2.修改学生信息\t☆\n");
       printf("\t\t☆\t3.删除学生信息\t☆\n");
       printf("\t\t☆\t4.查询学生信息\t☆\n");
       printf("\t\t☆\t5.成绩排序信息\t☆\n");
       printf("\t\t☆\t6.保存并退出  \t☆\n\n\n");
       printf("  ******************************************************\n");
       printf("◇请选择(1-6):◇ \n");
       scanf("%d",&choice);
       switch(choice)
       {
         case 1 : fp_add(); break;
         case 2 : fp_modify(); break;
         case 3 : fp_delete(); break;
         case 4 :
             int i,a;      
             printf("  *******************************************************\n\n");
             printf("\t☆\t1.查询学生个人信息      \t☆\n");
             printf("\t☆\t2.查询学生个人平均成绩单\t☆\n");
             printf("\t☆\t3.查询学生个人加权成绩单\t☆\n");
             printf("\t☆\t4.返回上一层            \t☆\n\n");
             printf("  *******************************************************\n");
             printf("◇请选择(1-4):◇ \n");
             scanf("%d",&i);
             printf("请输入所查询学生的学号:\n");
             scanf("%d",&a);
             switch(i){
             case 1:void fp_show1(int a);break;
             case 2:void fp_show2(int a);break;
             case 3:void fp_show3(int a);break;
             case 4:exit(0);break;
                  }break;
         case 5 :
             int n;
             printf("  ***************************************************\n\n");
             printf("\t☆\t1.总成绩查询      \t☆\n");
             printf("\t☆\t2.班级成绩查询    \t☆\n");
             printf("\t☆\t3.单科优秀成绩查询\t☆\n");
             printf("\t☆\t4.返回上一层      \t☆\n\n");
             printf("  ***************************************************\n");
             printf("◇请选择(1-4):◇ \n");
             scanf("%d",&n);
             switch(n){
             case 1:
                   int j;
                   printf("  *****************************************************\n\n");
                   printf("\t☆\t1.总成绩学号顺序查询\t☆\n");
                   printf("\t☆\t2.总成绩平均成绩排名\t☆\n");
                   printf("\t☆\t3.总成绩加权平均排名\t☆\n");
                   printf("\t☆\t4.返回上一层        \t☆\n\n");
                   printf("  *****************************************************\n");
                   printf("◇请选择(1-4):◇ \n");
                   scanf("%d",&j);
                   switch(j){
                     case 1:fp_show4();break;
                      case 2:fp_show5();break;
                     case 3:fp_show6();break;
                     case 4:exit(0);break;
                   }
             case 2:
                 int k,a;
                 printf("  ***************************************************\n\n");
                 printf("\t☆\t1.班级学号顺序查询    \t☆\n");
                 printf("\t☆\t2.班级平均成绩排名    \t☆\n");
                  printf("\t☆\t3.班级加权平均成绩排名\t☆\n");
                 printf("\t☆\t4.班级单科成绩排名    \t☆\n");
                 printf("\t☆\t5.返回上一层          \t☆\n\n");
                 printf("  ***************************************************\n");
                  printf("◇请选择(1-5):◇ \n");
                 scanf("%d",&k);
                 printf("请输入所查的班级:\n");
                 scanf("%d",a);
                 switch(k){
                     case 1:fp_show4(int a);break;
                      case 2:fp_show5(int a);break;
                     case 3:fp_show6(int a);break;
                     case 4:fp_show8(int a);break;
                     case 5:exit(0);break;
                 }
                 case 3:fp_show7(int);break;        
                 case 4:exit(0);break;
           }break;
         default: exit(0);break;
       }
    //关闭并写入数据
    fp_write();
    }
return 0;
}
2013-09-07 11:36
xiaomo079
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-9-7
收藏
得分:0 
回复 4楼 peach5460
版主手下留情
2013-09-07 11:36
xiaomo079
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-9-7
收藏
得分:0 
弱弱的问一句如果把一百个人的信息放在文本里  怎么操作让他们能对应啊
2013-09-07 11:44
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
回复 5楼 xiaomo079
呵呵,跟你讲个笑话

真正的程序员是不会写小行星毁灭地球这种软件的
真正的程序员会写一个程序撞击软件,然后把地球的坐标传进去...

小细节,小细节

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-07 13:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
楼主自己写的那些代码,到底自己测试过哪些是对的、哪些是错的没有?

授人以渔,不授人以鱼。
2013-09-07 19:36
power_c
Rank: 2
来 自:火星
等 级:论坛游民
帖 子:19
专家分:33
注 册:2013-9-7
收藏
得分:4 
你还是先学好链表再来看这个题吧,那么简单的题 让你写那么复杂


           ----------------脑袋空不要紧,关键是不要进水
2013-09-07 21:43
快速回复:谁能帮我看看这个啊
数据加载中...
 
   



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

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