数据结构课程设计——学生成绩管理系统报告书

时间:2024.4.20

课程设计报告书

    设计名称:   数据结构(C++版)     

        目:   学生成绩管理系统      

    学生姓名:        XXX           

        业:    计算机科学与技术     

        别:     计科本XXX         

        号:     XXXXXX            

    指导老师:       XXX            

        期:  20##  年  7    12   

一.问题描述:

设计目的:

1.掌握线性链表的建立。

2.掌握线性链表的基本操作。

3.掌握查找的基本算法。

设计内容:

利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、退出,并能在屏幕上输出操作前后的结果。

二.基本要求

1.写出系统需求分析,并建模。

2.编程实现,界面友好。

3.输出操作前后的结果。

三.工具/准备工作

在此次课程设计中,我们用到了Microsoft Visual C++ V6.0,所以在开始课程设计前我们首先要安装好这个软件。此外,在开始编程之前要做好相应的系统构思,以及想好实现相应的功能的算法。

四.分析与实现

1.系统功能分析

本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:

(0)创建学生成绩信息:输入学生的信息。

(1)查找学生成绩信息:按学号、姓名查找。

(2)修改学生成绩信息:找到要修改的学号,修改相应信息。

(3)追加学生成绩信息:找到要追加的学生成绩的学号,对相应科目的成绩进行追加。

(4)显示学生成绩信息:显示全部学生的成绩信息

(5)插入学生成绩信息:插入一个新的学生。

(6)删除学生成绩信息;按学号、姓名删除。目或者总分排序。

2.系统模块结构图

3.模块分析:

3.1系统首页:

功能介绍:输入相应功能序号即可进行相应的功能操作。

                                   图1.系统首页

相应的代码:

#include<stdio.h>

#include<stdlib.h>

#include<iostream>

using namespace std;

#define MAX 100

typedef struct student{

    int num;

    char name[20];

    int english;

    int chinese;

    int math;

    int total;

    int length;

struct student *next ;

}s,*LinkList;

int main()

{   cout<<"\t\t\t         欢迎登录学生成绩管理系统!"<<endl;

    cout<<"\t\t\t+------------------------------------------+"<<endl;

    cout<<"\t\t\t|序号 |请选择相应的操作功能的序号:        |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  0  |请输入学生的相关信息与成绩:        |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  1  |按学生学号查询学生成绩:            |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  2  |按学生姓名查询学生成绩:            |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  3  |追加学生的成绩信息:                |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  4  |显示全部学生的信息:                |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  5  |插入学生信息:                      |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  6  |修改学生信息:                      |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    cout<<"\t\t\t|  7  |删除学生信息:                      |"<<endl;

    cout<<"\t\t\t+-----+------------------------------------+"<<endl;

    int flag=1,flag1=1;

    LinkList l;

    l=(LinkList)malloc(sizeof(student));

    l->next=NULL;

    char ch,ch2;

    while(flag){

    cout<<"请输入你要进行的操作数:"<<endl;

         cin>>ch;

       while(ch>'7'||ch<'0')

       {

           cout<<"输入有误,请重新输入"<<endl;

       cin>>ch;

       }

      

   

           switch(ch)

           {

           case '0':{input(l);cout<<"学生的基本信息存储成功"<<endl;}break;

           case '1':{check(l);}break;

           case '2':check_name(l);break;

           case '3':add(l);break;

           case '4':output(l);break;

           case '5':insert_stu(l);break;

           case '6':xiugai(l);break;

           case '7':Delete_stu(l);break;

           }

      

       cout<<"你要继续操作还是退出(y/n)"<<endl;

       cin>>ch2;

   

       while(flag1)

       {  

       if((ch2=='Y')||(ch2=='y'))

       {

           flag=1;

           flag1=0;

       }

       else  if((ch2=='N')||(ch2=='n'))

       {

              //flag=0;

              //flag1=0;

       }

       else {

       flag1=1;  

       cout<<"输入有误,请重新输入(y/n)(y:继续)(n:退出)!"<<endl;

       cin>>ch2;

       }

       }

    }

return 0;

}

3.2输入学生信息

功能介绍:输入0,选择进入输入学生信息功能中,输入想输入的学生信息个数,并输入相应的学生信息。

                                  图2.输入信息

相关代码:

int InitLink(LinkList &L)//输入学生信息

{

    L=(LinkList)malloc(sizeof(struct student));

    L->next=NULL;

    return 0;

}

int input(LinkList &L)

