学生信息管理系统之欧阳科创编.docx
《学生信息管理系统之欧阳科创编.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统之欧阳科创编.docx(15页珍藏版)》请在冰豆网上搜索。
学生信息管理系统之欧阳科创编
滁州学院
时间:
2021.02.05
创作:
欧阳科
课程设计报告
课程名称:
数据结构
设计题目:
学生成绩信息管理系统
系别:
计算机科学与技术
专业:
计算机科学与技术
组别:
第十组
起止日期:
11年5月20日~11年6月25日
指导教师:
杨斌
计算机科学与技术系二○一一年制
课程设计题目
学生成绩管理系统
组长
孙大成
学号
2010211119
班级
计科一班
系别
计算机科学与技术
专业
计算机科学与技术
组员
陈凤霞高山陈世光
指导教师
杨斌
课程设计目的
方便用户对学生成绩的管理和查询
课程设计所需环境
MicrosoftVisualC++6.0
课程设计任务要求
应用数据结构的知识从文本中读取数据,设计算法,完成对学生成绩的管理和查询
课程设计工作进度计划
序号
起止日期
工作内容
分工情况
1
5/20~5/25
将学生的成绩从文本文件中读取出来,存入数组
陈凤霞完成
2
5/25~5/30
运用选择排序法对成绩进行降序排列
陈世光完成
3
6/1~6/10
运用直接插入排序对成绩进行升序排列
孙大成完成
4
6/10~6/15
对某个学生的成绩进行查找操作
高山完成
5
6/15~6/20
对不及格学生的成绩输出到新建文档中
高山完成
6
6/20
设计主函数中的循环算法,便于多次操作
孙大成完成
指导教师签字:
年月日
教研室审核意见:
教研室主任签字:
年月日
课程设计任务书
⒈引言2
1.1、课程简介2
1.2、课程设计的背景2
⒉需求分析2
2.1问题要求2
2.2设计思路3
2.3运行开发环境3
⒊概要设计3
3.1流程图3
3.2主要数据结构4
3.3函数及其实现的功能4
⒋详细设计4
⒌调试与操作说明15
5.1、成绩的合并后输出15
5.2、成绩的降序输出15
5.3、不及格成绩学生的信息:
15
5.3成绩的查询15
5.4、成绩的不及格信息16
5.5成绩的文本中读取16
⒍课程设计总结与体会17
⒎致谢17
⒏参考文献17
课程设计的主要内容
⒈引言
1.1、课程简介
当今社会,计算机技术和通信技术已经不断发展,处理和传输的数据量越来越庞大。
文本文件存储的方式是普通人熟悉的数据管理的方式,我们要做的就是在文本中读取数据,在程序中处理数据,生成新的数据再保留在文本文档中,供其他人应用。
1.2、课程设计的背景
课程设计是为了让同学们了解学习数据结构的作用和意义。
数据结构是计算机科学与技术专业的专业基础课。
所有的计算机系统软件和应用软件都要用到各种类型的数据结构。
因此,想要更好地运用计算机来解决实际问题,仅仅掌握几门计算机程序设计语言是远远难以应付当前众多复杂的课题,想要有效地使用计算机,充分发挥它的性能,还必须学习和掌握好数据结构的有关知识,打好数据结构这门课的基础,对于学习计算机专业其它的课程,如操作系统、软件工程、编译原理、数据库、人工智能等十分有益。
⒉需求分析
2.1问题要求
现有学生成绩信息文件1(1.txt),内容如下
姓名学号语文数学英语
张明明01677882
李成友02789188
张辉灿03688256
王露04564577
陈东明05673847
….......…
学生成绩信息文件2(2.txt),内容如下:
姓名学号语文数学英语
陈果31576882
李华明32889068
张明东33484256
李明国34504587
陈道亮35475877
…......(文件内容可根据测试要求,自行制定)
试编写一个管理系统,要求如下:
1)、实现对两个文件数据进行合并,生成新文件3.txt
2)、抽取出三科成绩中有补考的学生并保存在一个新文件4.txt
3)、对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)
4)、输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)
5)、要求使用结构体,链或数组等实现上述要求.
采用多种方法且算法正确者,可适当加分.
2.2设计思路
利用文件对学生成绩等基本信息进行保存,并将其中的两文件合并成一个,生成新的文件;学生成绩的分析,将应补考的同学的基本信息保存在另一个文件中;利用合并进行降序。
2.3运行开发环境
运行环境MicrosoftVisualC++6.0;开发工具C/C++
⒊概要设计
3.1流程图
图3.1设计的流程图
3.2主要数据结构
结构如下表所述,建立包含系成绩、学号、总分的信息存储等
具体数据结构定义如下:
typedefstructdata//建立结构体数组
{
charname[10];
intXhao;
intchina;
intmath;
intenglish;
intsum;
}Data;
3.3函数及其实现的功能
利用文件对学生成绩等基本信息进行保存,并将其中的两文件合并成一个,生成新的文件;学生成绩的分析,将应补考的同学的基本信息保存在另一个文件中;利用合并进行降序。
⒋详细设计
4.1程序设计源代码
#include
#include
#include//为了输入字符串
#include
typedefstructdata【1】
{
charname[10];
intXhao;
intchina;
intmath;
intenglish;
intsum;
}Data;
intk;
///////////////////////////////////////////////////////////////////////////////
voidcreate(Datastu[])
{
inti=0;
【1】FILE*fp1,*fp2;
if((fp1=fopen("E:
\\c语言\\课程设计作业\\t1.txt","r"))==NULL)
{printf("FILEnotfound!
\n");
exit(0);
}
if((fp2=fopen("E:
\\c语言\\课程设计作业\\t2.txt","r"))==NULL)
{printf("FILEnotfound!
\n");
exit(0);
}
while(!
feof(fp1))
{
fscanf(fp1,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china,&stu[i].math,&stu[i].english);
stu[i].sum=stu[i].china+stu[i].math+stu[i].english;
i++;
};
i--;
while(!
feof(fp2))
{
fscanf(fp2,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china,&stu[i].math,&stu[i].english);
stu[i].sum=stu[i].china+stu[i].math+stu[i].english;
i++;
};i--;k=i;
printf("学号姓名语文数学英语总分\n");
for(intj=0;j
{
printf("%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
}
cout<}
/////////////////////////////////////////////////////////////////////////////
//1、选择排序
voidhebing(Datastu[])
{
intmax,jj,i;
Datat;
FILE*fp3;
if((fp3=fopen("E:
\\c语言\\课程设计作业\\t3.txt","w"))==NULL)
{printf("FILEnotfound!
\n");
exit(0);
}
for(jj=0;jj{
max=jj;
for(i=jj+1;iif(stu[max].sum{t=stu[max];stu[max]=stu[i];stu[i]=t;}
}
for(intj=0;j{
fprintf(fp3,"%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
printf("%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
}
}
/////////////////////////////////////
//2、直接插入排序
voidhebing2(Datastu[])
{
intt,i;
Datatemp;
FILE*fp5;
if((fp5=fopen("E:
\\c语言\\课程设计作业\\t5.txt","w"))==NULL)
{printf("FILEnotfound!
\n");
exit(0);
}
for(i=2;i<=k;i++)
{
stu[0]=stu[i];
t=i-1;
while(stu[t].sum>stu[0])
{
stu[t+1]=stu[t];
t=t-1;
}
stu[t+1]=stu[0];
}
for(intj=1;j<=k;j++)
{
fprintf(fp5,"%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
printf("%d%-5s%d%d%d%d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
}
}
///////////////////////////////////////////////////////////////////////////////
voidbukao(Datastu[])
{
FILE*fp4;
if((fp4=fopen("E:
\\c语言\\课程设计作业\\t4.txt","w"))==NULL)
{printf("FILEnotfound!
\n");
exit(0);
}
for(inti=0;i{
if(stu[i].china<60){
fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].china);
printf("%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].china);
fprintf(fp4,"%s\n","语文不及格:
");
printf("%s\n","语文不及格:
");
}
if(stu[i].math<60){
fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].math);
printf("%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].math);
fprintf(fp4,"%s\n","数学不及格:
");
printf("%s\n","数学不及格:
");
}
if(stu[i].english<60){
fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].english);
printf("%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].english);
fprintf(fp4,"%s\n","英语不及格:
");
printf("%s\n","英语不及格:
");
}
}
}
///////////////////////////////////////////////////////////////////////////////
voidsearch(Datastu[])
{
intj,flag=0;
charname[10];
printf("输入一个学生的姓名:
\n");
scanf("%s",name);
fflush(stdin);
for(inti=0;i{
j=strcmp(name,stu[i].name);
if(j==0)
{
flag=1;
printf("%d--%s--%d--%d--%d--%d\n",stu[i].Xhao,stu[i].name,stu[i].china,stu[i].math,stu[i].english,stu[i].sum);
}
}
if(flag==0)
cout<<"notfound"<}
///////////////////////////////////////////////////////////////////////////////
voidprf()
{
cout<<"#************************************************************#"<cout<<"#******输入“1”,降序排列成绩******结果见文本文件t3******#"<cout<<"#******输入“2”,升序排列成绩*****结果见文本文件t5****#"<cout<<"#******输入“3”,补考信息********结果见文本文件t4**#"<cout<<"#******输入“4”,查找学生信息***************#"<cout<<"#******输入“0”,结束服务***************#"<}
voidmain()
{
intj=1;
charch;
Datastu[20];
DataA[20];
prf();
cout<<"请输入要执行的步骤(以1,2,3,4,5,0):
"<scanf("%c",&ch);
fflush(stdin);
create(stu);
for(inti=0;iA[j]=stu[i];
while(ch!
='0')
{
switch(ch)
{
case'1':
{cout<<"降序排列"<hebing(stu);}
break;
case'2':
{cout<<"升序排列"<hebing2(A);}
break;
case'3':
{cout<<"补考信息"<bukao(stu);}
break;
case'4':
{printf("查找信息");
search(stu);}
break;
}
cout<<"请输入要执行的步骤(以1,2,3,4,0):
"<ch=getchar();
fflush(stdin);
}
}
⒌调试与操作说明
5.1、成绩的合并后输出
图5.1成绩的合并
5.2、成绩的降序输出
5.3、不及格成绩学生的信息:
图5.2成绩的降序排序
5.3成绩的查询
图5.3成绩的查询
5.4、成绩的不及格信息
图5.4成绩的不及格学生信息
5.5成绩的文本中读取
在文本文件中查看上述操作的结果。
图5.5文本文件降序成绩
图5.6文本文件补考信息
⒍课程设计总结与体会
在课程设计中,我们组的成员分工合作。
他们每个人遇到过不同程度的问题都会想着去解决去实现,当一个人解决不了的时候,团队的优越性就体现出来了。
我们一起探讨,研究终于完成了这次的课程设计,虽然这只是一个小的程序,没有牵涉到什么外围的人力和物理资源。
但是我们多少了解做课程设计的精髓,为以后的学术报告做好铺垫。
⒎致谢
感谢本组全体成员的努力以及老师们和同学们的帮助,其中有《数据结构》老师杨斌和《C语言程序设计》老师赵瑞斌等。
⒏参考文献
[1]何钦铭,颜辉.C语言程序设计[M].北京:
高等教育出版社,2008.
[2]胡学刚.数据结构(C语言版)[M].北京:
高等教育出版社,2008
评语:
评阅教师签名:
年月日
成绩
时间:
2021.02.05
创作:
欧阳科