讲课的主题:链表与文件的结合。

文件:希望长久的保存

链表:节点数不确定,删除和增加方便

系统:

用户:

1、分配用户(管理员帐号,普通用户)

2、登录用户:

API:输入暗文密码(不带回显)

char* getpass("提示符")    unistd.h

函数名:getpass

返回值:密码的首地址

形参:提示符

C的项目:

通讯录:

1、增加手机号(手机号存放在外存:文件)

2、读取用户

3、查找(模糊匹配:  李)

4、删除

5、修改

C语言知识点:

文件:二进制

数据处理:双向链表

数据模型:

个人信息

struct msg

{

char name[100];

char tel[12];

char sex;

};

//链表的节点:数据+指向链表(两个指向域)

struct Node

{

//数据

struct msg data;

//指向域:

struct Node* next;

struct Node* front;

};

睡眠等待:

sleep()
代码如下:

管理员的头文件:

gly:

#ifndef __glyH__

#define __glyH__

#include<stdio.h>

#include<unistd.h>

#include<string.h>

#include<errno.h>

#include<stdlib.h>

struct glynode;

struct guanliyuan

{ char name[10];

char pw[10];

int  qx;

};

typedef struct guanliyuan gly;

typedef struct glynode gnd;

typedef struct glynode* gpnd;

struct glynode

{

gly data;

gpnd next;

};

void xie();                                               //写入管理员,初始化

void chakan();                                       //查看数据库管理员信息

int panduan(char*,char*,int*);              //判断用户名和密码

char gcr(gpnd*);                                    //文本里面信息写到链表,管理员

char gcr2(gpnd);                                   //链表数据写到文本,管理员

void zhuce(gpnd*);                               //注册

int  denglu(char*);                                 //登录函数

char gwins(gpnd*,gly);                         //尾插法插入

void gfind(gpnd);                                   //查找管理员

void gqk(gpnd*);                                    //清空链表

void galter(gpnd);                                  //修改管理员

void glist(gpnd);                                    //遍历管理员

int gdel(gpnd*);                                     //根据姓名删除

#endif

管理员的执行文件:

gly.c:

#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
#include"gly"
void xie()                                                                   //写入管理员,初始化
{
         FILE* fp=fopen("./aa.txt","wb");
         if(fp==NULL)
         {
           fprintf(stderr,"cp:打开失败!%s",strerror(errno));
           return ;
         }
               gly m={"luxin","123456",0};
         fwrite(&m,sizeof(gly),1,fp);
         fclose(fp);
}

void  chakan()                                                     //查看数据库管理员信息
{
        FILE *fp=fopen("./aa.txt","rb");
        if(NULL==fp)
        {
                fprintf(stderr,"cp:打开失败!%s",strerror(errno));
                return ;
        }
        gly sh;
        int time=0;
        printf("姓名\t\t密码\t\t权限\n");
        while(fread(&sh,1,sizeof(gly),fp)>0)
        {
        time++;
        printf("%s \t\t%s \t\t%d\n",sh.name,sh.pw,sh.qx);
        }
        printf("%d个人\n",time);
        if(time==0)
        printf("ab.txt文本为空");
        printf(".................\n");
        fclose(fp);
}

int panduan(char* name,char* pw,int* qx)               //判断用户名和密码
{   FILE *fp=fopen("./aa.txt","rb");
    if(NULL==fp)
    {
       fprintf(stderr,"cp:打开失败! %s",strerror(errno));
        return 0;
    }
      gly stu;
      int time=0;
      printf("pd");
      while(fread(&stu,sizeof(gly),1,fp)>0)
      {
       if(strcmp(name,stu.name)==0)
        {       time=1;
         if(strcmp(pw,stu.pw)==0)
          {     time=2;*qx=stu.qx;}
            else
                time=3;
        }
      }
       switch(time)
       { case 3:
          printf("密码错误!\nwhat you input is:%s\n",pw);
            break;
         case 2:printf("登录成功!\n");
        //    printf("%s \t\t%s \t\t%d\n",stu.name,stu.pw,stu.qx);
                break;
         case 0:printf("用户名不存在!\n");break;
       }
        return time;
}

