zoukankan      html  css  js  c++  java
  • c语言学生管理系统链表(dev vs2012下可以运行)

    struct student
    {
    char name[10];
    char sex[5];
    long int num;//学号
    int xuhao;
    int age;
    float score[3];
    float averange;
    char DJ;//存放等级哦
    struct student *next;
    
    };//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明
    
    
    int n;//存放学生人数
    
    
    int man;//存放统计的男生数
    
    
    float JY(float a)//校验成绩使范围0-100
    {
    int n=0;
    while(1)
    {
    
    if(a>100||a<0)
    {
    printf(" 输入成绩有误,范围应该0-100,请重新输入:");
    scanf("%f",&a);
    n=n+1;
    }
    else
    {
    
    return a;
    }
    }
    }
    struct student *creat(void)// 创建一个结构体返回链表的指针 
    {
    int sexJY(char *sex);
    struct student *head;//头指针 
    struct student *p1,*p2; // 其他指针 
    int mm;
    int m=1;
    n=0;
    p1=p2=(struct student *)malloc(LG); // 开辟内存空间 
    // printf("输入第%d个同学的基础信息,并求出2个同学的语文平均成绩。
    ",i+1);
    printf("请先输入学号(输入0退出录入)
    ");
    printf(" ");
    p1->xuhao=m;
    m++;
    scanf("%ld",&p1->num);
    if(p1->num!=0)
    {
    printf(" 请输入您的姓名
    ");
    printf(" ");
    scanf("%s",&p1->name);
    printf(" 你好,%s!",p1->name);
    printf("请输入您的性别male or female
    ");
    //mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型
    printf(" ");
    scanf("%s",&p1->sex); 
    // mm=sexJY(p1->sex);
    mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型
    if(mm==1)
    {
    
    printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)
    ");
    printf(" 第一科的成绩是:");
    scanf("%f",&p1->score[0]); 
    p1->score[0]=JY(p1->score[0]);//校验第一科的成绩	
    printf(" 第二科的成绩是:");
    scanf("%f",&p1->score[1]); 
    p1->score[1]=JY(p1->score[1]);//校验第二科的成绩
    printf(" 第三科的成绩是:");
    scanf("%f",&p1->score[2]);
    p1->score[2]=JY(p1->score[2]);//校验第三科的成绩
    printf(" 录入完毕
    ");
    printf("-----------------------------------------------------------------------------------------------------------------
    ");
    } 
    } 
    //scanf("%d,%f,%f",&p1->num,&p1->score[0],&p1->score[1]);
    head=NULL;
    //head 为空 
    while(p1->num!=0)//如果成员的学号不是0则创建链表函数 
    {
    n=n+1;//
    if(n==1) 
    {
    head=p1; //如果n=1 则把结构体的头指针给它 
    } 
    else 
    p2->next=p1;//否则把第二个指针指向第一个指针的末尾
    
    p2=p1;//调整p2指针的指向 指向p1 
    p1=(struct student *)malloc(LG);
    printf("请先输入学号(输入0退出录入)
    ");
    printf(" ");
    p1->xuhao=m;
    m++;
    scanf("%ld",&p1->num);
    if(p1->num!=0)
    {
    printf(" 请输入您的姓名
    ");
    printf(" ");
    scanf("%s",&p1->name);
    printf(" 你好,%s!",p1->name);
    printf("请输入您的性别male or female
    ");
    printf(" ");
    scanf("%s",&p1->sex); 
    mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型
    if(mm==1)
    {
    
    printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)
    ");
    printf(" 第一科的成绩是:");
    scanf("%f",&p1->score[0]); 
    p1->score[0]=JY(p1->score[0]);//校验第一科的成绩	
    printf(" 第二科的成绩是:");
    scanf("%f",&p1->score[1]);
    p1->score[1]=JY(p1->score[1]);//校验第二科的成绩
    printf(" 第三科的成绩是:");
    scanf("%f",&p1->score[2]);
    p1->score[2]=JY(p1->score[2]);//校验第三科的成绩
    printf(" 录入完毕
    ");
    printf("-----------------------------------------------------------------------------------------------------------------
    ");
    }
    } 
    }
    p2->next=NULL;
    return (head);
    }////结构体链表创建
    
     
    
     
    
     
    
    
    void body()
    { 
    /*
    char stCmd[128];
    sprintf("mode con cols=%d lines=%d", height, width);
    system(stCmd);动态设置窗体大小
    */
    system("mode con cols=120 lines=40");
    //system("color f4");
    printf("
     ----------------------------------------------- 学生成绩管理系统-----------------------------------------------
    "); 
    printf("
    ");
    printf("
    ");
    printf(" ===========================
    ");
    printf(" = 请先输入数据 =
    ");
    printf(" ===========================
    ");
    printf(" 请输入学生的信息,包含姓名、性别、年龄 、语文成绩、数学成绩、外语成绩。
     
     
    ");
    printf(" ---------------------------------------------------------------------------------------------------------------
     "); 
    printf("
    ");
    }
    void body2()
    {
    printf("
     ----------------------------------------- 学生成绩管理系统-----------------------------------------------
    "); 
    printf("
    ");
    printf("
    ");
    printf(" ==========================
    ");
    printf(" = 欢迎 =
    ");
    printf(" 该系统共有%d个学生
    ",n);
    printf(" ===========================
    ");
    }
    int showdata(struct student *head)//功能界面,
    {
    struct student *p;
    int sexJY(char *sex);//性别校验函数
    struct student *del(struct student *head);
    struct student *del2(struct student *head);//删除功能2
    int search(struct student *head,long int i);//查找功能
    void print1(struct student *head);//打印功能1
    void print2(struct student *head);//打印功能2
    void print3(struct student *head);//打印功能3
    void cont(struct student *head);//计算功能1
    void change1(struct student*head);
    //void change1(struct student*head, long int i)//修改功能 
    struct student *add(struct student *head);//插入数据
    struct student*nsert(struct student *head);
    //	void destroy1(struct student *head);//摧毁链表
    int TJ(struct student *head);//男生计算功能
    int i;//存放学生编号 
    int iii;//存放选择显示参数
    int j;//存放选择参数 
    int o;//选择颜色参数
    long int ii;//存放需要修改的学生编号
    long int jj;//存放需要查找的学生编号
    char a;
    p=head;
    
    while(1)
    {
    body2();
    
    printf("
    ");
    printf("
    ");
    printf("
    ---------- 学生成绩管理系统------------
    "); 
    printf("
    ");
    printf(" 1 ======================
    ");
    printf(" = 主菜单 =
    ");
    printf(" ======================
    ");
    printf("
    ");
    printf(" 请根据需要选择操作
    ");
    printf("
    ");
    printf(" 选择查询的方式
    ");
    printf(" (0)创建一个链表 
    ");//完成
    printf(" (1)增加一个同学信息 
    ");//完成
    printf(" (2)删除一个同学信息 
    ");//完成
    printf(" (3)修改一个学生信息 
    ");//完成
    printf(" (4)计算学生的三科平均分并且给予等级 
    ");//完成
    printf(" (5)显示所有学生的信息 
    ");//完成
    printf(" (6) 设置系统背景 
    ");//完成
    printf(" (7) 查找一个同学的信息 
    ");//完成
    printf(" (8) 统计男生的人数
    ");
    printf(" (9) 局部显示所有学生的信息
    ");
    //	printf(" (10) 删除所有的学生成绩并重新录入
    ");
    printf(" 请选择1-9
    ");
    
    scanf("%d",&j);//选择不同的功能
    if(j>=0&&j<=10)
    {
    switch(j)
    {
    
    
    case 0:
    p=creat();
    _sleep(5000); 
    system("cls");//清屏操作 
    break;//弹出 
    
    case 1:
    nsert(p); 
    _sleep(5000);
    system("cls");//清屏操作 
    break;
    case 2: 
    del(p);
    _sleep(5000); 
    system("cls"); 
    break;
    case 3:
    print3(p);
    change1(p);
    break;
    // change1(p,ii);
    system("cls"); 
    break;
    case 4:
    cont(p);
    //rank(stu);
    _sleep(5000); 
    system("cls"); 
    break;
    case 5:
    print3(p);
    _sleep(5000); 
    break;
    case 6:
    printf("请选择颜色
    ");
    printf("(1)天蓝色");
    printf("(2)红色");
    printf(" (3) 白色 ");
    printf(" (4) 亮白色 ");
    printf(" (5)绿色 ");
    scanf("%d",&o);
    switch(o)
    {
    case 1:
    system("color 0B");
    break;
    case 2:
    system("color 0C");
    break;
    case 3:
    system("color 07");
    break;
    case 4:
    system("color 0F");
    break;
    case 5:
    system("color 0A");
    break;
    default://其他值均为默认
    system("color 07");
    break;
    }
    break;
    case 7:
    printf("请输入要查找的学生学号");
    scanf("%ld",&jj);
    search(p,jj);
    _sleep(5000); 
    break;
    case 8:
    TJ(p);//计算男生人数
    _sleep(5000); 
    break;
    case 9:
    showdata2(p);
    // _sleep(5000); 
    break;
    /* case 10://摧毁链表
    destroy1(p);
    break;
    */
    
    
    }
    }
    else
    {
    printf("输入错误
    ");
    _sleep(3000);
    system("cls");
    
    
    
    }
    }
    
    
    }
    int showdata2(struct student *head)
    {
    
    struct student *p;
    int sexJY(char *sex);//性别校验函数
    struct student *del(struct student *head);
    struct student *del2(struct student *head);//删除功能2
    int search(struct student *head,long int i);//查找功能
    void print1(struct student *head);//打印功能1
    void print2(struct student *head);//打印功能2
    void print3(struct student *head);//打印功能3
    void cont(struct student *head);//计算功能1
    void change1(struct student*head);
    struct student *add(struct student *head);//插入数据
    struct student*nsert(struct student *head);
    int TJ(struct student *head);//男生计算功能
    int iii;//存放学生的查询参数
    p=head;
    system("cls");//清屏
    printf(" 1 ======================
    ");
    printf(" = 副菜单 =
    ");
    printf(" ======================
    ");
    printf(" 选择查询的方式
    ");
    printf("
     1.显示所有学生的成绩
    ");
    printf("
     2.显示所有学生的学号性别
    ");
    printf("
     3.显示所有学生的所有信息
    ");
    printf(" 请选择1-3
    ");
    scanf("%d",&iii);
    
    switch (iii)
    {
    case 1:
    print1(p);
    _sleep(5000);
    break;
    case 2:
    print2(p);
    _sleep(5000);
    break;
    case 3:
    print3(p);
    _sleep(5000);
    break;
    default:
    printf("输入错误
    ");
    break;
    }
    
    return 0;
    
    }//二级菜单 
    void print1(struct student *head)
    {
    struct student *p;
    p=head;
    printf("------------------------------------------------------------------------------------------------------------------
    ");
    do
    {
    printf("
     姓名:%s,学号%d,%s
    
    ",p->name,p->num,p->sex);//姓名,学号
    p=p->next;
    }while(p!=NULL);
    }//不同显示数据的方式 第一种
    void print2(struct student *head)//显示所有学生的成绩
    {
    struct student *p;
    p=head;
    printf("------------------------------------------------------------------------------------------------------------------
    ");
    do
    {
    printf("
    
     姓名%s,语文:%3.1f,数学:%3.1f,外语:%3.1f
    ",p->name,p->score[0],p->score[1],p->score[2]);
    p=p->next;
    }while(p!=NULL);
    }//不同显示数据的方式 第二种
    void print3(struct student *head)
    {
    float a;
    struct student *p;
    p=head;
    
    printf("------------------------------------------------------------------------------------------------------------------------------------------");
    while(p!=NULL)
    {
    
    printf("
    
    序号 %d 学号 %ld 姓名:%s 性别: %s 语文: %3.1f 数学:%3.1f 外语:%3.1f",p->xuhao,p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2]);//姓名,性别
    a=p->score[0]+p->score[1]+p->score[2];
    printf(" 总分:%3.1f",a);
    printf(" 等级%c
    ",p->DJ);
    p=p->next;
    }
    }
    int passwd(char *name, char *pwd) 
    {
    int u = 0;
    if (strcmp(name, "root") == 0 && strcmp(pwd, "123456") == 0)
    {
    u =1;
    return u;
    }
    else if (strcmp(name, "1") == 0 && strcmp(pwd, "1") == 0)
    {
    u = 1;
    return u;
    }
    return 0;
    }//密码校验函数 传递两个字符数组,一个账号,一个密码。
    void change1(struct student*head)
    {
    long int i;
    struct student *p;
    p=head;//定义指针
    
    
    
    printf("输入想要修改的学生的学号:
    ");
    scanf("%ld",&i);
    //printf("%ld",p->num);
    
    
    
    
    
    
    do
    {	
    //printf("test1");
    if(p->num==i)//当结点跳转到该学生时修改成绩
    {
    
    printf("开始修改信息
    ");
    printf("请先输入学号
    ");
    printf(" ");
    
    scanf("%ld",&p->num);
    if(p->num!=0)
    {
    printf(" 请输入您的姓名
    ");
    printf(" ");
    scanf("%s",&p->name);
    printf(" 你好,%s!",p->name);
    printf("请输入您的性别male or female
    ");
    
    printf(" ");
    scanf("%s",&p->sex); 
    printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)
    ");
    printf(" 第一科的成绩是:");
    scanf("%f",&p->score[0]); 
    p->score[0]=JY(p->score[0]);//校验第一科的成绩	
    printf(" 第二科的成绩是:");
    scanf("%f",&p->score[1]); 
    p->score[1]=JY(p->score[1]);//校验第二科的成绩
    printf(" 第三科的成绩是:");
    scanf("%f",&p->score[2]);
    p->score[2]=JY(p->score[2]);//校验第三科的成绩
    printf(" 录入完毕
    ");
    printf("-----------------------------------------------------------------------------------------------------------------
    ");
    break; 
    } 
    p=p->next;//需要把下一个结点赋值给p
    
    }
    
    
    } while(p->next!=NULL);
    
     
    
     
    
     
    
    }
    void cont(struct student *head)
    {
    struct student *p;
    int i=0;
    p=head;
    printf("------------------------------------------------------------------------------------------------------------------
    ");
    printf("----------------------------------------计算中----------------------------------------
    ");
    do{
    p->averange=((p->score[0])+(p->score[1])+(p->score[2]))/3.0;
    printf("第%d同学的成绩为%3.1f",i+1,p->averange);
    
    if(p->averange>=90&&p->averange<=100)
    { 
    
    printf(" 等级为A
    ",i+1);
    p->DJ='A';
    }
    if(p->averange>=60&&p->averange<=89)
    {
    
    printf(" 等级为B
    ",i+1);
    p->DJ='B';
    }
    if(p->averange>=0&&p->averange<=60)
    {
    
    printf(" 等级为C
    ",i+1);
    p->DJ='C';
    }
    if(p->averange>100||p->averange<0)
    {
    
    printf(" incorrect
    ");
    }
    
    i=i+1;
    p=p->next;
    
    
    
    }while(p!=NULL);
    
    
    }
    int search(struct student *head,long int i)//通过学号来查找学生的信息
    {
    struct student *p;
    p=head;
    while(p->next!=NULL)//遍历链表结点
    {
    if(i==p->num)
    {
    printf("
    
    学号 %ld 姓名:%s 性别: %s 语文: %3.1f 数学:%3.1f 外语:%3.1f 等级%c
    ",p->num,p->name,p->sex,p->score[0],p->score[1],p->score[2],p->DJ);
    return 0;
    }
    
    
    p=p->next;
    }
    
    printf("无该生信息
    ");
    return 0;
    
     
    
    
    }
    struct student *del(struct student *head)//链表怎么删除结点并链接 删除序号为多少的学生的成绩 定义一个结构体指针
    {
    int i,j;
    struct student *p1,*p2;//定义两个结构体指针
    p1=head;//
    p2=head;//p2指针依然指向head
    printf("删除第几个节点的数据
    ");
    scanf("%d",&i);//获得节点数据
    for(j=1;j<i;j++)
    {
    p2=p1;//p2指向p1
    p1=p1->next;//p1向后移动一个表
    }
    //此时指向删除数据的上一个位置
    if(p1==head)//如果此时依然指向链表的头 则链表向后移动一位
    {
    
    // head=p1->next;//则通过p1向后一移动一位,链表向后移动了一位但是指针没动
    head = p1->next;//逻辑完全正确啊
    // free(p1);
    printf("当前正在删除一个结点数据
    ");
    
    //return head;
    }
    else//否则
    {
    p2->next=p1->next;//把p1指针指向下一个数据给p2指针指向下一个位置 这句话的意思是向后移动一位指针。
    //把p1指针指向下一个数据给p2指针指向下一个位置 这句话的意思是向后移动一位指针。
    
    }
    
    while(head!=NULL)
    {
    printf("
    
    序号 %d 学号 %ld 姓名:%s 性别: %s 语文: %3.1f 数学:%3.1f 外语:%3.1f",head->xuhao,head->num,head->name,head->sex,head->score[0],head->score[1],head->score[2]);//姓名,性别
    //	a=p->score[0]+p->score[1]+p->score[2];
    //printf(" 总分:%3.1f",a);
    printf(" 等级%c
    ",head->DJ);
    head=head->next;
    } //删除第二行数据,之后的链条直接中断需要把链条接上
    free(p1);//释放
    n=n-1;
    printf("
    **********删除中 稍后*********
    ");
    
     
    
    return head;//返回
    
    
    }
    /*struct student *del2(struct student *head)//链表怎么删除结点并链接 删除序号为多少的学生的成绩 定义一个结构体指针
    { int i,j;
    struct student *p1,*p2;
    p1=head;
    p2=head;//把p1 p2都指向head
    printf("选择删除序号为多少的学生数据");
    scanf("%d",&i);//获得学号
    for(j=1;j<i;j++)
    {
    p2=p1;//把p2指针指向p1
    p1=p1->next;//把p1指针往后挪 直到指向指定数据的上一个数据
    }
    if(p1==head)
    {
    head=p1->next;
    }
    free(p1);
    
    
    }*/
    /*struct student *add(struct student *head)
    { 
    struct student *p1,*p2;
    int i,j;
    int m;
    p1=head;//尾插
    p2=head;//p2指针依然指向head
    
    do
    {
    
    
    p1=p1->next;
    
    
    }while(p1==NULL);
    p1=(struct student *)malloc(LG);//开辟内存空间,
    /*printf("请先输入学号
    ");
    printf(" ");
    ("%ld",&p1->num);
    if(p1->num!=0)
    {
    printf(" 请输入您的姓名
    ");
    printf(" ");
    scanf("%s",&p1->name);
    printf(" 你好,%s!",p1->name);
    printf("请输入您的性别male or female
    ");
    
    printf(" ");
    scanf("%s",&p1->sex); 
    printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)
    ");
    printf(" 第一科的成绩是:");
    scanf("%f",&p1->score[0]); 
    p1->score[0]=JY(p1->score[0]);//校验第一科的成绩	
    printf(" 第二科的成绩是:");
    scanf("%f",&p1->score[1]); 
    p1->score[1]=JY(p1->score[1]);//校验第二科的成绩
    printf(" 第三科的成绩是:");
    scanf("%f",&p1->score[2]);
    p1->score[2]=JY(p1->score[2]);//校验第三科的成绩
    printf(" 录入完毕
    ");
    printf("-----------------------------------------------------------------------------------------------------------------
    ");
    
    } 
    //scanf("%d,%f,%f",&p1->num,&p1->score[0],&p1->score[1]);
    n=n+1;
     
    
     
    
    
    return head;
    
    }//插入数据函数
    */
    struct student*nsert(struct student *head)
    {
    struct student *p1,*p,*q;
    int i = 1;
    int jj;
    int mm;
    int nn;
    
    printf("要插入的位置(尾插)1-%d:",n);
    scanf("%d",&jj);//所要插入第几位学生信息
    if(jj>=1&&jj<=n)
    {
    
    
    p = head->next ;
    p1 = (struct student *)malloc(sizeof(struct student));
    printf("请先输入学号(输入0退出录入)
    ");
    printf(" ");
    scanf("%ld",&p1->num);
    if(p1->num!=0)
    {
    p1->xuhao=jj+1;
    printf(" 请输入您的姓名
    ");
    printf(" ");
    scanf("%s",&p1->name);
    printf(" 你好,%s!",p1->name);
    printf("请输入您的性别male or female
    ");
    
    printf(" ");
    scanf("%s",&p1->sex); 
    mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型
    if(mm==1)
    {
    printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)
    ");
    printf(" 第一科的成绩是:");
    scanf("%f",&p1->score[0]); 
    p1->score[0]=JY(p1->score[0]);//校验第一科的成绩	
    printf(" 第二科的成绩是:");
    scanf("%f",&p1->score[1]); 
    p1->score[1]=JY(p1->score[1]);//校验第二科的成绩
    printf(" 第三科的成绩是:");
    scanf("%f",&p1->score[2]);
    p1->score[2]=JY(p1->score[2]);//校验第三科的成绩
    printf(" 录入完毕
    ");
    n=n+1;//系统学生数自增1
    printf("-----------------------------------------------------------------------------------------------------------------
    ");
    }
    }
    
    if(1 == jj)
    {
    struct student*q = head->next ;
    head->next = p1;
    p1 ->next = q; 
    }
    else
    while( p )
    {
    if(i == (jj-1))
    {
    struct student*q = p->next ;
    p->next = p1;
    p1->next = q;
    }
    p = p->next ;
    i++;
    }
    
    return p;
    
    }
    else
    {
    printf("
    ---------录入错误---------
    ");
    printf("请重试
    ");
    return head;
    }
    }
    int sexJY2(char *sex) 
    {
    int u = 0;
    if (strcmp(sex, "male") == 0)
    {
    u =1;
    return u;
    }
    return 0;
    }
    int sexJY(char *sex) 
    {
    int u = 0;
    while(1)
    {
    if (strcmp(sex, "male") == 0 || strcmp(sex, "female") == 0)
    {
    u =1;
    return u;
    }
    else
    {
    printf("性别错误请重新输入
    ");
    scanf("%s",sex);
    
    }
    }
    }
    int TJ(struct student *head)
    {
    int sexJY2(char *sex);
    int mm;
    int nn;
    struct student *p;
    p=head;
    do
    { 
    nn=sexJY((char*)p->sex);//强制转换
    
    if(nn==1)
    {
    man++;
    }
    
    p=p->next;//一直向下指直到
    
    
    
    }while(p!=NULL);
    
    printf("
    男生人数为:%d
    ",man);
    return 0;
    }//遍历整个链表 计算男生的人数
    int in()
    {
    
    int i,j;
    int m;
    int n=0;//如果密码输入错误三次则跳出循环
    char user[20]={'0'};
    char pas[20]={'0'};
    char aa[20]={' ','U','s','e','r',' ','N','a','m','e',':'};//输出账号登陆
    char bb[20]={' ','P','a','s','s','w','o','r','d',':'};
    system("mode con cols=45 lines=15");
    while(1)
    {
    printf("
    ");
    for(i=0;i<12;i++)
    {
    printf("%c",aa[i]);
    _sleep(50);
    
    }
    //printf(" User Name:");
    gets(user);//输入账号
    for(i=0;i<10;i++)
    {
    printf("%c",bb[i]);
    _sleep(50);
    
    }
    gets(pas);//如何隐藏输入的密码 安全性getch(); printf("*");
    m=passwd(user,pas);
    if(m==1)
    {
    return m;
    }
    else
    {
    n++; 
    printf("incorrect please try again
    ");
    if(n==3)
    {
    system("color 04");
    system("cls");
    while(1)
    {
    printf("快滚出老子的魔仙堡!!!!
    ");
    _sleep(1000);
    }
    return 0;
    }
    }
    }
    }
    /*
    struct student *add2(struct student *head)
    {
    int i;//存放选择参数 
    struct student *p1,*p2;
    p1=(struct student *)malloc(LG);
    p1=head; 
    scanf("%d".&i);//输入要插入的地点
    {
    printf("请先输入学号(输入0退出录入)
    ");
    printf(" ");
    p1->xuhao=m;
    m++;
    scanf("%ld",&p1->num);
    if(p1->num!=0)
    {
    printf(" 请输入您的姓名
    ");
    printf(" ");
    scanf("%s",&p1->name);
    printf(" 你好,%s!",p1->name);
    printf("请输入您的性别male or female
    ");
    //mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型
    printf(" ");
    scanf("%s",&p1->sex); 
    // mm=sexJY(p1->sex);
    mm=sexJY((char*)p1->sex);//char **类型与char *类型不兼容 需要强制转换为char*类型
    if(mm==1)
    {
    
    printf(" 请输入三科成绩,(语文成绩,数学成绩,外语成绩)
    ");
    printf(" 第一科的成绩是:");
    scanf("%f",&p1->score[0]); 
    p1->score[0]=JY(p1->score[0]);//校验第一科的成绩	
    printf(" 第二科的成绩是:");
    scanf("%f",&p1->score[1]); 
    p1->score[1]=JY(p1->score[1]);//校验第二科的成绩
    printf(" 第三科的成绩是:");
    scanf("%f",&p1->score[2]);
    p1->score[2]=JY(p1->score[2]);//校验第三科的成绩
    printf(" 录入完毕
    ");
    printf("-----------------------------------------------------------------------------------------------------------------
    ");
    } 
    } 
    
    
    
    
    
    
    
    if(i==1)
    {
    head=p1->next;//把头指针想后移动 
    
    } 
    for(j=0;j<i;j++)
    
    {
    
    p2=p2->next; 
    if(p2==NULL)
    {
    return head;
    
    } 
    
    } 
    
    
    else
    {
    
    
    p3=p2->next;
    p2->next=p1 
    p1->next=p3;//重构 
    
    }
    
    
    
    }
    */
    

      


    #define LG sizeof(struct student) #define M 10 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<windows.h> #include"xyf.h" int main(void ) { struct student *p; int m=0;//注意要修改回来 //system("cls"); m=in();//密码校验 if(m==1) { system("color 07"); body(); //data(p); p=creat(); showdata(p); // showdata(p); } else { return 0; } _sleep(10000); return 0; } /*增加一个同学信息 删除一个同学信息 修改一个学生信息 查找一个学生信息(按姓名、按学号) 等级计算 统计男生人数 显示学生信息(局部或全部) 学生成绩管理系统 要求: 定义学生结构体数据类型。在此类型中,应该包括三个成员变量(学号、姓名、成绩)。 定义个学生数组保存学生的信息。用一个变量来记录学生人数。 添加学生的信息。 显示学生的信息。 删除学生的信息。 查找学生的信息,根据姓名。 统计学生的信息。 第一步:菜单界面设计 提示: 1、程序功能的展示:输出语句 2、提供用户选择功能的接口:输入语句 3、对用户输入的范围校验:if结构 4、对用户选择的响应:switch结构 5、单个函数头的定义 第二步: 1、结构体构造(函数外面的地方) 2、设计输入函数,实现一个信息的输入; 3、设计输出函数,实现一个信息的输出。 4、提示:变量的定义位置,解决数据共享问题。 方法一:定义在主函数中,通过函数参数传递的方式进行。 方法二:定义为全局变量,实现数据的共享(变量的作用域) 程序结构: //引入头文件 include //函数原型声明 void add(); //结构体定义(构造) struct A{……}; //主函数定义 int main() { } //子函数定义 void add() {……} 第三步:采用数组解决全班信息的存储、显示问题 1、采用宏定义的方式声明学生人数 2、定义数组,定义数组的数组下标采用宏定义符号 struct stu s[N]; for(int i=0;i<N;i++) { //单个数据输入代码 } 3、对数组操作,显示全班信息 第四步:结构体变量定义在主函数中,通过函数参数传递的方式进行数据共享。 1、一个数据的处理 main() { …… struct stu s; //结构体变量的定义 sr(&s); //实参传递 …… } //单个数据输入函数 void sr(struct stu * x) { //对形参变量x赋值 scanf("%d",&(*x).xh); scanf("%d",&(x->xh)); } 2、多个数据的处理 main() { …… struct stu s[10]; //结构体变量的定义 for(i=0;i<10;i++) sr(&s[i]); //实参传递 …… } //单个数据输入函数 void sr(struct stu * x) { //对形参变量x赋值 scanf("%d",&(*x).xh); scanf("%d",&(x->xh)); } */ /* /*1、声明一个结构体类型student,包含姓名、性别、年龄、语文成绩、数学成绩、外语成绩等成员。 2、编写程序:输入2个同学的基础信息,分别求出2个同学的语文平均成绩。 3、编写程序:输入10个同学的基础信息,显示同学的基础信息。 4、设计多个显示功能函数: (1)显示学生的姓名、性别 (2)显示学生的姓名、年龄 (3)显示学生的姓名、总分 编写程序:让用户有选择的查看10位同学的信息。 5、给结构体类型student新增成员:等级 设计等级测试函数:根据3科平均分计算出学生等级(A:100-90; B:89-60; C:60-0) 编写程序:让用户有选择的使用系统功能。 6、学生管理系统 7.链表+指针 学生成绩管理系统*/
    /*在dev 下测试可以运行 在vs2012下测试可以运行*/

      

  • 相关阅读:
    Django中使用Celery实现异步任务队列
    使用Pyenv + pipenv来管理python版本和虚拟环境
    Django设置DEBUG=False后静态文件无法加载
    翕的来历
    Dubbo:基本原理机制
    数据库事务特性及隔离机制再到spring事务管理
    通过rocketmq思考一下mq的设计取舍
    redis的一些特性
    redis的快速机制与数据类型
    Zookeeper选举算法原理
  • 原文地址:https://www.cnblogs.com/a986771570/p/6995448.html
Copyright © 2011-2022 走看看