学生成绩管理系统报告书.docx
- 文档编号:10181865
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:28
- 大小:494.33KB
学生成绩管理系统报告书.docx
《学生成绩管理系统报告书.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统报告书.docx(28页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统报告书
课程设计报告书
设计名称:
数据结构(C++版)
题目:
学生成绩管理系统
学生姓名:
XXX
专业:
计算机科学与技术
班别:
计科本XXX班
学号:
XXXXXX
指导老师:
XXX
日期:
2012年7月12日
一.问题描述:
设计目的:
1.掌握线性链表的建立。
2.掌握线性链表的基本操作。
3.掌握查找的基本算法。
设计内容:
利用线性链表实现学生成绩管理系统,具体功能:
输入、输出、插入、删除、查找、追加、读入、显示、退出,并能在屏幕上输出操作前后的结果。
二.基本要求
1.写出系统需求分析,并建模。
2.编程实现,界面友好。
3.输出操作前后的结果。
三.工具/准备工作
在此次课程设计中,我们用到了MicrosoftVisualC++V6.0,所以在开始课程设计前我们首先要安装好这个软件。
此外,在开始编程之前要做好相应的系统构思,以及想好实现相应的功能的算法。
四.分析与实现
1.系统功能分析
本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:
(0)创建学生成绩信息:
输入学生的信息。
(1)查找学生成绩信息:
按学号、姓名查找。
(2)修改学生成绩信息:
找到要修改的学号,修改相应信息。
(3)追加学生成绩信息:
找到要追加的学生成绩的学号,对相应科目的成绩进行追加。
(4)显示学生成绩信息:
显示全部学生的成绩信息
(5)插入学生成绩信息:
插入一个新的学生。
(6)删除学生成绩信息;按学号、姓名删除。
目或者总分排序。
2.系统模块结构图
3.模块分析:
3.1系统首页:
功能介绍:
输入相应功能序号即可进行相应的功能操作。
图1.系统首页
相应的代码:
#include
#include
#include
usingnamespacestd;
#defineMAX100
typedefstructstudent{
intnum;
charname[20];
intenglish;
intchinese;
intmath;
inttotal;
intlength;
structstudent*next;
}s,*LinkList;
intmain()
{cout<<"\t\t\t欢迎登录学生成绩管理系统!
"< cout<<"\t\t\t+------------------------------------------+"< cout<<"\t\t\t|序号|请选择相应的操作功能的序号: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|0|请输入学生的相关信息与成绩: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|1|按学生学号查询学生成绩: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|2|按学生姓名查询学生成绩: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|3|追加学生的成绩信息: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|4|显示全部学生的信息: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|5|插入学生信息: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|6|修改学生信息: |"< cout<<"\t\t\t+-----+------------------------------------+"< cout<<"\t\t\t|7|删除学生信息: |"< cout<<"\t\t\t+-----+------------------------------------+"< intflag=1,flag1=1; LinkListl; l=(LinkList)malloc(sizeof(student)); l->next=NULL; charch,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; } elseif((ch2=='N')||(ch2=='n')) { //flag=0; //flag1=0; } else{ flag1=1; cout<<"输入有误,请重新输入(y/n)(y: 继续)(n: 退出)! "< cin>>ch2; } } } return0; } 3.2输入学生信息 功能介绍: 输入0,选择进入输入学生信息功能中,输入想输入的学生信息个数,并输入相应的学生信息。 图2.输入信息 相关代码: intInitLink(LinkList&L)//输入学生信息 { L=(LinkList)malloc(sizeof(structstudent)); L->next=NULL; return0; } intinput(LinkList&L) { inti,n; L->next=NULL; LinkListp; LinkListq; 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; } return0; } 3.3显示学生全部信息 功能简介: 显示连表中的全部学生信息。 图3.显示全部信息 相关代码: intoutput(LinkList&L)//显示全部信息 { LinkListp=L->next; if(L->next==NULL) cout<<"链表中没有学生信息,请先输入学生信息! "< else{ cout<<"+----------------------------------------------+"< cout<<"学号: 姓名: 英语: 语文: 数学: 总成绩: "< while(p) { cout< p=p->next; } cout<<"+----------------------------------------------+"< } return0; } intcheck(LinkList&L) { intn; LinkListp=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<<"+----------------------------------------------+"< } } return0; } intcheck_name(LinkList&L) { charname[20]; LinkListp=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<<"+----------------------------------------------+"< } } return0; 3.4学生成绩追加 功能介绍: 追加相应学生的相应成绩。 相关代码: intadd(LinkList&L)//追加学生信息 { intn,i,j,k; LinkListp=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<<"+----------------------------------------------+"< } } return0; } 3.5修改学生信息 功能介绍: 修改相应学号学生信息。 相关代码: intxiugai(LinkList&L)//修改学生信息 { intn; charx; LinkListp=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<<"是否要修改学号为"< (y/n)"< 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<<"+----------------------------------------------+"< } } } return0; } 3.6插入学生信息 功能介绍: 在链表的第i个节点插入学生信息。 相关代码: intinsert_stu(LinkList&L)//插入学生信息 { LinkListp,s=L; intj,i,flag=1; if(s->next==NULL) { cout<<"链表中没有学生信息,请先输入学生信息! "< } else{ cout<<"请输入你要在链表第i个位置中插入学生信息的i值: "< while(flag){ j=0; cin>>i; p=L; while(p&&j { p=p->next; ++j; } if(! p||j>i-1) { cout<<"输入i值小于1或者大于表长+1,请重新输入! "< flag=1; } elseflag=0; } s=(LinkList)malloc(sizeof(student)); cout<<"请输入学生的基本信息: "< cout<<"学号: "; cin>>p->num; cout< cout<<"姓名: "; cin>>p->name; cout< cout<<"英语: "; cin>>p->english; cout<