数据结构课程设计.docx
《数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计.docx(17页珍藏版)》请在冰点文库上搜索。
数据结构课程设计
数据结构是计算机课程的一门重要的基础课,它的教学要求大致有三个重要方面:
其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。
本综合实训利用VisualStudio2008集成编程环境为实践工具,通过上机实践培养学生分析具体问题、解决实际问题的能力,训练和培养学生的数据抽象能力和程序设计的能力。
数据结构是一门实践性较强的课程,以养学生的数据抽象能力和程序设计的能力为目的。
在实训时应注重培养学生的实际操作能力。
本综合实训安排了20学时的实验课时,完成4次上机作业。
具体要求如下:
1.学习和理解每个实训题目的基本理论和方法;
2.掌握每个实验的实现步骤和关键技术;
3.准备好实验所需要的资源和文档;
4.上机实现程序,得到通过调试的正确程序。
5.根据每个实验的不同要求,完成实验报告的word文档。
二.实训环境
Windows7
VisualStudio2012
三、实训内容
1)问题描述
使用下面的数据,设计一个简单的成绩管理系统,实现出最基本的功能。
学生基本信息文件(A.TXT)及其内容:
A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成
学号姓名性别宿舍号码电话号码
01张成成男50187732111
02李成华女10187723112
03王成凤女10187723112
04张明明男50287734333
……...…………..
学生成绩基本信息文件(B.TXT)及其内容:
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分
01A01大学物理3667882
02B03高等数学478-190
01B03高等数学445-188
02C01VF3657666
数据录入功能:
对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据.综合成绩、学分由程序根据条件自动运算。
综合成绩的计算:
如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70%.
实得学分的计算:
采用等级学分制.
综合成绩在90-100之间,应得学分=学分*100%
综合成绩在70-90之间,应得学分=学分*80%
综合成绩在60-70之间,应得学分=学分*65%
综合成绩在60以下,应得学分=学分*0%
(2)删除功能:
当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
(3)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(4)查询功能:
分为学生基本情况查询和成绩查询两种
A:
学生基本情况查询:
A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
B:
成绩查询:
B1:
输入一个学号时,查询出此生的所有课程情况,格式如下:
学号:
xx姓名:
xxxxx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
………………………
共修:
xx科,实得总学分为:
xxx
四、算法描述及实训步骤
一.学生成绩录入
输入学生成绩
学分计算
综合成绩计算
录入信息存入学生成绩信息.TXT
录入成功
2.各种排序实现
学生成绩信息
学分降序排序
学分升序排序
综合成绩升序排序
综合成绩降序排序
结束
五、总结及心得体会
我这次数据结构实训中,我能够明显的感觉到团队的力量是强大的,为什么这么说呢?
因为,此次实训我们的课题是学生成绩管理,我们查询了很多资料,由于涉及到操作的数据是TXT文本文件里面的数据,我们都不是很熟悉这方面的知识,所以,我们集思广益,发挥自己找到资料的信息内容,我们进行讨论,总合信息之后,我们就明确分工,各自在搭建的核心数据上进行各项操作,保质保量的完成了这个项目。
这次实训中,首先最重要的就是数据录入,要有了数据,然后才能在此基础上进行操作,我主要负责成绩信息录入和成绩的排序。
同组成员完成删除和查找功能,组员没有录入功能,他们按照自己编写的TXT文本,进行测试,各项单元测试完成了之后。
然后,我们再把各自的程序集合在一起调试,测试修改。
修正为相对完善的学生成绩管理系统。
一个完整项目的开发它所要经历的阶段包括:
远景范围规划和用例说明、项目结构和风险评估、业务功能说明书、详细设计说明书、代码实现、测试和安装包等等。
一个项目的开发所需要的财力、人力都是很多的,如果没有一个好的远景规划,对以后的开发进度会有很大的影响,甚至会出现在预定时间内不能完成项目或者完成的项目跟原来预想的不一样。
一份好的项目结构、业务功能和详细设计说明书对一个项目的开发有明确的指引作用,它可以使开发人员对这个项目所要实现的功能在总体上有比较明确的认识,还能减少在开发过程中出现不必要的麻烦。
代码的实现是一个项目开发成功与否的关键,也就是说,前期作业都是为代码的实现所做的准备。
这个学期的数据结构的实训,我对软件开发技术和过程有了更深一步的了解,对文件系统有一定的认识与使用也有了大大的提高。
以及如何运用数据结构进行操作方面有了本质的提高。
短短的实训结束了,为我将来的学习打下了良好的基础,也提高了我的软件开发的水平,今后我将会更加努力的学习,不断提高自身素质,开拓创新,与时俱进,做一个优秀的软件开发工程师。
6、实训结果
(一)录入功能实现
1.将需要输入的学生成绩信息输入到TEXTBOX里面,然后点击录入按钮。
2.点击录入成绩按钮后,录入数据成功,然后TEXTBOX里面的数据录入到学生成绩信息.txt文本里面,然后通过外部操作文本数据。
(2)排序功能实现
1.默认显示存入文本时候的顺序。
2.将学生成绩按照学分升序排行。
3.按照学分降序排行。
4.按照综合成绩升序排行。
5.按照综合成绩降序排行。
七、源代码:
(一).录入功能算法设计
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
namespace学士成绩管理
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
stringstuInfor=txtStu.Text;
string[]stu=stuInfor.Split('');
stringtotalScore="";
if(Convert.ToInt32(stu[5])==-1)
{
totalScore=Convert.ToString(Convert.ToInt32(stu[4])*0.3+Convert.ToInt32(stu[6])*0.7);
}
else
totalScore=Convert.ToString(Convert.ToInt32(stu[4])*0.15+Convert.ToInt32(stu[5])*0.15+Convert.ToInt32(stu[6])*0.7);
stringxuefen="";
intk=(int)Math.Floor(Convert.ToDouble(Convert.ToDouble(totalScore)/10.0));
switch(k)
{
case10:
case9:
xuefen=Convert.ToString(Convert.ToInt32(stu[3])*1);
break;
case8:
case7:
xuefen=Convert.ToString(Convert.ToInt32(stu[3])*0.8);
break;
case6:
xuefen=Convert.ToString(Convert.ToInt32(stu[3])*0.65);
break;
default:
xuefen=Convert.ToString(0);
break;
}
stringinfo=stuInfor+""+totalScore+""+xuefen+"\r\n";
byte[]information=System.Text.Encoding.UTF8.GetBytes(info);
//MessageBox.Show(System.IO.Directory.GetCurrentDirectory());
using(FileStreamfs=newFileStream(Application.StartupPath+@"\文本\学生成绩信息.txt",FileMode.Append))
{//获取应用程序执行路径
fs.Write(information,0,information.Length);
//ShowMsg("文件保存成功!
:
"+saveFilePath);
}
txtStu.Text="";
MessageBox.Show("录入成功");
}
privatevoidForm1_Load(objectsender,EventArgse)
{}
}
}
(二).排序功能算法设计
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.IO;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespace学士成绩管理
{
publicpartialclassSortInformation:
Form
{
publicSortInformation()
{
InitializeComponent();
}
privatevoidSortInformation_Load(objectsender,EventArgse)
{
//加载窗口的时候显示默认的顺序,就是成绩信息中的数据
stringsource="";
//this.stuInforRtbx.Text="";
StreamReadermyStream=newStreamReader(Application.StartupPath+@".\文本\学生成绩信息.txt",System.Text.Encoding.UTF8);
stringstringLine=myStream.ReadLine();
while(stringLine!
=null)
{
source=stringLine+"\r\n";
lbSortInfor.Items.Add(source);
stringLine=myStream.ReadLine();
}
myStream.Close();
}
privatevoidbtnCreAsc_Click(objectsender,EventArgse)
{
double[]stuCres=newdouble[lbSortInfor.Items.Count];
for(inti=0;i{
stringstuScoreItem=lbSortInfor.Items[i].ToString();
string[]stuScoreItems=stuScoreItem.Split('');
stuCres[i]=Convert.ToDouble(stuScoreItems[8]);
}
Sort(stuCres);
}
//冒泡排序
publicvoidSort(double[]array)
{
inti,j;//循环变量
doubletemp;//临时变量
objectstrTemp;
for(i=0;i{
for(j=0;j{
if(array[j]>array[j+1])
{
//交换元素
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
strTemp=lbSortInfor.Items[j];
lbSortInfor.Items[j]=lbSortInfor.Items[j+1];
lbSortInfor.Items[j+1]=strTemp;
}
}
}
}
////冒泡降序
publicvoidSort1(double[]array)
{
inti,j;//循环变量
doubletemp;//临时变量
objectstrTemp;
for(i=0;i{
for(j=0;j{
if(array[j]{
//交换元素
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
strTemp=lbSortInfor.Items[j];
lbSortInfor.Items[j]=lbSortInfor.Items[j+1];
lbSortInfor.Items[j+1]=strTemp;
}
}
}
}
privatevoidbtnCreDesc_Click(objectsender,EventArgse)
{
double[]stuCres=newdouble[lbSortInfor.Items.Count];
for(inti=0;i{
stringstuScoreItem=lbSortInfor.Items[i].ToString();
string[]stuScoreItems=stuScoreItem.Split('');
stuCres[i]=Convert.ToDouble(stuScoreItems[8]);
}
Sort1(stuCres);
}
//综合成绩升序
privatevoidbtnTotalAsc_Click(objectsender,EventArgse)
{
double[]stuTotalScore=newdouble[lbSortInfor.Items.Count];
for(inti=0;i{
stringstuScoreItem=lbSortInfor.Items[i].ToString();
string[]stuScoreItems=stuScoreItem.Split('');
stuTotalScore[i]=Convert.ToDouble(stuScoreItems[7]);
}
Sort(stuTotalScore);
}
//综合成绩降序
privatevoidbtnTotalDesc_Click(objectsender,EventArgse)
{
double[]stuTotalScore=newdouble[lbSortInfor.Items.Count];
for(inti=0;i{
stringstuScoreItem=lbSortInfor.Items[i].ToString();
string[]stuScoreItems=stuScoreItem.Split('');
stuTotalScore[i]=Convert.ToDouble(stuScoreItems[7]);
}
Sort1(stuTotalScore);
}
}
}