char gcr(gpnd* ph)                                  //文本里面信息写到链表,管理员
{
        FILE* fp=fopen("./aa.txt","rb");
        if(fp==NULL)
         {
           fprintf(stderr,"cp:打开失败!%s",strerror(errno));
           return 0;
         }
         gly d;
        while(fread(&d,1,sizeof(gly),fp)>0)
        { gwins(ph,d);
        }
      fclose(fp);
     printf(".................\n");
}
char gcr2(gpnd ph)                                        //链表数据写到文本,管理员
{
        FILE* fp=fopen("./aa.txt","wb");
        if(fp==NULL)
         {
           fprintf(stderr,"cp:打开失败!%s",strerror(errno));
           return 0;
         }
          while(ph!=NULL)
         {   gly m=ph->data;
            fwrite(&m,1,sizeof(gly),fp);
                ph=ph->next;
         }
         fclose(fp);
     printf("\n.................\n");
}

void zhuce(gpnd* ghh)                                                                    //注册
{
         gly m;
         gpnd pp=*ghh;
         int h=0;
         while(1)
         {    printf("请输入用户名:");
              scanf("%s",m.name);
               if(pp==NULL)
                   break;
             while(NULL!=pp)
           {   if(strcmp(m.name,pp->data.name)!=0)
               { printf("用户名%s不存在,可添加\n",m.name);
                 h++;break;
               }
               else
                    printf("用户名%s存在,不可添加\n",m.name);
               pp=pp->next;
           }
              if(h!=0)
                break;
        }
          strcpy(m.pw,getpass("Password:"));
          printf("%s\n",m.pw);
          m.qx=1;
         gwins(ghh,m);
        printf("用户名%s添加成功\n",m.name);
     printf("\n.....................\n");
}

int  denglu(char* xm)                                                               //登录函数
{        gly ph;
         printf("name:");
        // char name[10];
         scanf("%s",ph.name);//printf("%s\n",name);
          //  printf("%s",ph.name);
         while(1)
         {
           strcpy(ph.pw,getpass("Password:"));
           int yyp=panduan(ph.name,ph.pw,&ph.qx);
            if(yyp==2)
            break;
            if(yyp==0||yyp==3)
           { printf("是否退出:1是/2否");
            int sf;
            scanf("%d",&sf);
            if(sf==1)
                break;
          }
        }
       int ppo=ph.qx;  // printf("%d",ppo);
       strcpy(xm,ph.name);
       return ppo;
}

char gwins(gpnd* ph,gly msg)                                            //尾插法插入
{
   gpnd pnew=malloc(sizeof(gnd));
   if(NULL==pnew)
           return ;
   pnew->data=msg;
   pnew->next=NULL;
   if(*ph==NULL)
   {
           *ph=pnew;
   }
   else
   {
           gpnd pee=*ph;
           while(pee->next!=NULL)
                   pee=pee->next;
                   pee->next=pnew;
   }
}

void gfind(gpnd ph)                                                             //查找管理员
{       printf("请输入要查找的name:");
        char sc[10];
        scanf("%s",&sc);
        int s=0;
        printf("姓名\t\t 密码\t\t权限\n");
        while(ph!=NULL)
        { if(strcmp(ph->data.name,sc)==0)
           {printf("%s\t\t %s\t\t %d\n",ph->data.name,ph->data.pw,ph->data.qx);    s++;
           }
                ph=ph->next;
        }
        if(s==0)
        printf("所查找的人不存在!\n");
}
void gqk(gpnd* ph)                                                                  //清空链表
{
   if(NULL==(*ph))
    {//printf("链表为空\n");
     return;}
    gpnd pl=NULL;
   while(NULL!=(*ph)->next)
  {   pl=(*ph)->next;
      free((*ph));
      (*ph)=pl;
  }
    if(NULL!=(*ph))
   {
     free((*ph));
     (*ph)=NULL;
   }
}

