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

📄 成绩查询系统.txt

📁 大一时的c语言的课程设计
💻 TXT
字号:
#include <stdio.h>
#define LEN sizeof(student)
typedef struct stu   
{ 
  char number[20];
  char name[20];
  int  achievement[3];
  int sum;
  float average;
  struct stu *next;
}student;
student  *init();    
int menu_select();   
student *create();   
void print(student *head);   
void search(student *head);    
student *sort(student *head);    
student *insert(student *head,student *new);   
void save(student *head);    
main()
{
  student *head,new;
  head = init();       
  for(;;)            
 {
  switch(menu_select())    
  {                     
   case 1:
   head=create();
   break;
   case 2:
   print(head);
   break;
   case 3:
   search(head);
   break;
   case 4:
   head=sort(head);
   break;
   case 5:
   head=insert(head,&new);
   break;  
   case 6:
   save(head);
   break;
   case 7:
   exit(0);      
  }
 }
}

student *init()
{
 return NULL;  
}

menu_select()
{
	int n;
        printf("        $***************************************************************$\n");
	printf("        &          Student performance management system                &\n");
	printf("        $***************************************************************$\n");
	printf("        & 1. Enter the student data         2. Print the student data   &\n"); 
	printf("        $                                                               $\n");
	printf("        & 3. Search student data on name    4. Sort to make new a file  &\n"); 
        printf("        $                                                               $\n"); 
	printf("        & 5. Insert one student data        6. Save the student data    &\n"); 
	printf("        $                                                               $\n"); 
        printf("        & 7. out                                                        &\n");
	printf("        $***************************************************************$\n");
        do
	{
		printf("\n\t\t\tEnter your choice(1~7):");  
		scanf("%d",&n);
	}
	while(n<1||n>7)	;   

	return(n);          
}

student *create()
{
  int i,s;
  student *head=NULL,*p;  
  clrscr();
  for(;;)
 {
  p=(student *)malloc(LEN);  
  if(!p)  
   {
    printf("\nOut of memory.");   
    return (head);  
   }
    printf("Please enter the student number(0:list end):"); 
    scanf("%s",p->number);
    if(p->number[0]=='0')	break;    
    printf("Please enter the student name:");
    scanf("%s",p->name);
    printf("Please enter the student %d achievements\n",3);  
    s=0;               
    for(i=0;i<3;i++)    
    {
      do{
	 printf("achievement%d:",i+1);
	 scanf("%d",&p->achievement[i]);
	 if(p->achievement[i]<0 || p->achievement[i]>100)  
	 printf("Data error,please enter again.\n");
	}while(p->achievement[i]<0 || p->achievement[i]>100);
	s=s+p->achievement[i];  
    }
	p->sum=s;    
	p->average=(float)s/3;  
	p->next=head;           
	head=p;                
}
	return(head);  
}

void print(student *head)
{
        int i = 0;     
        student *p;  
        clrscr();
        p = head;      
        printf(" *****************************************************************************\n");
	printf(" *                               Student data                                *\n");
        printf(" *****************************************************************************\n");
	printf(" *Rec| Number |    Name     |Achievement1|Achievement2|Achievement3| Average *\n");
	printf(" *****************************************************************************\n");
	while(p!=NULL)
      {
        i++;
	printf(" *%3d|%8s| %-8s    |    %3d     |    %3d     |    %3d     |  %4.2f  *\n", 
	i, p->number,p->name,p->achievement[0],p->achievement[1],p->achievement[2],p->average);
	p = p->next;
      }
	printf(" *****************************************************************************\n");
        printf("\n");
        printf("\n");
}

void search(student *head)
{
	student *p;     
	char s[20];     
	clrscr();
	printf("Please enter the student name for searching.\n");
	scanf("%s",s);
	p = head;    
	while(strcmp(p->name,s) && p != NULL)  
		p = p->next;     
	if(p!=NULL)         
	{
		printf("  *************************************************************************\n");
		printf("  * Number |    Name     |Achievement1|Achievement2|Achievement3| Average *\n");
		printf("  *************************************************************************\n");
		printf("  *%8s| %-8s    |    %3d     |    %3d     |    %3d     |  %4.2f  *\n",
		p->number,p->name,p->achievement[0],p->achievement[1],p->achievement[2],p->average);
		printf("  *************************************************************************\n");
                printf("\n");
                printf("\n");
	}
	else
	 printf("\nThere is no number %s student on the list.\n",s);   
}

student *sort(student *head)
{
  int i=0;                      
  student *p1,*p2,*t,*temp;      
  temp=head->next;               
  head->next=NULL;             
  while(temp!=NULL)             
 {
  t=temp;           
  temp=temp->next;    
  p1=head;            
  p2=head;            
  while(t->average<p1->average&&p1!=NULL) 
    {
      p2=p1;           
      p1=p1->next;
    }
      if(p1==p2)      
   {
      t->next=p1;    
      head=t;         
     }
      else   
   {
      t->next=p1;   
      p2->next=t;  
      }
     }
    p1=head;         
    while(p1!=NULL) 
  {
    i++;          
    p1=p1->next;  
  }
    printf("Sorting is sucessful.\n");  
    return (head);
}

student  *insert(student *head,student *new)
{
    student *p0,*p1,*p2;
    int n,sum1,i;
    p1=head;  
    p0=new;   
    printf("\nPlease enter a new student data.\n");      
    printf("Enter the student number:");
    scanf("%s",new->number);
    printf("Enter the new student name:");
    scanf("%s",new->name);
    printf("Please enter the new student %d achievements.\n",3);
    sum1=0;    
    for(i=0;i<3;i++)
{
do{
     printf("achievement%d:",i+1);
     scanf("%d",&new->achievement[i]);
     if(new->achievement[i]>100||new->achievement[i]<0)
     printf("Data error,please enter again.\n");
   }
     while(new->achievement[i]>100||new->achievement[i]<0);
     sum1=sum1+new->achievement[i];   
  }
     new->sum=sum1;    
     new->average=(float)sum1/3;
     if(head==NULL)  
	{head=p0;p0->next=NULL;} 
       else
    {
	while((p0->average<p1->average)&&(p1->next!=NULL))
     {
	p2=p1;   
	p1=p1->next;   
     }
     if(p0->average>=p1->average)
   {
     if(head==p1)
     head=p0;  
     else p2->next=p0;      
     p0->next=p1;
   }
   else
    {p1->next=p0;p0->next=NULL;} 
   }
  n=n+1; 
  head=sort(head); 
  printf("\nStudent  %s have been inserted.\n",new->name);    
  printf("Don't forget to save the new file.\n");
  return(head);
}

void save(student *head)
{
  FILE *fp;        
  student *p;      
  char outfile[10];
  printf("Enter the outfile name,for example c:\\score\n");
  scanf("%s",outfile);
  if((fp=fopen(outfile,"wb"))==NULL)   
 {
   printf("Cannot open the file\n");
   return;   
 }
   printf("\nSaving the file......\n");
   p=head;                 
   while(p!=NULL)      
   {
    fwrite(p,LEN,1,fp);     
    p=p->next;       
   }
 fclose(fp);      
 printf("Save the file successfully!\n");
}




















⌨️ 快捷键说明

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