⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 二叉数排序.txt

📁 这是我做数据结构课程设计里面的一个设计程序
💻 TXT
字号:
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
#include<conio.h> 
typedef struct node 
{ 	
   char num[10]; 	
   char name[20]; 	
   float score1,score2,score3,score4,score5; 	
   struct node *next; 
}student; 
 student *head; 
 student *creat() 
{ 	
    student *p,*s; 	
    FILE *fp; 	
    fp=fopen("student.txt","r"); 	
    head=(student *)malloc(sizeof(student)); 	
    p=head; 
    fscanf(fp,"%s\t%s\t%f\t%f\t%f\t%f\t%f\n",p->num,p->name,&p->score1,&p->score2,&p- >score3,&p->score4,&p->score5); 	
   while(!feof(fp)) 	
{ 		
   s=(student *)malloc(sizeof(student)); 		
   fscanf(fp,"%s\t%s\t%f\t%f\t%f\t%f\t%f",s->num,s->name,&s->score1,&s- >score2,&s->score3,&s->score4,&s->score5); 		
   p->next=s; 		
   p=s; 	
} 	
p->next=NULL; 	
return head; 
} 
void print(student *head)
 { 	
    student *p; 	
     p=head; 	
     while(p->next!=NULL) 	
{ 		
     printf("%s\t%s\t%f\t%f\t%f\t%f\t%f\n",p->num,p->name,p->score1,p->score2,p- >score3,p->score4,p->score5); 		
    p=p->next; 	
   } 
} 
 void findname() 
{ 	
    student *p; 	
    char name[20]; 	
    p=head; 	
    printf("请输入名字:\n"); 	
    scanf("%s",name); 	
    while(p!=NULL) 	
   { 		
     if(strcmp(name,p->name)==0) 		
     { 			
        
   printf("%s\t%s\t%f\t%f\t%f\t%f\t%f\n",p->num,p->name,p->score1,p- >score2,p->score3,p->score4,p->score5); 			                   break; 		 
      } 		
       p=p->next; 	
   } 	
     if(p==NULL) 		
    printf("没有找到\n"); 
  } 
     void findnum() 
  { 	
    student *p; 	
    char num[10]; 	
    p=head; 	
    printf("请输入学号:\n"); 	
    scanf("%s",num); 	
     while(p!=NULL) 	
  { 		
   if(!strcmp(num,p->num)) 		
{ 			
   printf("%s\t%s\t%f\t%f\t%f\t%f\t%f\n",p->num,p->name,p->score1,p- >score2,p->score3,p->score4,p->score5); 			
   break; 		
   } 		
   else p=p->next; 	
} 	
   if(p==NULL) 		
   printf("没有找到\n"); 
 } 
