| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1390 人关注过本帖
标题:c语言复习题求帮助
只看楼主 加入收藏
shangguan199
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-3-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
c语言复习题求帮助
假设一个班由一名教师和若干学生(<=5人)组成,教师信息包括工号、姓名,学生信息包括学号、姓名和成绩。请编写程序,模拟班级的管理,主要管理功能包括班级信息输出、按学号查找学生(查找成功则输出学生信息)、插入学生、删除学生(按学号删除)。
要求:(1)老师、学生需定义为结构体。
     (2)班级中学生需根据学生实际人数动态分配空间。
     (3)各功能需单独封装函数。
     (4)代码编写规范(空行、注释、参数及类型命名等)
由于毕业太久,给忘记了,求帮助!!
补充代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXSIZE 5

//定义教师
typedef struct teacher
{
    int tno;
    char tname[MAXSIZE];
} Teacher;

//定义学生
typedef struct student
{
    int sno;
    char sname[MAXSIZE];
    int grade;
} Student;

//定义班级
typedef struct classinfo
{
    Teacher tea;
    Student* stu[MAXSIZE];
    int n;
}Class;

//初始化班级
//返回值:班级结构体指针
Class *initClass()
{
    //动态分配空间
    Class *pc=(Class *)malloc(sizeof(Class));
    if(pc)
    {
        //初始化教师信息
        printf("请输入教师信息(工号,姓名):");
        se);
        
        //初始化学生信息 canf("%d,%s",&(pc->tea).tno,(pc->tea).tnam
        pc->n=0;
        for(int i=0;i<MAXSIZE;i++)
            pc->stu[i]=NULL;
    }   
   
    return pc;
}

//打印教师信息
//参数ps:教师指针
void printTeacher(Teacher *pt)
{
    printf("%d\t%s",pt->tno,pt->tname);   
    printf("\n");
}  

//打印学生信息
//参数ps:学生指针
void printStudent(Student *ps)
{
    printf("%d\t%s\t%d",ps->sno,ps->sname,ps->grade);   
    printf("\n");
}

//打印班级信息
//参数pc:班级指针
void printClass(Class *pc)
{
    //打印教师信息   
    printf("教师信息(工号\t姓名):");
    printTeacher(&pc->tea);
   
    //打印学生信息
    printf("学生信息(学号\t姓名\t专业):\n");
    for(int i=0;i<pc->n;i++)
        printStudent(pc->stu[i]);
        
    printf("\n");
}

//插入学生
//参数pc:班级指针,参数stu:学生指针
//返回值:1:成功,0:失败(空间满)
int inserStu(Class *pc,Student *stu)
{
    if(pc->n==MAXSIZE)
        return 0;
    else
    {
        pc->stu[pc->n]=stu;
        pc->n++;
        return 1;
    }
}

//查找学生
//参数pc:班级指针,参数stu:学生指针(学号为查找值)
//返回值:>=0,成功,代表在其中的索引位置:-1:失败(没有找到)
int searchStu(Class *pc,Student *stu)
{     


   
   
    return 0;
}

 
int deleteStu(Class *pc,Student *stu)
{
   
    return 0;
}

//插入学生
//参数pc:班级指针
void Insert(Class *pc)
{
    int no,grade;
    char name[MAXSIZE];
   
    //输入待插入学生的信息
    printf("请输入要插入学生的学号:");   
    scanf("%d",&no);
    printf("请输入要插入学生的姓名:");   
    scanf("%s",name);
    printf("请输入要插入学生的成绩:");   
    scanf("%d",&grade);
   
    //构造待插入学生的指针   
    Student *stu=(Student *)malloc(sizeof(Student));
    stu->sno=no;
    strcpy(stu->sname,name);
    stu->grade=grade;
   
    //插入操作
    int ret=inserStu(pc,stu);
   
    //输出插入结果
    if(ret)
        printf("插入成功\n");
    else
        printf("空间满,插入失败\n");
}

void Search(Class *pc)
{   
    int no;   
    //输入要查找学生的学号
    printf("请输入要插入学生的学号:");   
    scanf("%d",&no);
   
    Student stu;
    stu.sno=no;
   
    int ret=searchStu(pc,&stu);
    //输出插入结果
    if(ret==-1)
        printf("没有找到\n");
    else
    {
        printf("学生信息如下:\n");
        printStudent(pc->stu[ret]);
    }

}

void Delete(Class *pc)
{
        
}

//释放指针(*pc)指向的空间,同时将(*pc)值置为空
void destroy(Class **pc)
{   
    if((*pc)!=NULL)
    {
        if((*pc)->n>0)
        {
            for(int i=0;i<(*pc)->n;i++)
            {
                free((*pc)->stu[i]);
                (*pc)->stu[i]=NULL;
            }
        }
        
        free((*pc));
        (*pc)=NULL;   
    }
}

void printChoice()
{
    printf("\n请选择功能:\n");
    printf("\t1.打印班级信息\n");
    printf("\t2.查找学生\n");
    printf("\t3.插入学生\n");
    printf("\t4.删除学生\n");
    printf("\t5.退出程序\n");
    printf("请选择:");
}


int main()
{
    Class *pc=initClass();
    if(!pc)
    {
        printf("空间分配失败");
        return 0;
    }
   
    int choice=-1;   
    while(1)
    {
        printChoice();
        scanf("%d",&choice);
        
        switch(choice)
        {
            case 1:
                   printClass(pc);
                   break;
            case 2:
                   Search(pc);
                   break;
            case 3:
                     Insert(pc);
                   break;
            case 4:
                     Delete(pc);
                      break;
            case 5:
                   destroy(&pc);
                   return 0;
            default:
                   printf("输入错误");
                      break;
        }
    }
}
搜索更多相关主题的帖子: 学生 int stu pc printf 
2018-03-10 09:52
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:20 
#define MAXSIZE 5
char tname[MAXSIZE];
名字最长才4个节?
2018-03-10 10:29
shangguan199
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-3-10
收藏
得分:0 
急求帮助
2018-03-10 12:07
shangguan199
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-3-10
收藏
得分:0 
回复 2楼 吹水佬
这个不是最主要的,关键是填充代码
2018-03-10 12:58
快速回复:c语言复习题求帮助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018816 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved