回 帖 发 新 帖 刷新版面

主题:大哥们,帮小弟看看这程序。急

哈哈,是长了点。可要救命啊,各位大哥
我分了0,1,2,接上,来写完的
请看完,不尽感激


#include<process.h>
#include<stdlib.h>
#include<dos.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#define key_down 80
#define key_up 72
#define key_a 30
#define key_b 48
#define key_c 46
#define key_e 15
#define key_enter 28
#define key_f 49
#define key_h 50
#define key_i 58
#define key_j 60
#define key_k 68
#define flag NULL
#define NULL 0
#define N 3
char num0[N];
int label;
typedef struct { /*定义学生记录的结构体*/
char num[N];
int label;
char *name;
char *num0[N];
int score;
}DataType;
typedef struct stunode{  /*定义学生资料的结构体*/
DataType data;
struct stunode *next;
}*stulist,stunode;
stulist Stu;
void Build_List(stulist Stu){ /*建立学生资料表函数*/
stunode *p,*q=Stu;

char num0[N];
while(strcmp(num0,flag))
{p=(stunode *)malloc(sizeof(stunode));
strcpy(p->data.num,num0);
scanf("%s",p->data.name);
scanf("%d",&p->data.score);
q->next=p;
q=p;
scanf("%s",num0);
}
q->next=NULL;
}
void Print_List(stulist Stu){/*输出学生资料函数*/
stunode *p;
p=Stu->next;
while(p)
{printf("%s\t%s\t%d\n",p->data.num,p->data.name,p->data.score);
    p=p->next;

}
}
void Insert(stulist Stu){ /*增加学生记录函数*/
stunode *p,*q=Stu;
p=(stunode *)malloc(sizeof(stunode));/*建立一个结点*/
scanf("%s%s%d",p->data.num,p->data.name,&p->data.score);/*输入记录*/
p->next=NULL;
while(q->next) /*查找最后一个记录*/
  q=q->next;
q->next=p;  /*插到最后*/
}
void Delete(stulist Stu,char *num0){/* 删除学生记录函数*/
stunode *p=Stu->next,*q=Stu;
while (p!=NULL&&strcmp(p->data.num,num0))/*寻找所要记录*/
    {q=p;p=p->next;}
  if(strcmp(p->data.num,num0)==0) /*若找到就删除*/
     {q->next=p->next;
      free(p);
     }
   else printf("the student's record doest not exist!");
}
void Correct(stulist Stu,char *num0) {  /*修改学生记录函数*/
stunode *p=Stu->next;
while (p!=NULL&&strcmp(p->data.num,num0)) /*寻找所要学生记录*/
     p=p->next;
if(!p)  printf(" The student's record does not exist!");
else                                  /*寻找就修改*/
    {printf("enter the new record:");
     scanf("%s%s%d",p->data.num,p->data.name,&p->data.score);
    }  
}
void Inrec(stulist Stu,char *num0){  /* 成绩输入函数*/
stunode *p=Stu->next;
while (p!=NULL&&strcmp(p->data.num,num0))  /*寻找所要学生记录*/
     p=p->next;
if(!p)  printf(" The student's record does not exist!");
else {printf("enter the score:"); /*找到就输入成绩*/
       scanf("%d",&p->data.score);
      }
}
void Sort(stulist Stu ,int label){ /* 成绩排序函数*/
DataType temp;
stunode *p=Stu->next,*q,*s;
while(p)  /* 用直接选择排序法进行排序,时间复杂度为O(n*n),空间复杂度为O(1),
              因该算法适合链接储存的系统的排序*/
{s=p;
  q=p->next;
   while(q)
   {if (label)
       {if(s->data.score<q->data.score)  s=q;
         q=q->next;}
    else
       {if(s->data.score>q->data.score)  s=q;
          q=q->next;}
    }
  if(s!=p)
   {temp=s->data;s->data=p->data;p->data=temp;}
p=p->next;
}
}
void Search(stulist Stu,char *num0){ /* 用直接查找法查找学生记录函数,时间复杂度为O(n),空间
                                        复杂度为0,因该算法适合链接储存的系统的
                                        查找  */
stunode *p=Stu->next;
while (p!=NULL&&strcmp(p->data.num,num0))
     p=p->next;
if(!p)  printf(" The student's record does not exist!");
else
    printf("%s\t%s\t%d\n",p->data.num,p->data.name,p->data.score);
}

void Statistic(stulist Stu){  /*成绩统计函数,时间复杂度为O(n),空间复杂度为
                                O(1)*/
stunode *p=Stu->next;
int count[11],i,count1=0,count2=0,sum=0;
float pass,excellent,percent_p,percent_e;
for(i=0;i<11;i++) count[i]=0;  /*对count数组初始化*/
printf("enter the pass score and the excellent score:");
scanf("%f%f",&pass,&excellent);
while(p)
{switch(p->data.score/10)
     {  case 0:count[0]++;break;
        case 1: count[1]++;break;
        case 2: count[2]++;break;
        case 3: count[3]++;break;
        case 4: count[4]++;break;
        case 5: count[5]++;break;
        case 6: count[6]++;break;
        case 7: count[7]++;break;
        case 8: count[8]++;break;
        case 9:count[9]++;break;
        case 10:count[10]++;break;
     }
      if(p->data.score>=pass) count1++;
      if(p->data.score>=excellent) count2++;
    sum++;
    p=p->next;
     }
    percent_p=(float)count1/sum*100;
    percent_e=(float)count2/sum*100;
    printf("score span\tnum\n") ;
    printf("0-9\t%d\n10-19\t%d\n20-29\t%d\n",count[0],count[1],count[2]);
    printf("30-39\t%d\n40-49\t%d\n50-59\t%d\n",count[3],count[4],count[5]);
    printf("60-69\t%d\n70-79\t%d\n80-89\t%d\n",count[6],count[7],count[8]);
    printf("90-99\t%d\n100\t%d\n",count[9],count[10]);
    printf("percent_p=%.2f%%\npercent_e=%.2f%%\n",percent_p,percent_e);
}




int key();
void upbar(int y);
void downbar(int y);
main()
{int ky,y;
char ch;
char num0[N];
textbackground(0);
clrscr();
do
    {
      textmode(C80);
      textbackground(13);
      textcolor(WHITE);
      window(7,8,19,17);
      clrscr();
      gotoxy(3,2);
      cprintf("E:exit\r\n");
      gotoxy(3,3);
      cprintf("A:Bild\r\n");
       gotoxy(3,4);
      cprintf("B:output\r\n");
       gotoxy(3,5);
      cprintf("C:incer\r\n");
       gotoxy(3,6);
      cprintf("f:correct\r\n");
       gotoxy(3,7);
      cprintf("h:order\r\n");
       gotoxy(3,8);
      cprintf("i:find\r\n");
       gotoxy(3,9);
      cprintf("j:statis\r\n");
       gotoxy(3,10);
      cprintf("k:open\r\n");


回复列表 (共1个回复)

沙发

下面还有几段
太长了
请看完
谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册