数据结构课程设计任务书Word文档下载推荐.docx

上传人:b****4 文档编号:7047816 上传时间:2023-05-07 格式:DOCX 页数:23 大小:204.23KB
下载 相关 举报
数据结构课程设计任务书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

(1)问题描述。

录入并保存一个班级学生多门课程的成绩,并对成绩进行分析。

(2)基本要求。

a)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。

b)对文件input.dat中的数据进行处理,要求具有如下功能:

按各门课程成绩排序,并生成相应的文件输出;

计算每个人的平均成绩,按平均成绩排序,并生成文件;

求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数;

根据姓名或学号查询某人的各门课成绩。

c)使用VisualC++6.0控制台应用程序开发,界面美观。

(3)测试数据,如下图所示。

学号

姓名

数学

英语

计算机

01

王芳

78

77

90

02

张强

89

67

88

03

李浩

56

66

04

黄鹏

86

85

05

尚校

76

06

赵鹏

45

54

07

蒋泽

70

2.职工信息管理系统

设有一个职工文件,其结构为:

职工号(no)、姓名、部门号、工资数、职工号指针、部门号指针和工资数指针。

设计一个程序,从该文件中读取记录到一个单链表中,并完成如下功能:

(1)输入。

添加一个职工信息。

(2)输入。

输出全部职工信息。

(3)按no排序。

通过pno指针将职工记录按no从小到大链接起来。

(4)按no输出。

沿pno链输出全部职工信息。

(5)按depno排序。

通过pdepno指针将职工记录按depno从小到达链接起来。

(6)按depno输出。

沿pdepno链输出全部职工信息。

(7)按salary排序。

通过psalary指针将职工记录按salary从小到大链接起来。

(8)按salary输出。

沿psalary链输出全部职工信息。

(9)清空。

删除职工文件中的全部记录。

(10)存储退出。

将单链表中的全部结点存储到职工文件中,然后退出程序运行过程。

3.通讯录管理系统

通讯录管理系统一般包括通讯者结点信息的插入、查询、删除、更新以及通讯录信息的输出等功能。

通讯者的信息一般包括编号、姓名、性别、电话以及地址等。

4.约瑟夫生者死者游戏

约瑟夫游戏的大意是:

30名旅客同乘一条船,因为超载严重,加上风雨大作,情况危急。

船长告诉旅客,只有将全船一半的旅客扔进海中,其他人才能幸免于难。

无奈,大家商议出如此办法,30个人围成一圈,由第一个人开始依次报数,数到第9人,便把他仍入海中,然后再从他的下一个人开始报数,数到第9人,便把他仍入海中,如此循环进行,直至剩下15个旅客为止。

问哪些位置是将被扔下大海的位置。

5.迷宫问题

给定MN的迷宫图,求一条从制定入口到出口的路径。

假设迷宫如图教材P77页图3.7所示。

对于图中每个方块,用个空白表示通道,用阴影表示墙。

所求路径必须是简单路径,即在求得的路径上不能重复出现同一通道块。

二、主要参考文献

[1]李春葆,尹为民等,数据结构教程(第4版),北京:

清华大学出版社,2013年.

完成期限:

2013年6月23日

指导教师签名:

课程负责人签名:

时海亮

2013年6月10日

摘要

本文使用VC++6.0环境,完成了对一个班的成绩分析问题的简单设计。

它录入一个班的学生的多门课程的成绩,并对录入的数据进行排序,计算平均成绩,划分分数段等,对班级及个人的成绩都可以进行分析。

本文也对该设计的难点、解决技巧、注意事项、程序结构功能分析、算法描述以及要参考的资料等进行了详细的作答。

将在后文给出。

1问题描述

1.1问题描述

1.2基本要求

1)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。

2)对文件input.dat中的数据进行处理,要求具有如下功能:

3)使用VisualC++6.0控制台应用程序开发,界面美观。

1.3问题的其它注意事项

●注意事项:

每个要求都要实现,注意细节错误,一定要思路清晰,结构清晰合理避免冗杂。

2程序结构及功能描述

●成绩分析的程序结构如下图所示:

●程序功能描述如下:

●主函数中调用了writefile(),readfile(),Course(),personal(),findnum(),findname()等六个函数实现对成绩的分析。

●writefile()和readfile()函数分别实现了对数据的录入和读取。

●针对班级的成绩分析定义的Course()函数中首先实现用户想要选择的课程并对该课程成绩的各分数段的人数以及最高分和最低分进行了计算,接着计算该门课程的平均成绩,同时使用经典的冒泡排序法对平均成绩进行排序。

●针对个人的成绩分析,Personal()函数可实现计算个人所有课程的平均成绩,同样采用冒泡排序法对平均成绩排序。

●调用fandnum()函数可通过学号对学生成绩查询,调用findname()函数可通过姓名查找学生成绩。

3算法描述

算法描述为:

#include<

iostream.h>

string.h>

fstream.h>

stdlib.h>

stdio.h>

#defineN100

typedefstruct

{

charnum[20];

//学号

charname[20];

//姓名

floatmath,English,computer,a,ave;

//成绩

}STUDENT;

//-----------------------------------------------------------------------------------------------------------------------

//--------------------------------------

//写文件

voidwritefile(STUDENTstu[],intn)

inti;