{

    int i, n;

    L->next=NULL;

    LinkList p;

    LinkList q;

    cout<<"请输入学生人数:"<<endl;

    cin>>n;

    L->length=n;

       cout<<"请输入学生的基本信息:"<<endl;

    for(i=0;i<L->length;i++)

    {

       p = (LinkList)malloc(sizeof(student));

      

cout<<"学号:";

       cin>>p->num;

       cout<<endl;

cout<<"姓名:";

       cin>>p->name;

       cout<<endl;

cout<<"英语:";

       cin>>p->english;

       cout<<endl;

cout<<"语文:";

       cin>>p->chinese;

       cout<<endl;

cout<<"数学:";

       cin>>p->math;

       cout<<endl;

    p->total=p->english+p->chinese+p->math;

cout<<"+----------------------------------------------+"<<endl;

cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;    

cout<<p->num<<"     "<<p->name<<"     "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"      "<<p->total<<endl;

cout<<"+----------------------------------------------+"<<endl;   

       if (L->next == NULL)

       {

           L->next = p;

           p->next = NULL;

           q = p;

       }

       else

       {

           p->next = NULL;

           q->next = p;

           q = p;

       }

       //L=L->next;

    }

    return 0;

}

3.3显示学生全部信息

功能简介:显示连表中的全部学生信息。

                                  图3.显示全部信息

相关代码:

int output(LinkList &L)//显示全部信息

{

    LinkList p = L->next;

    if(L->next==NULL)

       cout<<"链表中没有学生信息,请先输入学生信息!"<<endl;

    else{

cout<<"+----------------------------------------------+"<<endl;

cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

    while(p)

    {

      

    cout<<p->num<<"     "<<p->name<<"        "<<p->english<<"       "<<p->chinese<<"        "<<p->math<<"       "<<p->total<<endl;

    p=p->next;

          

    }

    cout<<"+----------------------------------------------+"<<endl;   

    }

    return 0;

}

int check(LinkList &L)

{

    int n;

    LinkList p=L->next;

    if(p==NULL)

    {

    cout<<"链表中没有学生信息,请先输入学生信息!"<<endl;

    }

    else {

           cout<<"请输入你要查找的同学的学号:"<<endl;

         cin>>n;

       while(p&&p->num!=n)

       {

           p=p->next;

       }

       if(!p)

           cout<<"链表中没有学号为:"<<n<<"的同学信息!"<<endl;

       else {

           cout<<"学号为:"<<n<<"的同学信息如下:"<<endl;

           cout<<"+----------------------------------------------+"<<endl;

           cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

           cout<<p->num<<"      "<<p->name<<"      "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"       "<<p->total<<endl;

           cout<<"+----------------------------------------------+"<<endl;

       }

    }

    return 0;

}

int check_name(LinkList &L)