void galter(gpnd ph)                                                            //修改管理员
{       printf("请输入要修改的name:");
        char sc[10];
        int s=0;
        scanf("%s",&sc);
        while(ph!=NULL)
        {       if(strcmp(ph->data.name,sc)==0)
               {
                  printf("密码:");
                  scanf("%s",&(ph->data.pw));
                  printf("权限:");
                  scanf("%d",&(ph->data.qx));
                  printf("姓名:%s     密码:%s     权限:%d\n",ph->data.name,ph->data.pw,ph->data.qx);
          s++; }
               ph=ph->next;
        }
      if(s==0)
        printf("所要修改的人不存在!\n");
      else
        printf("修改成功!");

}

void glist(gpnd ph)                                                              //遍历管理员
{
        printf("姓名\t\t 密码\t\t权限\n");
        while(ph!=NULL)
        {
                printf("%s\t\t %s\t\t %d\n",ph->data.name,ph->data.pw,ph->data.qx);
                ph=ph->next;
        }
}

int gdel(gpnd* ph)                                                            //根据姓名删除
{        printf("输入要删除的name:");
         char name[10];
         scanf("%s",&name);
         gpnd front=*ph,rear=*ph;
         while(rear!=NULL&&strcmp(rear->data.name,name)!=0)
        {
             front=rear;
             rear=rear->next;
        }
        if(rear==NULL)
        {
          printf("不存在\n");
          return 0;
        }
        else
       { printf("存在\n");
         printf("确认删除:1是/2否");
         int qr;
         scanf("%d",&qr);
         if(qr==1)
         {  if(rear==*ph)
                 *ph=rear->next;
           else
                 front->next=rear->next;
             free(rear);
            printf("已删除\n");
         }

}

return 1;
}
/*
void main()
{
   chakan();
   gpnd ph=NULL;
   gcr(&ph);
//   zhuce(&ph);
   gdel(&ph);
   char xm[10];
   int pop=denglu(xm);
   printf("%s  %d\n",xm,pop);
   gcr2(ph);

gqk(&ph);

chakan();

}

*/
学生的头文件:

xs:

#ifndef __xsH__
#define __xsH__
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>

struct bode;
struct xueshen
{ char name[10];
  char xb[3];
  int sroce;
  int id;
};

typedef struct xueshen xs;
typedef struct node nd;
typedef struct node* pnd;
struct node
{
    xs data;
    pnd next;
};
void  chakan();                                                    //查看数据库管理员信息
void  chakanxs();                                                //查看数据库学生信息
char wins(pnd*,xs);                                            //尾插法插入
char cr(pnd*);                                                      //文本里面信息写到链表
char cr2(pnd);                                                     //链表数据写到文本
char insert(pnd*);                                               //添加学生信息
int del(pnd*);                                                       //根据姓名删除
void qk(pnd*);                                                     //清空链表
void find2(pnd);                                                  //id查找
void find(pnd);                                                    //姓名查找
void alter(pnd);                                                   //根据姓名修改
void banji(pnd);                                                  //成绩排序
void banid(pnd);                                                 //id排序
void list(pnd);                                                     //遍历
void qkxs(pnd);                                                  //清空学生信息
void cjfx(pnd);                                                    //成绩分析
void fd(pnd);                                                       //分段成绩
#endif
学生的执行文件:

xs.c:

#include"xsc"
void  chakanxs()                                                  //查看数据库学生信息
{
        FILE *fp=fopen("./ab.txt","rb");
        if(NULL==fp)
        {
                fprintf(stderr,"cp:打开失败!%s",strerror(errno));
                return ;
        }
        xs sh;
        int time=0;
        printf("姓名\t\t性别\t\t成绩\t\t ID\n");
        while(fread(&sh,1,sizeof(xs),fp)>0)
        {
        time++;
        printf("%s \t\t%s \t\t%d \t\t% d\n",sh.name,sh.xb,sh.sroce,sh.id);
        }
        printf("%d个人\n",time);
        if(time==0)
        printf("ab.txt文本为空");
        printf(".................\n");
        fclose(fp);
}
char wins(pnd* ph,xs msg)                                              //尾插法插入
{
   pnd pnew=malloc(sizeof(nd));
   if(NULL==pnew)
           return ;
   pnew->data=msg;
   pnew->next=NULL;
   if(*ph==NULL)
   {
           *ph=pnew;
   }
   else
   {
           pnd pee=*ph;
           while(pee->next!=NULL)
                   pee=pee->next;
                   pee->next=pnew;
   }
}

