数据结构课程设计数据结构的实现Word文件下载.docx

上传人:b****3 文档编号:7576559 上传时间:2023-05-08 格式:DOCX 页数:23 大小:566.48KB
下载 相关 举报
数据结构课程设计数据结构的实现Word文件下载.docx_第1页
第1页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第2页
第2页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第3页
第3页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第4页
第4页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第5页
第5页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第6页
第6页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第7页
第7页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第8页
第8页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第9页
第9页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第10页
第10页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第11页
第11页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第12页
第12页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第13页
第13页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第14页
第14页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第15页
第15页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第16页
第16页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第17页
第17页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第18页
第18页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第19页
第19页 / 共23页
数据结构课程设计数据结构的实现Word文件下载.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计数据结构的实现Word文件下载.docx

《数据结构课程设计数据结构的实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计数据结构的实现Word文件下载.docx(23页珍藏版)》请在冰点文库上搜索。

数据结构课程设计数据结构的实现Word文件下载.docx

4.成绩信息录入功能:

(成绩信息用文件保存,可以一次完成若干条记录的输入。

5.应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

四、课程设计内容

4.1数据结构设计

4.1.1设计背景

在实际学习生活中,我们需要对获得的信息进行处理和存储,然而处理的元素可以是数据、符号、或者其他的记录,等等这些数据结点都可以用来构成一个线性表。

线性表是由n个相同类型数据元素组成的有限序列。

而有些时候需要把不同类型的数据结点整合在一起,用来描述某些记录。

例如,要记录学生的成绩表需要包括XX、学号以与各科成绩等数据,这其中包含了字符型和整型两种数据类型。

因此,仅用含有一个数组的顺序表没办法具体描述出详细的信息,所以有必要增加顺序表中的成员来达到目的。

✧下面以“学生成绩管理”问题为例建立解决此类问题的数据结构结构体并实现在该数据结构上的基本运算。

4.1.2定义数据结构体

“学生成绩管理”数据结构定义如下:

typedefstructstudent

{

charnumber[10];

charname[20];

floatscore[4];

floatsum;

}STU;

STUstu[N];

这里把这种结构体成为“学生信息”。

其中,数组name[]储存学生XX,数组number[]储存学号,数组score[]储存成绩数据(这里以语文数学英语理综为成绩)。

Sum用于储存总分。

4.1.3存储方式

由于该数据结构结构体中的成员是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。

和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。

在C++的结构体中存储方式是按一种内存对齐的规则来存储的。

对于一个结构体中每次的偏移量是相等的,以结构体所占空间最大的变量类型为一个位访问的单位偏移量,这样对于程序来说加快了访问的速度,当同时也会早造成一些空间的浪费。

一般情况下该结构体的大小可以通过如下方法计算:

(1).分析各个成员长度;

(2).找出最大长度的成员长度M(结构体的长度一定是该成员的整数倍);

(3).并按最大成员长度出现的位置将结构体分为若干部分;

(4).各个部分长度一次相加,求出大于该和的最小M的整数倍即为该部分长度;

(5).将各个部分长度相加之和即为结构体长度

4.1.4数据结构上的基本运算

1.输入函数inputscore()

输入运算实现的是把原始学生数据信息包括学号、XX、各科成绩等输入结构体,并且把信息按照顺序存储结构储存在一片连续的存储单元中。

算法描述如下:

voidinputscore()

inti,j,n;

printf("

请输入学生总数:

\n"

);

scanf("

%d"

&

n);

printf("

提示:

*输入学号时请输入位数为8位的数字*\n"

请输入学生的学号XX语文数学英语理综:

for(i=0;

i<

n;

i++)

%s%s%f%f%f%f"

stu[i].number,stu[i].name,&

stu[i].score[0],&

stu[i].score[1],&

stu[i].score[2],&

stu[i].score[3]);

}

2.插入(添加)函数add()

插入函数实现将某一学生的信息插入到结构体中,即结构体中的成员数组number[],数组name[],score[]元素分别增加1,增加的数值为所添加的新学生的信息。

为了方便,add()函数利用循环功能实现添加多个学生信息,算法描述如下:

voidadd()

inta,i,j;

请输入新增加的学生人数:

a);

n=n+a;

请输入添加的学生的学号XX语文数学英语理综:

for(i=n-a;

i++)

}

3.删除函数delscore()

删除某学生的信息,根据输入的学号,搜索所有学生信息找到该学号的信息并删除,删除的具体操作为结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置,删除该学生信息后学生总数减一。

