数据结构课程设计成绩管理系统文档格式.docx
- 文档编号:20269053
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:17
- 大小:18.29KB
数据结构课程设计成绩管理系统文档格式.docx
《数据结构课程设计成绩管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计成绩管理系统文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
修改指定学号学生成绩记录;
6)删除函数删除():
删除指定学号学生记录;
7)输出函数Output():
输出班级所有学生成绩记录;
8)插入函数Insert():
按平均分顺序插入新结点。
9)排序函数Sort():
按平均分对学生成绩记录项进行降序排序;
程序如下:
#include
usingnamespacestd;
structNode//定义链表结点
{
char*class_0;
//班级
intnumber;
char*name;
//姓名
floatelec;
//电子技术成绩
floatc_prog;
//C程序设计成绩
floatmedia;
//多媒体技术成绩
floateng;
//大学英语成绩
floatmath;
//高等数学成绩
floatsport;
//大学体育成绩
floatpolity;
//马克思主义政治经济学成绩
floatave;
//平均成绩
intorder;
//名次
Node*link;
Node(){link=NULL;
}
Node(int_number,char*_class_0,char*_name,float_elec,
float_c_prog,float_media,float_eng,float_math,
float_sport,float_polity,float_ave,int_order,Node*next)
number=_number;
class_0=newchar[21];
strcpy(class_0,_class_0);
name=newchar[9];
strcpy(name,_name);
elec=_elec;
c_prog=_c_prog;
media=_media;
eng=_eng;
math=_math;
sport=_sport;
polity=_polity;
ave=_ave;
order=_order;
link=next;
~Node()
删除[]class_0;
删除[]name;
};
classStudentScore
private:
Node*first;
//链表的头指针
intchoice;
//选择数据的读入方式
intfileNum;
//当前文件数减一
intfileLoc;
//定位当前文件
string*fileName;
intoperChoice;
intRecordLength;
public:
StudentScore();
voidSave();
voidBuildList();
//手工建立成绩链表
voidReadInfo(intk);
//从内存中读入学生信息
voidClearList();
voidStatistic();
voidSort();
voidAdd();
void删除();
voidPrintList();
voidMenu();
StudentScore:
:
StudentScore()
RecordLength=0;
operChoice=0;
first=NULL;
choice=0;
fileLoc=0;
fileNum=0;
fileName=newstring[10];
//最多可以存10个文件
intGetOrder(Node*first,floatave);
voidStudentScore:
BuildList()
int_number;
//学号
char*_class_0=newchar[21];
char*_name=newchar[9];
float_elec;
float_c_prog;
float_media;
float_eng;
float_math;
float_sport;
float_polity;
float_ave;
int_order;
charc;
Node*p,*r=NULL;
cout<
<
"
您要输入学生成绩信息?
while((c=getchar())=='
n'
);
while(tolower(c)!
='
)
cin>
>
_class_0;
_number;
_name;
_elec;
_c_prog;
_media;
_eng;
_math;
_sport;
_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;
//求得平均成绩
_order=GetOrder(first,_ave);
p=newNode(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);
//建立一个新的结点储存信息
if(first!
=NULL)
r->
link=p;
elsefirst=p;
r=p;
RecordLength++;
intGetOrder(Node*first,floatave)//名次记录有严重问题
intorder=1;
Node*temp=first;
for(;
temp;
temp=temp->
link)
{if(temp->
ave>
ave)order++;
if(temp->
aveorder)++;
returnorder;
Statistic()
floata_elec=0.0;
floata_c_prog=0.0;
floata_media=0.0;
floata_eng=0.0;
floata_math=0.0;
floata_sport=0.0;
floata_polity=0.0;
inti=0;
while(temp)
a_elec+=temp->
elec;
a_c_prog+=temp->
c_prog;
a_media+=temp->
media;
a_eng+=temp->
eng;
a_math+=temp->
math;
a_sport+=temp->
sport;
a_polity+=temp->
polity;
i++;
link;
a_elec=a_elec/i;
a_c_prog=a_c_prog/i;
a_media=a_media/i;
a_eng=a_eng/i;
a_math=a_math/i;
a_sport=a_sport/i;
a_polity=a_polity/i;
电子技术平均成绩为:
cout<
c程序设计平均成绩为:
多媒体技术平均成绩为:
英语平均成绩为:
高等数学平均成绩为:
体育平均成绩为:
政治平均成绩为:
删除()
intstudNum;
Node*p;
请输入要删除的学生学号"
cin>
studNum;
floataverage;
number;
number==studNum)
average=temp->
ave;
if(temp==first)//说明是第一次
first=first->
删除temp;
break;
//如果不跳出的话temp=temp->
link会出错
else
p->
link=temp->
p=temp;
RecordLength--;
}
//下面修改学生排名
temp=first;
aveorder--;
Add()
r=first;
while(r->
r=r->
//first=NULL;
//写一个返回排名的程序
Sort()//简单bubble排序从高分到低分排序
Node*before;
//Node*p=first;
temp->
avelink->
ave)
if(temp==first)//说明是第一个结点
{
//p=temp;
//temp=temp->
link->
first->
link=temp;
before=first;
else//不是第一个结点
before->
before=before->
//计算次数
i>
0;
i--)
for(intj=0;
j{
small!
if(temp==first)//说明是第一个结点
/*
boolIsSorted(Node*first)
first;
if(first->
ave)returnfalse;
returntrue;
}*/
PrintList()//打印链表程序
Thelistcontains:
Node*temp=first;
class_0<
"
name<
order<
}
ClearList()//清除链表
Node*p=newNode;
while(first)
p=first->
删除first;
first=p;
//读函数
ReadInfo(intk)//读第k个文件的信息存入链表
//intwordLength;
//记录子段长度
ifstreamInfile(fileName[k].c_str());
if(!
Infile)
fileisnotpresent!
return;
Infile>
RecordLength;
for(inti=0;
i{
//cout<
_ave;
_order;
Save()
stringtempName;
请输入将要保存的文件名:
//要判断是否跟现有文件重名
tempName;
ofstreamsavefile(tempName.c_str());
//要做一个转换
savefile<
for(;
"
number<
elec<
c_prog<
media<
eng<
math<
sport<
polity<
ave<
savefile.close();
//读取文件表信息
ifstreamReadfileinfo("
FileRecord.txt"
Readfileinfo>
fileNum;
for(inti=0;
iReadfileinfo>
fileName[i];
Readfileinfo.close();
fileNum++;
fileName[i]=tempName;
//修改文件表信息
ofstreamchangefile("
changefile<
for(i=0;
ichangefile<
changefile.close();
Menu()
请您选择数据的读入方式:
(1)重新手动建立一份新的数据表"
(2)从文件中读入数据"
请选择:
;
choice;
if(choice==1)
BuildList();
if(choice==2)
当前有如下文件,请选择读入文件:
ifstreamfileRecord("
fileRecord.txt"
fileRecord)
fileRecordisnotpresent!
fileRecord>
当前有"
fileLoc;
ReadInfo(fileLoc-1);
PrintList();
请选择您需要的操作:
(1)统计学生各科成绩"
(2)删除某个学生成绩记录"
(3)增加某个学生成绩记录"
(4)在链表中为所有学生成绩记录排序"
operChoice;
if(operChoice==1)
Statistic();
if(operChoice==2)
删除();
if(operChoice==3)
Add();
if(operChoice==4)
Sort();
Save();
ClearList();
intmain()
//////////////////////////////////"
欢迎使用学生成绩管理系统!
StudentScores;
s.Menu();
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 成绩管理系统