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

更新时间:2023-04-13 04:04:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

课程设计报告书设计名称:数据结构(C++版)

题目:学生成绩管理系统

学生姓名:XXX

专业:计算机科学与技术

班别:计科本XXX班

学号:XXXXXX

指导老师:XXX

日期:2012 年 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

#include

#include

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 欢迎登录学生成绩管理系统!"<

cout<<"\t\t\t+------------------------------------------+"<

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

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

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

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

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

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

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

LinkList l;

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

l->next=NULL;

char ch,ch2;

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

while(flag){

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

cin>>ch;

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

{

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

cin>>ch;

}

switch(ch)

{

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

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)"<

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:退出)!"<

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<<"请输入学生人数:"<

cin>>n;

L->length=n;

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

for(i=0;ilength;i++)

{

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

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

cout<<"学号:";

cin>>p->num;

cout<

cout<<"姓名:";

cin>>p->name;

cout<

cout<<"英语:";

cin>>p->english;

cout<

cout<<"语文:";

cin>>p->chinese;

cout<

cout<<"数学:";

cin>>p->math;

cout<

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

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

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<<"链表中没有学生信息,请先输入学生信息!"<

else{

cout<<"+----------------------------------------------+"<

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

while(p)

{

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

p=p->next;

}

cout<<"+----------------------------------------------+"<

}

return 0;

}

int check(LinkList &L)

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

{

int n;

LinkList p=L->next;

if(p==NULL)

{

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

}

else {

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

cin>>n;

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

{

p=p->next;

}

if(!p)

cout<<"链表中没有学号为:"<

else {

cout<<"学号为:"<

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

}

}

return 0;

}

int check_name(LinkList &L)

{

char name[20];

LinkList p=L->next;

if(p==NULL)

{

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

}

else {

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

cin>>name;

while(p&&strcmp(p->name,name)) //strcmp(p->name,name)如果

p->name=name,则比较的函数值为0

{

p=p->next;

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

}

if(!p)

cout<<"链表中没有姓名为:name"<

else {

cout<<"姓名为:name="<

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

}

}

return 0;

3.4学生成绩追加

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

相关代码:

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

{

int n,i,j,k;

LinkList p=L->next;

if(p==NULL)

{

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

}

else {

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

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

cin>>n;

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

{

p=p->next;

}

if(!p)

cout<<"链表中没有学号为:"<

else {

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

加,请输入0.)"<

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

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

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

p->english +=i;

p->chinese +=j;

p->math +=k;

cout<<"学号为:"<

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

}

}

return 0;

}

3.5修改学生信息

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

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

相关代码:

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

{

int n;

char x;

LinkList p=L->next;

if(p==NULL)

{

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

}

else {

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

cin>>n;

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

{

p=p->next;

}

if(!p)

cout<<"链表中没有学号为:"<

else {

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

cout<<"是否要修改学号为"<

cin>>x;

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

{

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

cin>>p->name;

cout<

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

cin>>p->english;

cout<

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

cin>>p->chinese;

cout<

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

cin>>p->math;

cout<

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

cout<<"学号为"<

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

}

}

}

return 0;

}

3.6插入学生信息

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

相关代码:

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

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

{

LinkList p,s=L;

int j,i,flag=1;

if(s->next==NULL)

{

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

}

else{

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

j=0;

cin>>i;

p=L;

while(p&&j

{

p=p->next;

++j;

}

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

{

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

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

flag=1;

}

else flag=0;

}

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

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

cout<<"学号:";

cin>>p->num;

cout<

cout<<"姓名:";

cin>>p->name;

cout<

cout<<"英语:";

cin>>p->english;

cout<

cout<<"语文:";

cin>>p->chinese;

cout<

cout<<"数学:";

cin>>p->math;

cout<

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

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

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

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<<"链表中没有学生信息,请先输入学生信息!"<

}

else {

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

cin>>n;

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

{q=p;

p=p->next;

}

if(!p)

cout<<"链表中没有学号为:"<

else {

cout<<"学号为:"<

cout<<"+----------------------------------------------+"<

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

cout<num<<" "<name<<" "<english<<" "<chinese<<" "<math<<" "<total<

cout<<"+----------------------------------------------+"<

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

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

cin>>x;

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

{

p=p->next;

q->next=p;

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

}

}

}

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.结论

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

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

六.课程设计总结

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

本文来源:https://www.bwwdw.com/article/9q3l.html

Top