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

📄 xueshengshujukuguanli.c

📁 学生数据库的管理与实现
💻 C
📖 第 1 页 / 共 4 页
字号:
         case 3 :
         case 2 :
         case 1 :
         case 0 :f++;break;
      }                        
      p=p->next;                
   }
   printf("\n100persons:%d\n90-99persons:%d\n80-89persons:%d\n70-79persons:%d\n60-69persons:%d\nbellow60persons:%d\n",a,b,c,d,e,f);
}
/*学生主菜单*/
menu_select8()
{
   char *menu[]={"******STUDENT MENU*****",  
   " 0. xiu gai mi ma", 
   " 1. cha xun",   
   " 2. xuan ke",  
   " 3. Quit"};           
   char s[3];     
   int c,i;       
   gotoxy(1,25);        
   printf("press any key enter menu......\n");  
   getch();                      
   clrscr();                    
   gotoxy(1,1);             
   textcolor(YELLOW);   
   textbackground(BLUE);   
   gotoxy(10,2);         
   putch(0xc9);        
   for(i=1;i<44;i++)
      putch(0xcd);    
   putch(0xbb);            
   for(i=3;i<20;i++)
   {
      gotoxy(10,i);putch(0xba);   
      gotoxy(54,i);putch(0xba);
   }   
   gotoxy(10,20);putch(0xc8);  
   for(i=1;i<44;i++)
      putch(0xcd);    
   putch(0xbc);                
   window(11,3,53,19);     
   clrscr();              
   for(i=0;i<5;i++)      
   {
      gotoxy(10,i+1);
      cprintf("%s",menu[i]);
   }
   textbackground(BLACK);  
   window(1,1,80,25);    
   gotoxy(10,21);      
   do{
      printf("\n	 Enter you choice(0~3):");   
      scanf("%s",s);          
      c=atoi(s);           
   }while(c<0||c>3);  
   return c;             
}

/*学生查询菜单*/
menu_select9()
{
   char *menu[]={"******STUDENT CHA XUN*****", 
   " 0. ji ben xin xi", 
   " 1. ke cheng biao",    
   " 2. zong cheng ji",
   " 3. fan hui "};             
   char s[3];     
   int c,i;        
   gotoxy(1,25);       
   printf("press any key enter menu......\n");  
   getch();                      
   clrscr();                    
   gotoxy(1,1);          
   textcolor(YELLOW);   
   textbackground(BLUE);  
   gotoxy(10,2);         
   putch(0xc9);        
   for(i=1;i<44;i++)
      putch(0xcd);   
   putch(0xbb);          
   for(i=3;i<20;i++)
   {
      gotoxy(10,i);putch(0xba);   
      gotoxy(54,i);putch(0xba);
   }  
   gotoxy(10,20);putch(0xc8); 
   for(i=1;i<44;i++)
      putch(0xcd);      
   putch(0xbc);               
   window(11,3,53,19);     
   clrscr();            
   for(i=0;i<5;i++)     
   {
      gotoxy(10,i+1);
      cprintf("%s",menu[i]);
   }
   textbackground(BLACK);   
   window(1,1,80,25);     
   gotoxy(10,21);      
   do{
      printf("\n	 Enter you choice(0~3):");   
      scanf("%s",s);        
      c=atoi(s);         
   }while(c<0||c>3);   
   return c;            
}