char cr(pnd* ph)                                                  //文本里面信息写到链表
{
        FILE* fp=fopen("./ab.txt","rb");
        if(fp==NULL)
         {
           fprintf(stderr,"cp:打开失败!%s",strerror(errno));
           return 0;
         }
         xs d;
        while(fread(&d,1,sizeof(xs),fp)>0)
        { wins(ph,d);
        }
      fclose(fp);
     printf(".................\n");
}
char cr2(pnd ph)                                                        //链表数据写到文本
{
        FILE* fp=fopen("./ab.txt","wb");
        if(fp==NULL)
         {
           fprintf(stderr,"cp:打开失败!%s",strerror(errno));
           return 0;
         }
          while(ph!=NULL)
         {   xs m=ph->data;
            fwrite(&m,1,sizeof(xs),fp);
                ph=ph->next;
         }
         fclose(fp);
     printf("\n.................\n");
}

char insert(pnd* ph)                                                          //添加学生信息
{
        xs d;
        pnd pp=*ph;
        printf("name:");
        scanf("%s",d.name);
        while(1)
        {
         printf("xb:");
         char xb[2];
         scanf("%s",&xb);
         if(strcmp(xb,"n")==0||strcmp(xb,"m")==0)
         {    strcpy(d.xb,xb);
               break ;
         }
         else
            printf("输入错误\n");
        }

printf("sroce(数字):");
         scanf("%d",&d.sroce);
         int h=0;
         while(1)
         {  printf("ID:");
            scanf("%d",&d.id);
            if(pp==NULL)
                break;
            while(NULL!=pp)
           {  if(d.id!=pp->data.id)
              { h++;  break;}
              else
                  printf("学号存在,不可添加\n");
              pp=pp->next;
           }
            if(h!=0)
              break;
         }
        wins(ph,d);
     printf("\n.................\n");

}
int del(pnd* ph)                                                                  //根据姓名删除
{        printf("输入要删除的name:");
         char name[10];
         scanf("%s",&name);
         pnd front=*ph,rear=*ph;
         while(rear!=NULL&&strcmp(rear->data.name,name)!=0)
        {
             front=rear;
             rear=rear->next;
        }
        if(rear==NULL)
        {
          printf("不存在\n");
          return 0;
        }
        else
       { printf("存在\n");
         if(rear==*ph)
                 *ph=rear->next;
         else
                 front->next=rear->next;
             free(rear);
         printf("已删除\n");
       }

return 1;
}
void qk(pnd* ph)                                                                       //清空链表
{
   if(NULL==(*ph))
    {//printf("链表为空\n");
     return;}
    pnd pl=NULL;
   while(NULL!=(*ph)->next)
  {   pl=(*ph)->next;
      free((*ph));
      (*ph)=pl;
  }
    if(NULL!=(*ph))
   {
     free((*ph));
     (*ph)=NULL;
   }
}
void find2(pnd ph)
{       printf("请输入要查找的id:");
        int sc;
        scanf("%d",&sc);
        int s=0;
        printf("姓名\t\t性别\t\t成绩\t\t ID\n");
        while(ph!=NULL)
        { if(ph->data.id==sc)
           {printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
              s++;
           }
                ph=ph->next;
        }
        if(s==0)
        printf("所查找的人不存在!\n");
}

void cjfx(pnd ph)
{  int i=0,h=0;
   printf("班级最低分:%d\n",ph->data.sroce);
   pnd zgf=NULL;
   while(ph!=NULL)
   { h=h+ph->data.sroce;
     i++;zgf=ph;
     ph=ph->next;
   }
   printf("班级平均分:%d\n",h/i);
   printf("班级最高分:%d\n",zgf->data.sroce);
}
void fd(pnd ph)
{       printf("请输入要查找多少分以上的分数:");
        int h;
        scanf("%d",&h);
        int s=0;
        printf("姓名\t\t性别\t\t成绩\t\t ID\n");
        while(ph!=NULL)
        { if(ph->data.sroce>h)
           {printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
              s++;
           }
                ph=ph->next;
        }
        if(s==0)
        printf("所查找的分段不存在!\n");

}