void findscore() 
 { 	
   student *p; 	
   int score; 	
   p=head; 	
   printf("请输入分数:\n"); 	
   scanf("%d",&score); 	
   while(p!=NULL) 	
  { 		
    if(score==p->score1) 		
  { 			
     printf("%s\t%s\t%f\t%f\t%f\t%f\t%f\n",p->num,p->name,p->score1,p- >score2,p->score3,p->score4,p->score5); 			
     break; 		
   } 		
       else p=p->next; 	
   } 	
    if(p==NULL) 		
   printf("没有找到\n"); 
  } 
   void find() 
  { 	
    char ch;int flag=1; 	
 do{ 	
    printf("\t\t     1:按姓名查询        \t\t\n"); 	
    printf("\t\t     2:按学号查询        \t\t\n");     
    printf("\t\t     3:按分数查询        \t\t\n"); 	
    printf("\t\t     0:退出              \t\t\n"); 	
    printf("请选择:"); 	
    ch=getche(); 	
    switch(ch) 	
  { 		case'1':findname();break; 		                                case'2':findnum();break; 		                                case'3':findscore();break; 		                                case'0':flag=0;break; 	
  } 	
  }
    while(flag); 
   } void del() 
  { 	
     print(head); 	
     student *p,*q,*r; 	
     char num[10]; 	
      p=head; 	
     printf("请输入需要删除的人的学号:"); 	
     scanf("%s",num); 	
     while(p!=NULL) 	
 { 		
    if(strcmp(p->next->num,num)==0) 		
  { 			
    q=p; 			
    r=p->next; 			
    break; 		
   } 		
     else p=p->next; 	
 } 	
   q->next=r->next; 	
   free(r); 	
   print(head); 
 } void add() 
{ 	
   print(head); 	
   student *p,*s; 	p=head; 	
   while(p->next!=NULL) 	
    p=p->next; 	
   printf("请输入添加的学生信息:"); 	
   s=(student *)malloc(sizeof(student)); 	
   scanf("%s\t%s\t%f\t%f\t%f\t%f\t%f",s->num,s->name,&s->score1,&s->score2,&s- >score3,&s->score4,&s->score5); 	
   p->next=s; 	
   s->next=NULL; 	
  print(head); 
}
 void repair() 
{	 	
   student *p,*s; 	
   p=head; 	
   s=(student *)malloc(sizeof(student)); 	
   printf("请输入需要修改的学生学号:"); 	
   char num[10]; 	
   scanf("%s",num); 	
   while(p->next!=NULL) 	
{ 		
   if(strcmp(p->num,num)==0) 		
{ 			
    s=p; 			
            break; 		
 } 	
     
   p=p->next; 	
 } 	
   printf("%s\t%s\t%f\t%f\t%f\t%f\t%f\n",s->num,s->name,s->score1,s->score2,s- >score3,s->score4,s->score5); 	
   printf("请输入这学生需要修改的信息:"); 	
   scanf("%s\t%s\t%f\t%f\t%f\t%f\t%f",s->num,s->name,&s->score1,&s->score2,&s- >score3,&s->score4,&s->score5); 	
   printf("%s\t%s\t%f\t%f\t%f\t%f\t%f\n",s->num,s->name,s->score1,s->score2,s- >score3,s->score4,s->score5); 
 } 
   void maintain() 
 { 	
   char ch; 	
   int flag=1; 	
do{
  pprintf("\t\t     1:删除       \t\t\n"); 		
  printf("\t\t     2:添加        \t\t\n"); 		
  printf("\t\t     3:修改        \t\t\n"); 		
  printf("\t\t     0:退出        \t\t\n"); 		
  printf("请选择:"); 		
   ch=getche(); 		
  printf("\n"); 	
  switch(ch) 	
{ 	
      case'1':del();break; 		
      case'2':add();break; 		
      case'3':repair();break; 		
      case'0':flag=0;break; 	
 } 	
} 
    while(flag); } 
     void main() 	
{ 	
    char ch; 	
   int flag=1,x=0; 	
   head=creat(); 	
   char keyword[10]="******"; 	
   char key[10]; 	
   do 	
{
    printf("请输入密码:"); 	
    scanf("%s",key); 	
    if(strcmp(key,keyword)==0) 	
{ 	
do{ 	
     
    printf("\t\t01043班学生管理系统\t\t\n"); 	
    printf("\t\t     1:查询        \t\t\n"); 	
    printf("\t\t     2:维护        \t\t\n");     
    printf("\t\t     0:退出        \t\t\n"); 	
    printf("请选择:"); 	
     ch=getche(); 	
    printf("\n"); 	
    switch(ch) 	
{ 		
        case'1':find();break; 		
        case'2':maintain();break; 		
        case'0':flag=0;break; 	
} 	
} 
   while(flag); 	
   if(!flag) 	
{ 		
   printf("感谢您的使用,再见!\n"); 		
    break; 	
} 	
} 	
     else  	
 { 		
    printf("你是无权用户\n"); 		x++; 		if(x==3) 	    printf("对不
起,你已经三次输入密码无效!\n"); 	
} 	
}while(x<=2); 	
 }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -