数据结构课程设计学生成绩管理系统报告书
更新时间: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;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< 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< 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< 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< 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< 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< 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< 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< 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< cout<<"+----------------------------------------------+"< cout<<"是否要删除该同学信息?(y/n)"< 数据结构课程设计学生成绩管理系统报告书 cin>>x; if((x=='Y')||(x=='y')) { p=p->next; q->next=p; cout<<"该学生信息已删除!"<