void find(pnd ph)
{       printf("请输入要查找的name:");
        char sc[10];
        scanf("%s",&sc);
        int s=0;
        printf("姓名\t\t性别\t\t成绩\t\t ID\n");
        while(ph!=NULL)
        { if(strcmp(ph->data.name,sc)==0)
           {printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
              s++;
           }
                ph=ph->next;
        }
        if(s==0)
        printf("所查找的人不存在!\n");
}

void alter(pnd ph)
{       printf("请输入要修改的name:");
        char sc[10];
        int s=0;
        scanf("%s",&sc);
        while(ph!=NULL)
        {       if(strcmp(ph->data.name,sc)==0)
               {  printf("name:");
                  scanf("%s",&(ph->data.name));
                  printf("xb:");
                  scanf("%s",&(ph->data.xb));
                  printf("sroce:");
                  scanf("%d",&(ph->data.sroce));
                  printf("ID:");
                  scanf("%d",&(ph->data.id));
                  printf("姓名:%s     性别:%s     成绩:%d    ID:%d \n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
          s++; }
               ph=ph->next;
        }
      if(s==0)
        printf("所要修改的人不存在!\n");
      else
        printf("修改成功!");

}

void banji(pnd ph)//成绩排序
{       pnd p=NULL;
        pnd l=NULL;
        p=ph;
        while(p!=l)
      {   while(p->next!=l)
        {
          if(p->data.sroce>p->next->data.sroce)
          {xs he=p->data;
           p->data=p->next->data;
           p->next->data=he;
          }
         p=p->next;
        }
         l=p;
         p=ph->next;
      }
}

void banid(pnd ph)//id排序
{       pnd p=NULL;
        pnd l=NULL;
        p=ph;
        while(p!=l)
      {   while(p->next!=l)
        {
          if(p->data.id>p->next->data.id)
          {xs he=p->data;
           p->data=p->next->data;
           p->next->data=he;
          }
         p=p->next;
        }
         l=p;
         p=ph->next;
      }
}
void list(pnd ph)
{
                printf("姓名\t\t性别\t\t成绩\t\t ID\n");
        while(ph!=NULL)
        {
                printf("%s\t\t %s\t\t %d\t\t %d\n",ph->data.name,ph->data.xb,ph->data.sroce,ph->data.id);
                ph=ph->next;
        }
}

void cl()
{   printf("(清屏按1加回车)");
    int pop;
    scanf("%d",&pop);
    if(pop==1)
      system("clear");
}
void qkxs(pnd ph)//清空学生信息
{

FILE* fp=fopen("./as.txt","wb");
        if(fp==NULL)
         {
           fprintf(stderr,"cp:打开失败!%s",strerror(errno));
           return ;
         }
        fclose(fp);
        system("cp as.txt ab.txt");
        printf("\n.................\n");
}

/*
void main()
{    printf("\n");
     system("clear");
     printf("\n");
     printf("                          学生管理系统\n");
     int s;
     pnd hh=NULL;

while(1)
     {
       printf("\n添加学生信息:1\n查找学生信息:2\n修改学生信息:3\n删除学生信息:4\n");
       printf("遍历:5\n查看文本:6\n成绩排序:7\nID排序:8\n清空:9\n");
       printf("其他:退出\n");
       printf("请输入:");
       scanf("%d",&s);
       if(s>0&&s<=9)
        switch(s)
      {case 1:cr(&hh);insert(&hh);cr2(hh);cl();break;
       case 2:cr(&hh);find(hh);cr2(hh);cl();break;
       case 3:cr(&hh);alter(hh);cr2(hh);cl();break;
       case 4:cr(&hh);del(&hh);cr2(hh);cl();break;
       case 5:cr(&hh);list(hh);cr2(hh);cl();break;
       case 6:chakanxs();cl();break;
       case 7:cr(&hh);banji(hh);list(hh);cr2(hh);cl();break;
       case 8:cr(&hh);banid(hh);list(hh);cr2(hh);cl();break;
       case 9:cr(&hh);qkxs(hh);break;
       default:qk(&hh);return;
      }

else
            break;
     qk(&hh);
    }
}
*/

主函数的执行文件:

main.c:

#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
#include"xsc"
#include"gly"
void xueshen(char* xm)
{    system("clear");
     int s;
     printf("xs:%s\n",xm);
     pnd hh=NULL;
     gpnd ghh=NULL;
     while(1)
     {
       printf("\n姓名查找学生信息:1\nID查找学生信息:2\n班级成绩:3\n成绩排序:4\nID排序:5\n成绩分析:6\n");
       printf("分段信息:7\n其他:退出\n");
       printf("请输入:");
       scanf("%d",&s);
       if(s>0&&s<=9)
        switch(s)
      {case 1:cr(&hh);find(hh);cr2(hh);cl();break;
       case 2:cr(&hh);find2(hh);cr2(hh);cl();break;
       case 3:cr(&hh);list(hh);cr2(hh);cl();break;
       case 4:cr(&hh);banji(hh);list(hh);cr2(hh);cl();break;
       case 5:cr(&hh);banid(hh);list(hh);cr2(hh);cl();break;
       case 6:cr(&hh);banji(hh);cjfx(hh);cr2(hh);cl();break;
       case 7:cr(&hh);fd(hh);cr2(hh);cl();break;
       default:qk(&hh);return;
      }
       else
            break;
     qk(&hh);gqk(&ghh);
     scanf("%*[^\n]%*c");
    }
}

void guanliyuan(char* xm)
{    printf("\n");
     system("clear");
     int s;
     pnd hh=NULL;
     gpnd ghh=NULL;
     printf("gly:%s\n",xm);
     while(1)
     { printf("学生管理:");
       printf("\n添加学生信息:1\n姓名查找学生信息:2\nID查找学生信息:3\n修改学生信息:4\n删除学生信息:5\n");
       printf("查看班级成绩:6\n成绩分析:7\n分段信息:8\n学生成绩排序:9\n学生ID排序:10\n查看学生数据库:11\n清空学生数据库:12\n");
       printf("管理员管理:\n");
       printf("查找管理员:13\n修改管理员信息:14\n查看管理员信息:15\n");
       printf("其他:退出\n");
       printf("请输入:");
       scanf("%d",&s);
       if(s>0&&s<=15)
        switch(s)
      {case 1:cr(&hh);insert(&hh);cr2(hh);cl();break;
       case 2:cr(&hh);find(hh);cr2(hh);cl();break;
       case 3:cr(&hh);find2(hh);cr2(hh);cl();break;
       case 4:cr(&hh);alter(hh);cr2(hh);cl();break;
       case 5:cr(&hh);del(&hh);cr2(hh);cl();break;
       case 6:cr(&hh);list(hh);cr2(hh);cl();break;
       case 7:cr(&hh);banji(hh);cjfx(hh);cr2(hh);cl();break;
       case 8:cr(&hh);fd(hh);cr2(hh);cl();break;
       case 9:cr(&hh);banji(hh);list(hh);cr2(hh);cl();break;
       case 10:cr(&hh);banid(hh);list(hh);cr2(hh);cl();break;
       case 11:chakanxs();cl();break;
       case 12:cr(&hh);qkxs(hh);break;
       case 13:gcr(&ghh);gfind(ghh);gcr2(ghh);cl();break;
       case 14:gcr(&ghh);galter(ghh);gcr2(ghh);cl();break;
       case 15:gcr(&ghh);glist(ghh);gcr2(ghh);cl();break; 
       default:qk(&hh);gqk(&ghh);return;
      }

else
            break;
     qk(&hh);gqk(&ghh);
//     scanf("%*[^\n]%*c");
    }
}
void main()
{    printf("\n");
     system("clear");
     printf("\n");
     printf("                          学生管理系统\n");
                                                                                // xie();//初始化管理员
     chakan();
    gpnd ghh=NULL;
     gcr(&ghh);
     printf("1.登录   2.注册:");
     int ze;
       scanf("%d",&ze);
     if(ze==2)
     zhuce(&ghh);
                                                                         //  gdel(&ghh);删除管理员
     gcr2(ghh);
     gcr(&ghh);
     char xm[10];
     printf("登录:");
     int ppo=denglu(xm);
     if(ppo==1)
        xueshen(xm);
     if(ppo==0)
        guanliyuan(xm);
     gcr2(ghh);
}

学生管理系统(C语言小项目)相关推荐

  1. 南京邮电大学c语言程序设计平台,程序设计报告-南京邮电大学-学生管理系统-c语言.doc...

    程序设计报告-南京邮电大学-学生管理系统-c语言.doc 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 ...

  2. 南京邮电大学c语言程序报告,程序设计报告南京邮电大学学生管理系统 c语言.doc...

    程序设计报告南京邮电大学学生管理系统 c语言 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 位 南京邮 ...

  3. c语言为什么要建项目,一个C语言小项目为什么都说牛逼

    原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...

  4. C语言小项目——走迷宫

    C语言小项目--走迷宫 设计方向: 1.定义二维字符数组作为迷宫 2.定义变量记录老鼠的位置 3.判定移动后位置的变化 4.记录游戏时长 5.判定到达终点的条件 总体设计: 1.用不同字符代表墙.老鼠 ...

  5. 学生管理系统——C语言版

    文章目录 学生管理系统--C语言版 主函数 录入学生信息 删除学生信息 修改学生信息 查找学生信息 打印学生信息 保存学生信息 读取学生信息 求班级成绩的平均值 学生管理系统--C语言版 主函数 in ...

  6. 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号

    C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业.  性别.年龄.   电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...

  7. C语言小项目之“究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的”通讯录之*派小猩*作品

    C语言小项目之"究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的"通讯录之派小猩作品 项目概述 基于C语言开发一个多功能的通讯录 功能目录 1.增加 2.删除 3.查找 4.修改 5.显示 6 ...

  8. 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)

    摘  要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生管理系统是学校管理中不可少的一部分.而基于B/S架构的学生管 ...

  9. 学生管理程序c语言数组,c语言学生管理系统(c语言学生信息管理系统)

    要求:1记录学生班级姓名,性别,职务住址情况,数据输入数据删除排序查. #include /*引用库函数*/ #include #include #include typedef struct /*定 ...

