线性表---学生成绩管理--数据结构课程设计

数据结构课程设计

题目:线性表---学生成绩管理

 

一、课程设计内容

设计一个学生成绩管理程序(如上图所示),它具有下列功能:

1.      初始化功能;void Initial( List *lst )

2.      建表功能;void CreateList( List *lst,int maxsize )

3.      学生成绩记录录入功能;BOOL Append ( List  *lst , T  x )

4.      学生成绩记录显示功能;void Show(List lst)

5.      学生成绩记录插入功能;BOOL Insert( List  *lst , int  pos, T x )

6.      学生成绩记录删除功能;BOOL Remove( List  *lst, int  pos, T *x)

7.      修改记录功能;BOOL Replace( List  *lst, int pos, T  x)

8.      学生记录查找功能(按序号查找)void Find(List *lst,int pos)

9.      学生记录查找功能(按值查找)void Locate(List *lst,T  x)

程序包括简单的错误检查功能。

二、课程设计要求

(一)要求完成如下数据测试,每个部分要求给出测试截屏

1.        学生成绩记录录入功能; [测试:录入成绩表中的第2条林悦和第4条张可可的记录]

2.        学生成绩记录显示功能; [测试:显示数据表中的全部记录]

3.        学生成绩记录插入功能; [测试:在第2条记录后面插入陈菁菁的记录,并显示]

4.        录入王小红的记录;     [测试:录入后显示录入后状态]

5.        录入自己名字命名的记录;[测试:录入后显示录入后状态]

6.        显示已经录入的所有记录;

7.        学生成绩记录删除功能; [测试:删除张可可的记录并显示删除后状态]

8.        修改记录功能;              [测试:将林悦的成绩改为92分,并显示修改之前和修改后的记录]

9.        学生记录查找功能(按序号查找)[测试:实现按序号查找的功能,输入3显示第一条记录]

10.    学生记录查找功能(按值查找) [测试:实现按性别查找的功能,输出所有女生的记录]

(二)将课程设计的全部代码存入电子实验报告单

三、测试数据举例:

 

 


 

《数据结构》课程设计

题目:线性表---学生成绩管理

学生姓名:          班级:           学号:

一、  课程设计代码

#include 
#include 

#define TRUE 1
#define FALSE 0

typedef int BOOL;
typedef struct T{
    char cNum[20];
    char cName[20];
    char cSex[3];
    float fScore;
}T;
typedef struct List{
    T   *data;
    int length;
    int listsize;
}List;

void Initial( List *lst );
void CreateList( List *lst,int maxsize );
BOOL  Append ( List  *lst , T  x );
void Show(List  lst);
BOOL  Insert( List  *lst , int  pos, T  x );
BOOL  Remove( List  *lst, int  pos, T *x);
BOOL  Replace( List  *lst, int pos, T  x);
void Find(List *lst,int pos);
void Locate(List *lst,T  x);
int ShowMenu();
void InputT(T *ret);

int main()
{
    List lst;
    T tmp;
    int pos,select;
    char cAppend;
    Initial(&lst);
    do{
        select=ShowMenu();
        switch(select){
            case 1:
                cAppend='y';
                do{
                    if(cAppend=='y'){
                        InputT(&tmp);
                        Append(&lst,tmp);
                    }
                    if(cAppend!='\n')printf("是否继续?(y/n)");
                    scanf("%c",&cAppend);
                }while(cAppend!='n');
                break;
            case 2:
                Show(lst);
                break;
            case 3:
                printf("您要在哪个位置插入记录:");scanf("%d",&pos);
                InputT(&tmp);
                Insert(&lst,pos,tmp);
                break;
            case 4:
                printf("您要删除哪个记录:");scanf("%d",&pos);
                Remove(&lst,pos,&tmp);
                break;
            case 5:
                printf("您要修改哪个记录:");scanf("%d",&pos);
                InputT(&tmp);
                Replace(&lst,pos,tmp);
                break;
            case 6:
                printf("您要在查找哪个记录:");scanf("%d",&pos);
                Find(&lst,pos);
                break;
            case 7:
                printf("(输入“.”/-1表示不确定)");
                InputT(&tmp);
                Locate(&lst,tmp);
                break;
        }
    }while(select!=0);
    return 0;
}

int ShowMenu(){
    int ret=0;
    do{
    printf("请输入功能代码:\n");
    printf("1-追加  2-显示  3-插入  4-删除  5-修改  6-查找(按序号)  7-查找(按值)  0-退出\n");
    scanf("%d",&ret);
    }while( ret<0 && ret>7 );
    return ret;
}

void InputT(T *ret){
    printf("请输入学生信息:\n");
    printf("学号:");  scanf("%s",ret->cNum);
    printf("姓名:");  scanf("%s",ret->cName);
    printf("性别:");  scanf("%s",ret->cSex);
    printf("分数:");  scanf("%f",&ret->fScore);
    printf("输入完成\n");
}


void Initial( List *lst ){
    CreateList(lst,100);
}

void CreateList( List *lst,int maxsize ){
    lst->data=(T*)malloc(maxsize * sizeof(T));
    if(lst->data==NULL){
        printf("申请内存空间失败\n");
        system("pause");
        exit(0);
    }
    lst->length=0;
    lst->listsize=maxsize;
    return;
}
BOOL  Append ( List  *lst , T  x ){
    if(lst->length==lst->listsize){
        printf("达到链表最大值\n");
        system("pause");
        exit(0);
        return FALSE;
    }
    lst->data[lst->length]=x;
    (lst->length)++;
    return TRUE;
}

void Show(List lst){
    int i;
    printf("显示信息:\n");
    for(i=0;ilength==lst->listsize){
        printf("达到链表最大值\n");
        system("pause");
        exit(0);
        return FALSE;
    }
    if(pos<0||pos>lst->length){
        printf("位置输入错误\n");
        return FALSE;
    }
    for(i=lst->length-1;i>=pos;i--){
        lst->data[i+1]=lst->data[i];
    }
    lst->data[pos]=x;
    (lst->length)++;
    return TRUE;
}

BOOL  Remove( List  *lst, int  pos, T *x){
    int i;
    *x=lst->data[pos];
    if(pos<0||pos>=lst->length){
        printf("位置输入错误\n");
        return FALSE;
    }
    for(i=pos+1;ilength;i++){
        lst->data[i-1]=lst->data[i];
    }
    (lst->length)--;
    return TRUE;
}

BOOL  Replace( List  *lst, int pos, T  x){
    if(pos<0||pos>=lst->length){
        printf("位置输入错误\n");
        return FALSE;
    }
    lst->data[pos]=x;
    return TRUE;
}

void Find(List *lst,int pos){
    if(pos<0||pos>=lst->length){
        printf("位置输入错误\n");
    }
    printf("查询结果:\n");
    printf("_________________________________________________________\n");
    printf("%-14s%-10s%-5s%-10f\n",lst->data[pos].cNum,lst->data[pos].cName,lst->data[pos].cSex,lst->data[pos].fScore);
    return;
}
void Locate(List *lst,T  x){
    int i;
    printf("查询结果:\n");
    for(i=0;ilength;i++){
        if(  (x.cNum[0] !='.' && strcmp(lst->data[i].cNum  , x.cNum  )==0 )
           ||(x.cName[0]!='.' && strcmp(lst->data[i].cName , x.cName )==0 )
           ||(x.cSex[0] !='.' && strcmp(lst->data[i].cSex  , x.cSex  )==0 )
           ||(x.fScore>=0 && lst->data[i].fScore == x.fScore ) ){
        printf("_________________________________________________________\n");
        printf("%-14s%-10s%-5s%-10f\n",lst->data[i].cNum,lst->data[i].cName,lst->data[i].cSex,lst->data[i].fScore);
        }
    }
    return;
}

二、  课程设计测试截屏

1. 学生成绩记录录入功能; [测试:录入成绩表中的第2条林悦和第4条张可可的记录]


2. 学生成绩记录显示功能; [测试:显示数据表中的全部记录]


3. 学生成绩记录插入功能; [测试:在第2条记录后面插入陈菁菁的记录,并显示]

4. 录入王小红的记录;     [测试:录入后显示录入后状态]

5. 录入自己名字命名的记录;[测试:录入后显示录入后状态]

6. 显示已经录入的所有记录;

7. 学生成绩记录删除功能; [测试:删除张可可的记录并显示删除后状态]

8. 修改记录功能;              [测试:将林悦的成绩改为92分,并显示修改之前和修改后的记录]

9. 学生记录查找功能(按序号查找)[测试:实现按序号查找的功能,输入3显示第一条记录]

10.           学生记录查找功能(按值查找) [测试:实现按性别查找的功能,输出所有女生的记录]

 

 

 

你可能感兴趣的:(数据结构)