/*学生选课菜单*/
menu_select10()
{
   char *menu[]={"******STUDENT XUAN KE*****",  
   " 0. xuan ke ", 
   " 1. tui ke",     
   " 2. fan hui"};            
   char s[3];      
   int c,i;       
   gotoxy(1,25);       
   printf("press any key enter menu......\n");   
   getch();                    
   clrscr();                    
   gotoxy(1,1);            
   textcolor(YELLOW);   
   textbackground(BLUE);  
   gotoxy(10,2);          
   putch(0xc9);       
   for(i=1;i<44;i++)
      putch(0xcd);    
   putch(0xbb);           
   for(i=3;i<20;i++)
   {
      gotoxy(10,i);putch(0xba);  
      gotoxy(54,i);putch(0xba);
   }   
   gotoxy(10,20);putch(0xc8);  
   for(i=1;i<44;i++)
      putch(0xcd);     
   putch(0xbc);                 
   window(11,3,53,19);      
   clrscr();             
   for(i=0;i<4;i++)      
   {
      gotoxy(10,i+1);
      cprintf("%s",menu[i]);
   }
   textbackground(BLACK);  
   window(1,1,80,25);      
   gotoxy(10,21);      
   do{
      printf("\n	 Enter you choice(0~2):");  
      scanf("%s",s);      
      c=atoi(s);           
   }while(c<0||c>2);   
   return c;            
}

/*普通修改密码*/
PASSWORD *modify_pw_sig(PASSWORD *h)
{
   PASSWORD *p;  
   char s[11],pass[15],pass1[15],pass2[15];   
   clrscr();       
   printf("please scanf your num\n");     
   scanf("%s",s);   
   p=h;    
   while(strcmp(p->num,s)&&p!=NULL)  
   {
      p=p->next;      
   }
   if(p==NULL)    
      printf("\nlist num %s student\n",s);
   else       
   {  
   	  printf("please scanf your password\n");
      scanf("%s",pass);
      if(strcmp(pass,p->psw))
        {
         printf("wrong password!\n");
         return(h);
        }
     
      printf("********have found**********\n");
      printf("|num       |      password \n");
      printf("|----------|-------------- \n");
      printf("|%-10s|%-15s\n", p->num,p->psw);
      inputs("enter your new password:\n",pass1,15);
      inputs("enter your new password again:\n",pass2,15);
      if(strcmp(pass2,pass1))
        {
           printf("You didn't scanf the same new password!\n");
           return(h);
        } 
      strcpy(p->psw,pass2);
      printf("You have success change your password Remember it!!\n");
   }
   save_pw(h);
   return(h);     
}