最新文章

  1. IEEE史上首位华人主席,马里兰大学终身教授刘国瑞当选
  2. CPLD/FPGA的UART接口设计之系统时钟(晶振)和波特率关系
  3. TIOBE 年度榜单揭晓:C 语言夺冠,Python 紧随其后
  4. centos 7安装zabbix 3.0
  5. linux libimf.so,如何安装Linux版FLOW-3D及注意事项
  6. 安全运维 - Linux系统维护
  7. Process Explorer 诊断和排错实例(下)
  8. c51语言串口,C51 语言编程:单片机与 PC 串口通信程序
  9. 使用现成的组件生成伪随机二进制序列和白噪声
  10. 流利阅读12.28 Seriously, Prada, what were you thinking? Why the fashion industry keeps bumbling into rac
  11. 如何用计算机远程桌面连接不上,手把手教你电脑远程桌面无法连接怎么办
  12. 用树莓派做MIDI HOST,给合成器外接MIDI键盘
  13. python脚本计算STM32的bxCAN的波特率
  14. 零拷贝之splice( )函数和tee( )函数
  15. 卸载Macfee杀毒软件之后Outlook无法加载项scanotlk.dll,outlook已经将其禁用
  16. Rapid object detection using a boosted cascade of simple features-简译
  17. 广东省第三届强网杯Writeup
  18. vs2017无法下载安装文件,请检查internet连接
  19. 2014年中信银行IT类笔试回忆版
  20. 摄影必备图像处理软件—— lr cc 2019直装版(Lightroom Classic CC 2019 for Mac8.2.1中文激活版)

热门文章

  1. 关闭服务器共享文件,服务器如何关闭共享文件夹共享文件夹
  2. 前端面试总结(持续更新中~~~~)
  3. android获取内部存储卡里的文件,获取Android内部存储(外部SD卡)和扩展存储卡(TF卡)的路径...
  4. sum 矩阵求和 matlab
  5. C/C++ 字符指针数组循环赋值问题
  6. 《现代密码学》2022年期末试卷
  7. 分频器的Verilog设计
  8. ubuntu20.04超简单的安装海康相机与海康sdk调试问题
  9. TCP/IP 之 大明王朝邮差 (转)
  10. 卓有成效的程序员(影印版)