当前位置:编程学习 > C/C++ >>

我的C/C++之路-010课(结构体使用的简单实例(学生成绩管理))

最近比较忙,几天没写了。今天做的是结构体的应用(学生的成绩管理),相信很多朋友都做过,我这里献丑下,C比较难控制,所以在里面有很多不是很好的功能,大家可以自己完善下。

 

[cpp]
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
/**
    结构体使用的简单实例:
    1.创建学生成绩结构体(包含学号,姓名,语文,数学,英语成绩)
    使用链表指向下一个学生(由于输入学生个数未知,使用数组方式不怎么好)
 
    2.提供学生成绩插入,查询,更改,删除
*/ 
typedef struct Student 

    char no[4];//3位数的学号,输入多的会出错 
    char name[10]; 
    int chinese; 
    int math; 
    int english; 
    struct Student *next;//指向下一个学生 
 
}StudentList; 
void init(StudentList *&); 
void select(StudentList *);    //查询成绩 
void insert(StudentList *&);   //录入成绩 
void update(StudentList *&);   //更新成绩 
void deleteData(StudentList *);//删除数据 
 
void studentScoreManege() 

    StudentList *stuList = NULL; 
    int oprate; 
    init(stuList);//初始化 
    do{ 
        system("cls"); 
        fflush(stdin); 
        puts("************* Student Data Oprate *******************"); 
        puts("*    1. select student score                        *"); 
        puts("*    2. insert student score                        *"); 
        puts("*    3. update student score                        *"); 
        puts("*    4. delete student data                         *");//删除全部数据,虽然实际不能这样做,这里为了简便设计 
        puts("*    0. exit                                        *"); 
        puts("*****************************************************"); 
        printf("please select a number: "); 
         
        scanf("%d",&oprate); 
        switch(oprate)//根据不同选择执行不同操作 
        { 
        case 1: 
            select(stuList); 
            break; 
        case 2: 
            insert(stuList); 
            break; 
        case 3: 
            update(stuList); 
            break; 
        case 4: 
            deleteData(stuList); 
            break; 
        case 0: 
        default: 
            break; 
        } 
    }while(oprate!=0); 

//初始化表头 
void init(StudentList *&stuList) 

    stuList = (StudentList *)malloc(sizeof(StudentList)); 
    stuList->next = NULL; 

 
//查询成绩 
void select(StudentList *stuList) 

    StudentList *p = stuList->next; 
    if(p==NULL) 
    { 
        puts("there is no data,please insert!!"); 
        puts("press any key to return!!!"); 
        getchar(); 
    } 
    puts("**************  student score insert *********************"); 
    puts("No\tName\tChinese\tMath\tEnglish"); 
    while(p!=NULL) 
    { 
        printf("%s\t%s\t%d\t%d\t%d\n",p->no,p->name,p->chinese,p->math,p->english); 
        p = p->next; 
    } 
    fflush(stdin); 
    puts("press any key to return!!!"); 
    getchar(); 

//录入成绩 www.zzzyk.com  
void insert(StudentList *&stuList) 

    StudentList *p ,*s; 
    p = stuList; 
    while(p->next != NULL) 
    { 
            p = p->next; 
    } 
    do{ 
        s = (StudentList *)malloc(sizeof(StudentList)); 
         
        puts("please insert student data(NO,Name,Chinese,Math,English):"); 
        scanf("%3s%10s",&s->no,&s->name); 
        scanf("%d%d%d",&s->chinese,&s->math,&s->english); 
        //判断数据合法性,关于学号的重复性大家自己写校验 
        if(s->chinese<0||s->chinese>100||s->math<0||s->math>100||s->english<0||s->english>100) 
        { 
   

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,