/*管理员密码修改界面*/
menu_select11()
{
   char *menu[]={"******ADMIN MI MA XIU GAI*****",  /*定义菜单字符串数组*/
   " 0. xiu gai ben mi ma", 
   " 1. xiu gai xue sheng mi ma",    
   " 2. fan hui"};              /*退出*/
   char s[3];       /*以字符形式保存选择号*/
   int c,i;        /*定义整形变量*/
   gotoxy(1,25);        /*移动光标*/
   printf("press any key enter menu......\n");   /*压任一键进入主菜单*/
   getch();                       /*输入任一键*/
   clrscr();                     /*清屏幕*/
   gotoxy(1,1);             /*移动光标*/
   textcolor(YELLOW);   /*设置文本显示颜色为黄色*/
   textbackground(BLUE);   /*设置背景颜色为蓝色*/
   gotoxy(10,2);          /*移动光标*/
   putch(0xc9);        /*输出左上角边框┏*/
   for(i=1;i<44;i++)
      putch(0xcd);    /*输出上边框水平线*/
   putch(0xbb);            /*输出右上角边框  ┓*/
   for(i=3;i<20;i++)
   {
      gotoxy(10,i);putch(0xba);   /*输出左垂直线*/
      gotoxy(54,i);putch(0xba);
   }   /*输出右垂直线*/
   gotoxy(10,20);putch(0xc8);  /*输出左上角边框┗*/
   for(i=1;i<44;i++)
      putch(0xcd);      /*输出下边框水平线*/
   putch(0xbc);                 /*输出右下角边框┛*/
   window(11,3,53,19);       /* 制作显示菜单的窗口,大小根据菜单条数设计*/
   clrscr();              /*清屏*/
   for(i=0;i<4;i++)       /*输出主菜单数组*/
   {
      gotoxy(10,i+1);
      cprintf("%s",menu[i]);
   }
   textbackground(BLACK);   /*设置背景颜色为黑色*/
   window(1,1,80,25);       /*恢复原窗口大小*/
   gotoxy(10,21);       /*移动光标*/
   do{
      printf("\n	 Enter you choice(0~2):");    /*在菜单窗口外显示提示信息*/
      scanf("%s",s);           /*输入选择项*/
      c=atoi(s);            /*将输入的字符串转化为整形数*/
   }while(c<0||c>2);    /*选择项不在0~14之间重输*/
   return c;              /*返回选择项,主程序根据该数调用相应的函数*/
}
/*数据库密码修改*/
PASSWORD *modify_pw(PASSWORD *h)
{
   PASSWORD *p;  
   char s[11],pass1[15],pass2[15];     
   clrscr();      
   printf("please scanf the student's number which you want to change password:\n");     
   scanf("%s",s);   
   p=h;    
   while(strcmp(p->num,s)&&p!=NULL)   
   {
      p=p->next;      
   }
   if(p==NULL)     
      printf("\nlist num %s student\n",s);
   else   
    { 
      printf("*****************************have found***************************\n");
      printf("|no        |      password \n");
      printf("|----------|-------------- \n");
      printf("|%-10s|%-15s\n", p->num,p->psw);
      inputs("enter  new password:\n",pass1,15);
      inputs("enter  new password again:\n",pass2,15);
      if(strcmp(pass2,pass1))
        {
           printf("You didn't scanf the same new password!\n");
           return(h);
        } 
      strcpy(p->psw,pass2);
      printf("You have success change the student's password\n\n\nDon't forget to tell him/her!!\n");
    }
   save_pw(h);
   return(h);      
}
/*学生数据库排序*/
STUDENT *sort(STUDENT *h)
{
   int i=0;                  /*保存名次*/
   STUDENT *p,*q,*t,*h1,*h2=h;   /*定义临时指针*/
   h1=h2->next;           /*将原表的头指针所指的下一个结点作头指针*/
   h2->next=NULL;        /*第一个结点为新表的头结点*/
   while(h1!=NULL)    /*当原表不为空时,进行排序*/
   {
      t=h1;            /*取原表的头结点*/
      h1=h1->next;     /*原表头结点指针后移*/
      p=h2;           /*设定移动指针p,从头指针开始*/
      q=h2;         /*设定移动指针q做为p的前驱,初值为头指针*/
      while(t->sum<p->sum&&p!=NULL)  /*作总分比较*/
      {
	 q=p;            /*待排序点值小,则新表指针后移*/
	 p=p->next;
      }
      if(p==q)      /*p==q,说明待排序点值大,应排在首位*/
      {
	 t->next=p;     /*待排序点的后继为p*/
	 h2=t;         /*新头结点为待排序点*/
      }
      else    /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/
      {
	 t->next=p;   /*t的后继是p*/
	 q->next=t;    /*q的后继是t*/
      }
   }
   p=h2;               /*已排好序的头指针赋给p,准备填写名次*/
   while(p!=NULL)  /*当p不为空时,进行下列操作*/
   {
      i++;       /*结点序号*/
      p->order=i;   /*将名次赋值*/
      p=p->next;   /*指针后移*/
   }
   clrscr();  
   printf("sort sucess!!!\n");   /*排序成功*/
   p=h2;
   printf(" order      num         name             sum               aver\n");
   for(i=1;p!=NULL;i++,p=p->next)
       printf("  %d         %s        %s          %f        %f\n",i,p->num,p->name,p->sum,p->average);
   return(h);
}
/*输出课程数据库链表中的结点信息*/
void print1(CLASS *h)
{
   CLASS *p;
   p=h;
      printf("|num| name  | mark | time |  teacher  | address | collage |stutotal|\n");  
   while(p!=NULL)
    { 
      printf("|---|-------|------|------|-----------|---------|---------|--------|\n");
      printf(" %s  %s   %s    %s    %s    %s   %s   %d\n",
             p->num,p->name,p->mark,p->time,p->teacher,p->address,p->collage,p->stutotal);
      p=p->next;       
    }
}
/*打印课程表*/
void print2(char stu_num[11],CLASS *h1,STUDENT *h2)
{
	CLASS *p1=h1;
	int i;
	STUDENT *p2=h2;
	while(p2!=NULL&&strcmp(p2->num,stu_num))
	  {  
		  p2=p2->next;
	  } 
    printf("|num| name  | mark | time |  teacher  | address | collage |score |\n"); 
	for(i=0;i<3;i++)
	 { 
	 	p1=h1;
	 	while(p1!=NULL&&strcmp(p1->name,p2->kecheng[i]))
	   {
	 	  p1=p1->next;
	   }
	   if(p1)
	   {
	   	printf("|---|-------|------|------|-----------|---------|---------|------|\n");
        printf("  %s  %s   %s   %s %s  %s   %s   %d\n",
             p1->num,p1->name,p1->mark,p1->time,p1->teacher,p1->address,p1->collage,p2->score[i]);	
       }
	 }
}
/*选课*/
void select_course(char stu_num[11],CLASS *h1,STUDENT *h2)
{
	CLASS *p1=h1;
	int m=0,n=0;
	STUDENT *p2=h2;
	char num[4];
	for(;;)
	{ 
	  p1=h1;
	  inputs("scanf the lesson's code:",num,4);
	  if(!strcmp(num,"@"))break; 
	  while(p1!=NULL&&strcmp(p1->num,num))
	   {
	 	  p1=p1->next;
	   }
	  while(p2!=NULL&&strcmp(p2->num,stu_num))
	  {  
		  p2=p2->next;
	  }
	  if(p2==NULL||p1==NULL)
	  {
		  printf("sorry! there isn't the code!\n");
	  }
	  else
	  {
	  	p1->stutotal++;
	  	while(strcmp(p1->stunum[m],NULL))
	  	{
	  		m++;
	  	}
	  	strcpy(p1->stunum[m],stu_num);	  
	    while(strcmp(p2->kecheng[n],NULL)&&n<3)
	    {
	  	  n++;	  	
	    }
	    strcpy(p2->kecheng[n],p1->name);
	    printf("Success!\n");
	   }
	}
	save_stu(h2);
	save_cla(h1);
}
/*删课*/
void delet_course(char stu_num[11],CLASS *h1,STUDENT *h2)
{
	CLASS *p1=h1;
	int m=0,n=0;
	STUDENT *p2=h2;
	char num[4];
	for(;;)
	{ 
	  p1=h1;
	  inputs("scanf the lesson's code which you want to delet:\n",num,4);
	  if(!strcmp(num,"@"))break; 
	  while(p1!=NULL&&strcmp(p1->num,num))     /*找到某门课*/
	   {
	 	  p1=p1->next;
	   }
	  while(p2!=NULL&&strcmp(p2->num,stu_num))  /*找到学生*/
	  {  
		  p2=p2->next;
	  }
	  if(p1==NULL)
	  {
		  printf("sorry! there isn't the code!\n");
	  }
	  else
	  {
	  	p1->stutotal--;
	  	while(strcmp(p1->stunum[m],stu_num))  /*把找到课程的学生纪录置零*/
	  	{
	  		m++;
	  	}
	  	strcpy(p1->stunum[m],NULL);	  
	    while(strcmp(p2->kecheng[n],num))     /*找到学生数据库中课程代号置零*/
	    {
	  	  n++;	  	
	    }
	    strcpy(p2->kecheng[n],NULL);
	    printf("Success!\n");
	   }
	}
	save_stu(h2);
	save_cla(h1);
}

⌨️ 快捷键说明

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