ofstreammywrite;

mywrite.open("

input.dat"

ios:

:

out);

//以写的方式打来文件

if(!

mywrite)

{

cout<

<

"

Error:

can'

topeninput.dat文件!

endl;

exit

(1);

}

for(i=0;

i<

n;

i++)

mywrite.write((char*)&

stu[i],sizeof(STUDENT));

mywrite.close();

}

//读文件

voidreadfile(STUDENTstu[],intn)//

inti;

ifstreammyread;

myread.open("

in);

//以读的方式打来文件

myread)

cout<

学号\t"

姓名\t"

数学\t"

英语\t"

计算机\n"

;

myread.read((char*)&

stu[i].num<

\t"

stu[i].name<

stu[i].math<

stu[i].English<

stu[i].computer<

\n"

myread.close();

//-------------------------------------------------------------------------------------------------------------------------------

//对某个学科的成绩分析

voidCourse(STUDENTstu[],intn)

对您选择的学科的成绩分析为:

intm;

floattemp;

请选择您要查看的学科"

cin>

>

m;

inti=0;

switch(m)

case1:

您选择的数学成绩分析为:

for(i=0;

stu[i].a=stu[i].math;

break;

case2:

您选择的英语成绩分析为:

stu[i].a=stu[i].English;

case3:

您选择的计算机成绩分析为:

stu[i].a=stu[i].computer;

default:

cout<

输入错误!

intj;

按学号每个人该门课程的原始成绩为:

"

stu[i].a<

//--------------------------------------

//分析该门课程各分数段人数

intfail=0,pass=0,medium=0,fine=0,excellent=0;

if(stu[i].a<

60)

{

fail++;

}

else

if(stu[i].a<

70&

&

stu[i].a>

=60)

pass++;

if(stu[i].a>

=70&

80)

medium++;

=80&

90)

fine++;

excellent++;

该门课程的不及格人数为"

fail<

该门课程60-69的人数为"

pass<

该门课程70-79的人数为"

medium<

该门课程80-89的人数为"

fine<

该门课程90分以上的人数为"

excellent<

//计算平均成绩

该门课程的平均成绩为:

floatsum=0,courseave;

sum+=stu[i].a;

courseave=sum/n;

courseave<

//计算最高分

该门课程的最高分为:

floatmax=stu[0].a;

if(stu[i].a>

max)

max=stu[i].a;

max<

//计算最低分

该门课程的最低分为:

floatmin=stu[0].a;

min)

min=stu[i].a;

min<

//运用冒泡排序法对该门课程成绩进行排序

排序后的成绩为:

for(j=0;

j<

n-1-i;

j++)

if(stu[j].a>

stu[j+1].a)

{

chart[20];

temp=stu[j].a,stu[j].a=stu[j+1].a,stu[j+1].a=temp;

strcpy(t,stu[j+1].name);

strcpy(stu[j+1].name,stu[j].name);

strcpy(stu[j].name,t);

strcpy(t,stu[j+1].num);

strcpy(stu[j+1].num,stu[j].num);

strcpy(stu[j].num,t);

}

system("

pause"

);

//个人平均成绩及排序

voidpersonal(STUDENTstu[],intn)

cls"

…………………………………………个人的平均成绩分析…………………………………………"

stu[i].ave=(stu[i].math+stu[i].English+stu[i].computer)/3;

每个人的平均成绩为:

stu[i].ave<

//冒泡排序法对个人平均成绩排序

n-1;

for(intj=0;

if(stu[j].ave>

stu[j+1].ave)

temp=stu[j].ave;

stu[j].ave=stu[j+1].ave;

stu[j+1].ave=temp;

个人平均成绩排序为:

cout<

system("

//按条件查看学生成绩

voidfindnum(STUDENTstu[],intn)//按学生学号查询

…………………………………………按条件查询学生成绩…………………………………………"

请输入您要查找的学生的学号"

num;

while(strcmp(num,stu[i].num)!

=0&

n)

i++;

if(i==n)

对不起,您输入的学号不存在!

else

voidfindname(STUDENTstu[],intn)//按学生姓名查询

请输入您要查找的学生的姓名"

name;

while(strcmp(name,stu[i].name)!

对不起,您输入的学生姓名不存在!

//对文件进行读写

voidmain()

…………………………………………该班的学生成绩为…………………………………………"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

STUDENTstu[]={{"

01"

"

王芳"

78,77,90},{"

02"

张强"

89,67,88},{"

03"

李浩"

56,66,78},{"

04"

黄鹏"

89,86,85},{"

05"

尚校"

67,88,76},{"

06"

赵鹏"

45,54,67},{"

07"

蒋泽"

78,76,70}};

writefile(stu,7);

readfile(stu,7);

…………………………………………对各科成绩分析如下…………………………………………"

数字1-3分别表示数学、英语、计算机学科,输入1表示对数学成绩的分析,\n输入2表示对英语成绩的分析,\n输入3表示对计算机成绩的分析\n"

Course(stu,7);

personal(stu,7);

findnum(stu,7);

findname(stu,7);

4实验数据和实验结果

实验数据:

实验结果:

录入的学生信息:

输入1选择的数学成绩分析如下:

输入2显示的英语成绩分析如下:

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

当前位置:首页 > PPT模板 > 商务科技

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

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