主题:大哥们,帮小弟看看这程序。急
哈哈,是长了点。可要救命啊,各位大哥
我分了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");
我分了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");