{

    char name[20];   

    LinkList p=L->next;

    if(p==NULL)

    {

    cout<<"链表中没有学生信息,请先输入学生信息!"<<endl;

    }

    else {

           cout<<"请输入你要查找的同学的姓名:"<<endl;

         cin>>name;

       while(p&&strcmp(p->name,name))    //strcmp(p->name,name)如果p->name=name,则比较的函数值为0

       {

           p=p->next;

      

       }

      

       if(!p)

           cout<<"链表中没有姓名为:name"<<name<<":的同学信息!"<<endl;

       else {

           cout<<"姓名为:name="<<name<<":的同学信息如下:"<<endl;

       cout<<"+----------------------------------------------+"<<endl;

       cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

       cout<<p->num<<"      "<<p->name<<"      "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"       "<<p->total<<endl;

       cout<<"+----------------------------------------------+"<<endl;

       }

    }

    return 0;

3.4学生成绩追加

功能介绍:追加相应学生的相应成绩。

相关代码:

int add(LinkList &L)//追加学生信息

{

int n,i,j,k; 

    LinkList p=L->next;

    if(p==NULL)

    {

    cout<<"链表中没有学生信息,请先输入学生信息!"<<endl;

    }

    else {

           cout<<"请输入你要追加的同学成绩的学号:"<<endl;

         cin>>n;

       while(p&&p->num!=n)

       {

           p=p->next;

       }

       if(!p)

           cout<<"链表中没有学号为:"<<n<<"的同学信息!"<<endl;

       else {

cout<<"请输入要追加的成绩:(相应的追加分数分别为英语i,语文j,数学k,若是不追加,请输入0.)"<<endl;

cout<<"i=";cin>>i;cout<<endl;

cout<<"j=";cin>>j;cout<<endl;

cout<<"k=";cin>>k;cout<<endl;

 p->english +=i;

 p->chinese +=j;

p->math +=k;

       cout<<"学号为:"<<n<<"的同学信息如下:"<<endl;

       cout<<"+----------------------------------------------+"<<endl;

       cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

       cout<<p->num<<"      "<<p->name<<"      "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"       "<<p->total<<endl;

        cout<<"+----------------------------------------------+"<<endl;

       }

    }

return 0;

}

3.5修改学生信息

功能介绍:修改相应学号学生信息。

相关代码:

int xiugai(LinkList &L)//修改学生信息

{

int n;

char x;

    LinkList p=L->next;

    if(p==NULL)

    {

    cout<<"链表中没有学生信息,请先输入学生信息!"<<endl;

    }

    else {

           cout<<"请输入你要修改的同学成绩的学号:"<<endl;

         cin>>n;

       while(p&&p->num!=n)

       {

           p=p->next;

       }

       if(!p)

           cout<<"链表中没有学号为:"<<n<<"的同学信息!"<<endl;

       else {

cout<<"+----------------------------------------------+"<<endl;

cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

cout<<p->num<<"      "<<p->name<<"      "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"       "<<p->total<<endl;

cout<<"+----------------------------------------------+"<<endl;

cout<<"是否要修改学号为"<<n<<"的同学的信息?(y/n)"<<endl;

cin>>x;

if((x=='Y')||(x=='y'))

{

cout<<"姓名修改为:";

cin>>p->name;

cout<<endl;

cout<<"英语成绩修改为:";

cin>>p->english;

cout<<endl;

cout<<"语文成绩修改为:";

cin>>p->chinese;

cout<<endl;

cout<<"数学成绩修改为:";

cin>>p->math;

cout<<endl;

p->total=p->english+p->chinese+p->math;

cout<<"学号为"<<n<<"的同学修改后的信息为:"<<endl;

cout<<"+----------------------------------------------+"<<endl;

cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

cout<<p->num<<"      "<<p->name<<"      "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"       "<<p->total<<endl;

cout<<"+----------------------------------------------+"<<endl;   

}

}

}

return 0;

}

3.6插入学生信息

功能介绍:在链表的第i个节点插入学生信息。

相关代码:

int insert_stu(LinkList &L)//插入学生信息

{

    LinkList p,s=L;

    int j,i,flag=1;

if(s->next==NULL)

    {

    cout<<"链表中没有学生信息,请先输入学生信息!"<<endl;

    }

else{

cout<<"请输入你要在链表第i个位置中插入学生信息的i值:"<<endl;

while(flag){

    j=0;

cin>>i;   

p=L;

while(p&&j<i-1)

{

    p=p->next;

    ++j;

}

if(!p||j>i-1)

{

    cout<<"输入i值小于1或者大于表长+1,请重新输入!"<<endl;

    flag=1;

}

else flag=0;

}

    s=(LinkList)malloc(sizeof(student));

    cout<<"请输入学生的基本信息:"<<endl;

cout<<"学号:";

cin>>p->num;

cout<<endl;

cout<<"姓名:";

cin>>p->name;

cout<<endl;

cout<<"英语:";

cin>>p->english;

cout<<endl;

cout<<"语文:";

cin>>p->chinese;

cout<<endl;

cout<<"数学:";

cin>>p->math;

cout<<endl;

p->total=p->english+p->chinese+p->math;

cout<<"插入的学生信息为:"<<endl;

    cout<<"+----------------------------------------------+"<<endl;

    cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

    cout<<p->num<<"      "<<p->name<<"      "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"       "<<p->total<<endl;

    cout<<"+----------------------------------------------+"<<endl;

    s->next=p->next;

           p->next=s;

}

return 0;

}

3.7删除学生信息

功能介绍:删除某个学生的信息。

相关代码:

int Delete_stu(LinkList &L)//删除学生信息

{int n;

char x;   

    LinkList q=L,p=L->next;

    if(p==NULL)

    {

    cout<<"链表中没有学生信息,请先输入学生信息!"<<endl;

    }

    else {

           cout<<"请输入你要查找的同学的学号:"<<endl;

         cin>>n;

       while(p&&p->num!=n)

       {q=p;

           p=p->next;

       }

       if(!p)

           cout<<"链表中没有学号为:"<<n<<"的同学信息!"<<endl;

       else {

           cout<<"学号为:"<<n<<"的同学信息如下:"<<endl;

           cout<<"+----------------------------------------------+"<<endl;

           cout<<"学号:   姓名:   英语:   语文:   数学:   总成绩:"<<endl;

           cout<<p->num<<"      "<<p->name<<"      "<<p->english<<"     "<<p->chinese<<"      "<<p->math<<"       "<<p->total<<endl;

            cout<<"+----------------------------------------------+"<<endl;

           cout<<"是否要删除该同学信息?(y/n)"<<endl;

    cin>>x;

if((x=='Y')||(x=='y'))

{

p=p->next;

q->next=p;

cout<<"该学生信息已删除!"<<endl;        

       }

      

       }

    }

return 0;    

}

五.测试与结论

1.系统测试结果如下:

1.1系统首页:

功能介绍:输入相应功能序号即可进行相应的功能操作。

                              图1.2系统首页

1.2输入学生信息

功能介绍:输入0,选择进入输入学生信息功能中,输入想输入的学生信息个数,并输入相应的学生信息。

                      图2.2输入学生信息                             

1.3显示学生全部信息

功能简介:显示连表中的全部学生信息。

                        图3.2显示全部信息

1.4追加学生信息

                        图4.2追加学生信息

1.5修改学生信息

功能介绍:修改相应学号学生信息。

                         图5.2修改学生信息

1.6插入学生信息

功能介绍:在链表的第i个节点插入学生信息。

相关代码:

                      图6.2插入学生信息

1.7删除学生信息

功能介绍:删除某个学生的信息。

                       图7.2删除学生信息

2.结论

本课程设计学生成绩管理系统从最后的测试结果来看,基本上实现了成绩管理系统的几大功能:成绩信息输入、成绩信息显示等。并达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。

本系统经过测试,证明其运行是稳定、可靠的。但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善。

六.课程设计总结

此次数据结构课程设计,从编辑程序到测试,从理论到实践,我学到了很多很多的的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,但经过老师的耐心指导和我自己的努力,问题都一一解决了!此外在设计的过程中还发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,对数据结构有了深入的认识和理解,把以前所学过的知识都重新温故了一遍。

更多相关推荐:
学生成绩管理系统设计报告

电子信息科学与技术专业课程设计题单班级_***_学生***课程名称专业课程设计_课题密码锁的设计设计要求利用visualc#作为前台开发工具,SQLServer后台数据库管理,实现一学生成绩管理系统。实现具体功…

java学生成绩管理系统课程设计报告

山东交通学院java语言课程设计题目学生成绩管理系统系部信息科学与电气工程学院专业信息管理及信息系统班级信管111姓名田忠平学号110813125指导教师庞希雨时间20xx年4月1日至4月14日共2周指导教师签...

java学生成绩管理系统课程设计报告以及代码共享

java学生成绩管理系统课程设计报告以及代码共享Java语言课程期末作业题目第9题学生成绩管理系统学院计算机学院专业计算机科学与技术班别学号姓名20xx年12月7日一课程题目设计一个简易的学生成绩管理系统用于记...

C#学生成绩管理系统课程设计报告

目录摘要1第一章绪论错误未定义书签11设计目的错误未定义书签12开发工具选择错误未定义书签13开发环境错误未定义书签14本报告的主要内容错误未定义书签第二章需求分析错误未定义书签21系统需求简介2211系统目标...

C语言学生成绩管理系统课程设计报告

C语言课程设计报告一问题描述题目七学生成绩管理系统设计学生成绩信息包括学期学号班别姓名四门课程成绩语文数学英语和计算机等主要功能1能按学期按班级完成对学生成绩的录入修改2能按班级统计学生的成绩求学生的总分及平均...

数据库课程设计报告学生成绩管理系统

数据库原理及应用课程设计报告目录1引言111课程设计选题112课程设计的目的113课程设计的背景12系统分析与设计221功能及性能分析2211功能需求222系统的开发运行环境223系统总体设计23数据库设计33...

C++学生成绩管理系统课程设计报告

C课程设计报告书题目学生成绩管理系统专业信息与计算科学班级020xx03学号020xx0306姓名张亚炬任课老师文军学生成绩管理系统课程设计报告摘要本系统主要用于对学生的成绩进行管理通过本系统可以将各个学生的成...

C#学生成绩管理系统课程设计报告

C课程设计报告20xx年1月1日目录第一章绪论111设计目的112开发工具选择113开发环境114本报告的主要内容1第二章需求分析221系统需求简介2211系统目标2212功能需求分析2213性能需求分析2第三...

Java课程设计报告学生成绩管理系统

中南民族大学管理学院学生课程设计报告课程名称Java语言课程设计题目学生成绩管理系统年级20xx专业信息管理与信息系统学号姓名SPLJH指导教师张晴完成地点管理学院综合实验室完成日期目录1题目描述和分析12问题...

C_学生成绩管理系统课程设计报告[1]

C程序设计课程设计报告20xx20xx学年第2学期题目专业计算机应用班级11计应姓名学号指导教师成绩20xx年12月17日目录摘要1第一章绪论211设计目的212开发工具选择213开发环境214本报告的主要内容...

学生成绩管理系统设计报告

南昌航空大学计算机课程设计测试与光电工程学院课程设计任务书系班学号课题名称学生成绩管理系统的设计课题要求使用C语言设计学生成绩管理系统设计的编程学生成绩信息包括学期学号班级姓名四门课程成绩语文数学英语电路等主要...

C语言课程设计报告 学生成绩管理系统

C语言课程设计报告题目学生成绩管理系统学院计算机与信息工程学院专业信息管理与信息系统班级09级1班学号094631105姓名阿布都许克尔尔肯指导老师达新民成绩20xx年5月18日C语言程序设计课程设计报告一课程...

学生成绩管理系统课程设计报告(29篇)