数据结构课程设计Word下载.docx
- 文档编号:21703868
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:36
- 大小:242.40KB
数据结构课程设计Word下载.docx
《数据结构课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计Word下载.docx(36页珍藏版)》请在冰豆网上搜索。
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.迷宫问题
给定M´
N的迷宫图,求一条从制定入口到出口的路径。
假设迷宫如图教材P77页图3.7所示。
对于图中每个方块,用个空白表示通道,用阴影表示墙。
所求路径必须是简单路径,即在求得的路径上不能重复出现同一通道块。
二、主要参考文献
[1]李春葆,尹为民等,数据结构教程(第4版),北京:
清华大学出版社,2013年.
完成期限:
2014年6月20日
指导教师签名:
课程负责人签名:
2014年6月9日
摘要
一、通过对问题的具体描述的理解,可知道要用结构体来解决本题目数据较多这个问题。
另外根据问题的要求,可以采用构造函数来解决每一个小要求,以实现该题的全部要求。
二、用合适的算法解决问题,并编写代码,通过计算机来实现所有的功能。
三、设计界面友好,设计过程将主体函数声明于主函数之前,具体函数体写在主函数之后,以及各种注释更方便程序员理解程序主要内容。
四、结合设计过程,总结自己的心得体会。
五、列出参考文献。
1问题描述
1.1问题描述
录入并保存一个班级学生多门课程的成绩,并对成绩进行分析。
1.2基本要求
1、通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。
2、对文件input.dat中的数据进行处理,要求具有如下功能:
①.按各门课程成绩排序,并生成相应的文件输出;
②.计算每个人的平均成绩,按平均成绩排序,并生成文件;
③.求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数;
④.根据姓名或学号查询某人的各门课成绩。
3、使用VisualC++6.0控制台应用程序开发,界面美观
1.3问题的其它注意事项
算法的设计尽量简单,用简单的程序来实现复杂的问题的求解。
一定要注意程序的可读性实现,要按要求实现问题中的各项功能。
2程序结构及功能描述
图1程序中函数的调用结构
首先设置要统计学生的个数;
然后进入主函数,之后会有提示信息选择是否查看接着就进入主菜单。
主菜单包括:
学生成绩信息、平均成绩信息、排序、查找和退出系统5项总体功能。
排序又包含:
按数学成绩排序、按英语成绩排序、按计算机成绩排序、按平均成绩排序和最高成绩、最低成绩以及优(90~100)、良(80~89)、中(70~79)、及格(60~69)和不及格(0~59)的人数。
查找包含:
按姓名查找和按学号查找。
平均成绩包含:
数学的平均成绩、英语的平均成绩和计算机的平均成绩。
有关函数如下:
(1)voidmenu();
//主菜单函数,用来显示各种功能选项。
(2)voidshow(studentstu[],intn);
//显示学生信息,把各科成绩、//姓名、学号都输出来。
(3)voidreadfile(studentstu[],intn);
//读取文件数据,用来对//数据的操作。
(4)voidmath(studentstu[],intn);
//对数学成绩的排序
(5)voidenglish(studentstu[],intn);
//对英语成绩的排序
(6)voidcomputer(studentstu[],intn);
//对计算机成绩的排序
(7)voidaverage(studentstu[],intn);
//学生三门课程的平均成绩的计算
(8)voidscore_analyse(studentstu[],intn);
//对学生各科成绩的//分析与各个等级的人数的统计
(9)voidsearch_no(studentstu[],intn);
//按学号查找学生信息
(10)voidsearch_name(studentstu[],intn);
//按姓名查找学生信息
(11)voidclosesystem();
//主程序的关闭
3算法描述
#include<
iostream.h>
fstream.h>
stdlib.h>
string.h>
stdio.h>
#defineN7
staticintselect=0;
//输入选择的项
staticintnum=0;
//已录入学生人数
//************************定义学生结构体****************************
typedefstruct
{
charno[12];
//学号
charname[16];
//姓名
intmath;
//数学成绩
intenglish;
//英语成绩
intcomputer;
//计算机成绩
intaverage;
//个人平均成绩
}student;
studentstu[N];
//定义结构体数组
studentstud[N];
//备份结构体数组用来排序
//*******************************菜单*******************************
voidmenu();
//菜单原型声明
voidshow(studentstu[],intn);
//显示学生数据原型声明
voidreadfile(studentstu[],intn);
//读取数据原型声明
voidmath(studentstu[],intn);
//对数学成绩排序原型声明
voidenglish(studentstu[],intn);
//对英语成绩排序原型声明
voidcomputer(studentstu[],intn);
//对计算机成绩排序原型声明
voidaverage(studentstu[],intn);
//对平均成绩排序原型声明
intdegree(intnum);
//等级分级原型声明
voidscore_analyse(studentstu[],intn);
//成绩分析原型声明
voidsearch_no(studentstu[],intn);
//按学号查找原型声明
voidsearch_name(studentstu[],intn);
//按姓名查找原型声明
voidclosesystem();
//关闭程序
//*********************************测试函数*************************
voidmain()
{
studentstu[7]={//定义学生体
{"
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},
};
readfile(stu,7);
//读取数据
for(;
;
){
menu();
cin>
>
select;
switch(select)
{
case1:
math(stu,7);
break;
case2:
english(stu,7);
case3:
computer(stu,7);
case4:
average(stu,7);
case5:
score_analyse(stu,7);
case6:
search_no(stu,7);
case7:
search_name(stu,7);
case8:
show(stu,7);
case0:
closesystem();
default:
printf("
dataerror!
"
);
}
}
}
//▲▲▲▲▲▲▲▲▲▲▲▲▲▲〖具体函数原型〗▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
voidmenu()
system("
cls"
cout<
<
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n"
〓〓〓〓〓〓〓〓〓〓〓〓【欢迎进入学生成绩系统】〓〓〓〓〓〓〓〓〓〓〓〓〓\n"
※\t\t\t输入相应的序号实现功能:
\t\t\t\t※"
endl;
※\t\t1、按数学成绩排序,并生成相应的文件输出\t\t※"
※\t\t2、按英语成绩排序,并生成相应的文件输出\t\t※"
※\t\t3、按计算机成绩排序,生成相应的文件输出\t\t※"
※\t\t4、按平均成绩排序,并生成文件\t\t\t\t※"
※\t\t5、各科成绩分布\t\t\t\t\t※"
※\t\t6、按学号查询\t\t\t\t\t\t※"
※\t\t7、按姓名查询\t\t\t\t\t\t※"
※\t\t8、显示新学生信息\t\t\t\t\t※"
※\t\t0、退出系统\t\t\t\t\t\t※"
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※"
//**************************显示学生数据****************************
voidshow(studentstu[],intn)
//清屏
\t〓〓〓〓〓〓〓〓〓☆学生成绩☆〓〓〓〓〓〓〓〓〓〓\n"
\t■\t"
学号\t"
姓名\t"
数学\t"
英语\t"
计算机\t■\n"
for(inti=0;
i<
n;
i++)
{
cout<
stu[i].no<
'
\t'
stu[i].name<
<
stu[i].math<
stu[i].english<
stu[i].computer<
\t■\n"
\t〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"
即将进入菜单选择!
pause"
//************************文件的读写***********************************
voidreadfile(studentstu[],intn)
inti;
FILE*fp;
fp=fopen("
G:
\\数据结构课程设计\\input.dat"
wb"
//以"
写"
方式打开一个二进制文件
if(fp==NULL)
Can'
topen!
\n"
exit(0);
input文件打开成功。
for(i=0;
fwrite(&
stu[i],sizeof(student),1,fp);
//一次写入一个学生的成绩
system("
〓〓〓〓〓〓〓〓〓〓〓【是否显示学生成绩信息?
】〓〓〓〓〓〓〓〓〓〓〓〓〓\n"
☆☆☆☆☆☆☆☆☆☆☆【1、是\t\t】☆☆☆☆☆☆☆☆☆☆☆☆\n"
☆☆☆☆☆☆☆☆☆☆☆【0、其他\t\t】☆☆☆☆☆☆☆☆☆☆☆☆\n"
cin>
if(select==1){system("
else
即将进入菜单选项!
system("
//*************************按数学成绩排序并输出************************
voidmath(studentstu[],intn)
ofstreamfout;
//fout输出文件流对象
ifstreamfin;
//fin输入文件流对象
inti=0;
studentt;
//排序时用来当做临时变量
i++)//创建原数据创建备份用来当做排序时的临时变量
stud[i]=stu[i];
fout.open("
math.txt"
ios:
:
out|ios:
binary);
//打开要导入的math.txt文件
if(!
fout)
Error:
topenmath.txt!
exit
(1);
成功打开math.txt文件。
fin.open("
input.dat"
in|ios:
//打开要读取得input.dat文件
fin)
topeninput.dat!
intk,j;
for(k=0;
k<
n-1;
k++)//数学成绩从小到大排序算法
for(j=0;
j<
n-k-1;
j++)
if(stud[j].math>
stud[j+1].math)
{
t=stud[j];
stud[j]=stud[j+1];
stud[j+1]=t;
}
}
☆☆☆☆☆☆☆☆☆☆☆☆☆【按数学成绩升序排序】☆☆☆☆☆☆☆☆☆☆☆☆☆\n"
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"
〓\t\t学号\t"
计算机\t\t\t〓\n"
〓\t\t"
stud[i].no<
stud[i].name<
stud[i].math<
stud[i].english<
stud[i].computer<
\t\t\t〓\n"
fout.write((char*)&
stud[i],sizeof(student));
//将学生排序后得信息写入文件
数学排序已录入math.txt"
fout.close();
将返回菜单!
//*************************按英语成绩排序并输出************************
voidenglish(studentstu[],intn)
english.txt"
topenenglish.txt!
成功打开english.txt文件。
//暂停
if(stud[j].english>
stud[j+1].english)
☆☆☆☆☆☆☆☆☆☆☆☆☆【按英语成绩升序排序】☆☆☆☆☆☆☆☆☆☆☆☆☆\n"
英语排序已录入english.txt"
voidcomputer(studentstu[],intn)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)