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

📄 xueshengshujukuguanli.c

📁 学生数据库的管理与实现
💻 C
📖 第 1 页 / 共 4 页
字号:
      }
      clrscr();
      inputs("enter student num:",info->num,11); 
         if(info->num[0]=='@') break;    
      inputs("enter student name:",info->name,15); 
      inputs("sexy(m/w):",info->sexy,1);
      inputs("jiguan:",info->jiguan,10);
      inputs("birthday:",info->birthday,12);
      inputs("adress:",info->adress,25);
      inputs("telephone:",info->telephone,12);
      inputs("email:",info->email,20);
      inputs("jiangfa:",info->jiangfa,100);
      printf("please input  kecheng name \n");
      for(i=0;i<N;i++) 
       {
        printf("kecheng%d name:",i+1);  
        scanf("%s",&info->kecheng[i]); 
	  do{
	      printf("please input %s score:",&info->kecheng[i]);    
	      scanf("%d",&info->score[i]);    
	      if(info->score[i]>100||info->score[i]<0) 
	      printf("bad data,repeat input\n");  
	     }while(info->score[i]>100||info->score[i]<0);
	    s=s+info->score[i];  
       }
      info->sum=s;    
      info->average=(float)s/N;  
      info->order=0;   
      info->next=h;  
      h=info;   
      printf("*************shanggewancheng**************");
      printf("\n\nxiayigeshuju\n");
   }
   save_stu(h);
   return(h);   
}
/*创建课程数据库*/
CLASS *create_cla()
{
   CLASS *h=NULL,*info;  
   for(;;)
   {
      info=(CLASS *)malloc(sizeof(CLASS));  
      if(!info)   
      {
	   printf("\nout of memory");  
	   return NULL;          
      }
      inputs("enter lesson num(end with @):\n",info->num,5);   
      if(info->num[0]=='@') break;   
      inputs("enter lesson name:",info->name,15);
      inputs("enter mark:",info->mark,1);
      inputs("enter time:",info->time,30);
      inputs("enter address:",info->address,25);
      inputs("enter teacher name:",info->teacher,12);
      inputs("enter collage:",info->collage,20);
      info->stutotal=0;
      info->next=h;  
      h=info;   
   }
   save_cla(h);
   return(h);   
}
/*创建密码数据库*/
PASSWORD *create_pw()
{ 
   int i; 
   PASSWORD *h=NULL,*info;
   printf("create pw.\n");
   for(;;)
   {
      info=(PASSWORD *)malloc(sizeof(PASSWORD));
      if(!info)
      {
	    printf("\nout of memory");
	    return NULL;
      }
      clrscr();
      inputs("enter num:",info->num,11);
         if(info->num[0]=='@') break;
      strcpy(info->psw,info->num);
      info->next=h;   
      h=info;   
   }
   printf("save y/n ?\n");
   if(getch()=='y')
   {
   	save_pw(h);
    return(h);
   }
   else
   { 
   	 info=NULL;
     return(info);
   }
}
/********************************************数据库保存子函数***********************************/
/*保存学生数据库到文件*/
void save_stu(STUDENT *h)
{
   FILE *fp;         
   STUDENT *p;    
   char outfile[15]="f:\\f1\\te.txt";
   printf("save y/n ?");
   getchar();
   if(getchar()=='y')
   {
    if((fp=fopen(outfile,"wb"))==NULL) 
     {
      printf("can not open file\n");
      exit(1);
     }
   printf("\nSaving file......\n");  
   p=h;                   
   while(p!=NULL)       
   {
      fwrite(p,sizeof(STUDENT),1,fp);
      p=p->next;      
   }
   fclose(fp);     
   printf("-----save success!!-----\n");
   }  
}
/*保存课程数据库到文件*/
void save_cla(CLASS *h)
{
   FILE *fp;         /*定义指向文件的指针*/
   CLASS *p;    /* 定义移动指针*/
   char outfile[15]="f:\\f2\\te.txt";  /*保存输出文件名*/
   printf("save y/n ?");
   getchar();
   if(getchar()=='y')
   {
     if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,如没有则建立*/
      {
        printf("can not open file\n");
        exit(1);
      }
     printf("\nSaving file......\n");  /*打开文件,提示正在保存*/
     p=h;                    /*移动指针从头指针开始*/
     while(p!=NULL)        /*如p不为空*/
      {
       fwrite(p,sizeof(CLASS),1,fp);/*写入一条记录*/
       p=p->next;        /*指针后移*/
      }
     fclose(fp);      /*关闭文件*/
     printf("-----save success!!-----\n");  /*显示保存成功*/
   }
}
/*密码保存*/
void save_pw(PASSWORD *h)
{
   FILE *fp;        
   PASSWORD *p;
   printf("save y/n ?");
   getchar();
   if(getchar()=='y')
   {    
   char outfile[20]={"f:\\te.txt"}; 
   if((fp=fopen(outfile,"wb"))==NULL) 
   {
      exit(1);
   }
   p=h;                   
   while(p!=NULL)       
   {
      fwrite(p,sizeof(PASSWORD),1,fp);
      p=p->next;      
   }
   fclose(fp);
   printf("-----save success!!-----\n");  /*显示保存成功*/
   }
}

/********************************************数据库删除子函数**********************************/
/*学生数据库删除*/
STUDENT *delete_stu(STUDENT *h)
{
	int j;
   STUDENT *p,*q; 
   char s[11];   
   clrscr();      
   printf("please deleted num\n");     
   scanf("%s",s);   
   q=p=h;    
   while(strcmp(p->num,s)&&p!=NULL)  
   {
      q=p;       
      p=p->next;      
   }
   if(p==NULL)    
      printf("\nlist num %s student\n",s);
   else       
   {
      printf("num:%s\nname:%s\nsexy:%s\njiguan:%s\nbirthday:%s\nadress:%s\ntelephone:%s\nemail:%s\njiangfa:%s\n",p->num,p->name,p->sexy,p->jiguan,p->birthday,p->adress,p->telephone,p->email,p->jiangfa);
      for(j=0;j<N;j++)
          {printf("%s:",p->kecheng[j]);
          	printf("%d\n",p->score[j]);
          }
      printf("********************************end*******************************\n");
      getch();     
      if(p==h)    
	 h=p->next;    
      else
	 q->next=p->next; 
      free(p);          
      printf("\n have deleted No %s student\n",s);
   }
   save_stu(h);
   return(h);    
}
/*密码数据库删除*/
PASSWORD *delete_pw(PASSWORD *h)
{
   PASSWORD *p,*q;  
   char s[11];     
   clrscr();    
   printf("please deleted num\n");     
   scanf("%s",s);   
   if(s[0]=='@') return(h);
   q=p=h;    
   while(strcmp(p->num,s)&&p!=NULL)   
   {
      q=p;       
      p=p->next;    
   }
   if(p==NULL)     
      printf("\nlist no %s student\n",s);
   else      
   {
      printf("*****************************have found***************************\n");
      printf("|no        |      password \n");
      printf("|----------|-------------- \n");
      printf("|%-10s|%-15s\n", p->num,p->psw);
      printf("********************************end*******************************\n");
      getch();     
      if(p==h)    
	 h=p->next;    
      else
	 q->next=p->next; 
      free(p);          
      printf("\n have deleted No %s student\n",s);
      printf("Don't forget save\n");
   }
   save_pw(h);
   return(h);      
}
/***********************************************数据库添加子函数*******************************/
/*添加学生数据库*/
STUDENT  *insert_stu(STUDENT *h)
{
   STUDENT *p,*q,*info; 
   char s[11];  
   int i,s1=0;
   printf("please enter location  before the num:");
   scanf("%s",s);   
   printf("please new record\n");      
   info=(STUDENT *)malloc(sizeof(STUDENT));   
   if(!info)
   {
      printf("\nout of memory");   
      return NULL;             
   }
   inputs("enter num:",info->num,11); 
   inputs("enter name:",info->name,15); 
      inputs("sexy(m/w):",info->sexy,1);
      inputs("jiguan:",info->jiguan,10);
      inputs("birthday:",info->birthday,12);
      inputs("adress:",info->adress,25);
      inputs("telephone:",info->telephone,12);
      inputs("email:",info->email,20);
      inputs("jiangfa:",info->jiangfa,100);
      printf("please input  kecheng name \n");
      for(i=0;i<N;i++) 
      {
        printf("name%d:",i+1);  
        scanf("%s",&info->kecheng[i]);
	 do{
	    printf("please input %s score:",&info->kecheng[i]); 
	    scanf("%d",&info->score[i]);   
	    if(info->score[i]>100||info->score[i]<0) 
	    printf("bad data,repeat input\n");  
	   }while(info->score[i]>100||info->score[i]<0);
	   s1=s1+info->score[i];   
      }
   info->sum=s1;   
   info->average=(float)s1/N;  
   info->order=0;        
   info->next=NULL;     
   p=h;               
   q=h;            
   while(strcmp(p->num,s)&&p!=NULL) 
   {
      q=p;                 
      p=p->next;        
   }
   if(p==NULL)      
      if(p==h)      
	 h=info;  
      else
	 q->next=info;  
   else
      if(p==h)    
      {
	 info->next=p;
	 h=info;    
      }
      else
      {
	 info->next=p;   
	 q->next=info;  
      }
   printf("\n----have inserted %s student----\n",info->name);        
   save_stu(h);
   return(h);        
}
/*添加密码数据库*/
PASSWORD  *insert_pw(PASSWORD *h)
{
   PASSWORD *p,*q,*info; 
   char s[11];  
   int s1,i;
   printf("please enter location  before the num\n");
   scanf("%s",s); 
   if(s[0]=='@') return(h);
   printf("\nplease new person and the password\n");    
   info=(PASSWORD *)malloc(sizeof(PASSWORD));  
   if(!info)
   {
      printf("\nout of memory");   
      return NULL;          
   }
   inputs("enter num:",info->num,11);
   inputs("enter password:",info->psw,15); 
   info->next=NULL;    
   p=h;              
   q=h; 
   while(strcmp(p->num,s)&&p!=NULL)   
   {
      q=p;               
      p=p->next;         
   }
   if(p==NULL)     
      if(p==h)     
	 h=info;  
      else
	 q->next=info; 
   else
      if(p==h)   
      {
	 info->next=p; 
	 h=info;    
      }
      else
      {
	 info->next=p;  
	 q->next=info;  
      }
   printf("\n ----have inserted %s student----\n",info->num);    
   save_pw(h);
   return(h);        
}
/*管理员主菜单*/
menu_select()
{
   char *menu[]={"******ADMIN MENU*****",  /*定义菜单字符串数组*/
   " 0. xiu gai mi ma", 
   " 1. cha xun",   
   " 2. lu ru",  
   " 3. tong ji",
   " 4. pai xu",
   " 5. xiu gai",
   " 6. 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<8;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~6):");    /*在菜单窗口外显示提示信息*/
      scanf("%s",s);           /*输入选择项*/
      c=atoi(s);            /*将输入的字符串转化为整形数*/
   }while(c<0||c>6);    /*选择项不在0~14之间重输*/
   return c;              /*返回选择项,主程序根据该数调用相应的函数*/
}

/*管理员查询菜单*/
menu_select1()
{
   char *menu[]={"******ADMIN CHA XUN*****",  /*定义菜单字符串数组*/
   " 0. ji ben xin xi", 
   " 1. dan ke cheng ji",    
   " 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);   /*设置背景颜色为黑色*/

⌨️ 快捷键说明

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