voiddelscore()

{

inti,j,flog=0;

charm,a[10];

system("

cls"

请输入要删除的学生学号\n"

%s"

a);

if(strcmp(a,stu[i].number)==0)

{

flog=1;

break;

}

if(flog==0)

printf("

未找到该学生信息\n"

else

是否删除该学生成绩(y/n)\n"

m);

if(m=='

y'

{

for(i;

n-1;

stu[i]=stu[i+1];

n=n-1;

删除成绩成功\n"

}

删除成绩失败\n"

4.输出(显示)函数lookscore()

输出所保存的学生信息。

先将信息数据按照某一元素进行排序,这里按照总分从大到小排序并输出所有学生信息。

voidlookscore()

inti,j,k;

STUt;

for(k=i,j=i+1;

j<

j++)

if(stu[j].sum>

stu[k].sum)

k=j;

if(k!

=j)

{

t=stu[k];

stu[k]=stu[i];

stu[i]=t;

}

名次\t学号\t\tXX\t语文\t数学\t英语\t理综\t总分\n"

%d\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n"

i+1,stu[i].number,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum);

5.查询函数searchscore()

根据学号查询学生信息并输出。

voidsearchscore()

chara[10];

请输入需查询的学生学号\n"

printf("

break;

未找到该学生信息!

"

4.2实例应用

4.2.1问题描述

已知某班级学生入学成绩如下表,设计“学生成绩管理系统”使其具有以下功能:

(1) 

能完成对学生成绩的录入 

(2) 

能按班级统计学生的成绩,求学生的总分与平均分,排序 

(3) 

能按班级,学期输出学生的成绩单和不与格科目与学生 

(4) 

能查询单个学生成绩 

(5) 

能修改单个学生信息 

表1某班学生高考入学成绩表

XX

学号

语文

数学

英语

理综

总分

张丰

31260030

131

127

138

252

648

李民

31260031

115

132

141

231

619

王凯

31260032

122

110

128

273

633

...

陈丽

31260080

108

135

125

254

622

4.2.2程序设计

程序主要包括以下几个模块:

1、成绩录入功能2、成绩输出功能3、成绩查询功能4、添加模块5、删除模块6、修改模块7、保存功能8、退出系统

主程序流程图如下:

图1

4.2.3源代码

#include<

stdio.h>

string.h>

process.h>

conio.h>

#defineN30

#defineM4

floatscore[M];

intn;

voidmenu()

*********欢迎进入学生成绩管理系统*************\n"

菜单\n"

输入成绩-------------------------------------1\n"

查看成绩与成绩排序---------------------------2\n"

查询学生成绩---------------------------------3\n"

修改成绩-------------------------------------4\n"

添加成绩-------------------------------------5\n"

删除成绩-------------------------------------6\n"

保存成绩-------------------------------------7\n"

退出系统-------------------------------------8\n"

**********************************************\n"

请输入您的选择\n"

/***************输入各个同学的学生信息******************************/

inti,j;

/*因二维表上下需对正故有此要求*/

scanf("

%s%s%f%f%f%f"

成功输入\n"

/*****************计算各个同学的总分*****************************/

voidsumgescore()

{

stu[i].sum=0;

for(j=0;

M;

stu[i].sum+=stu[i].score[j];

/************查看学生成绩与根据总分对学生进行排序*********************/

sumgescore();

/*****************通过输入学号查找学生成绩***************************/

/*找到该学生成绩信息后跳出for循环*/

}

/***************修改学生成绩*****************/

voidmodify()

请输入需要修改成绩的学生学号\n"

if(flog==1)

请重新输入该学生的学号XX语文数学英语理综:

修改成功\n"

/*****************添加学生成绩********************/

添加成功\n"

/*******************删除学生成绩*************************/

stu[i]=stu[i+1];

/*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/

/*删除该学生信息后学生总数减一*/

/******************保存学生成绩************************/

voidsavescore()

FILE*fp;

inti,flag=1;

charm;

puts("

是否保存学生成绩(y/n)"

if((fp=fopen("

score.dat"

"

wb"

))==NULL)

文件打开失败\n"

return;

for(i=0;

if(fwrite(&

stu[i],sizeof(structstudent),1,fp)!

=1)

{

printf("

保存失败\n"

flag=0;

}

if(flag==1)

保存成功!

fclose(fp);

return;

voidmain()

shortintflag=0;

menu();

do

flag=1;

switch(getch())

case'

1'

:

inputs

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2