学生成绩管理系统课程设计报告Word文件下载.docx
《学生成绩管理系统课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计报告Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。
张明明
01
67
78
82
李成友
02
91
88
张辉灿
03
68
82
56
王露
04
56
45
77
陈东明
05
38
47
….
..
…
学生成绩信息文件2(2.txt),内容如下:
陈果
31
57
李华明
32
88
90
68
张明东
33
48
42
李明国
34
50
87
陈道亮
35
47
58
二、基本要求
试编写一管理系统,要求如下:
1)实现对两个文件数据进行合并,生成新文件3.txt
2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt
3)对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)
4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)
5)要求使用结构体和数组实现上述要求.
三、设计目的
1)培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。
2)巩固、深化学生的理论知识,提高编程水平,培养严谨的科学态度和良好的学习作风。
为今后学习其他计算机课程打下基础。
3)将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高编程序能力和创新意识。
四、概要设计
五、详细设计
1)主要数据结构:
structstudent
{
charname[6];
intnum;
longintchi;
longintmath;
longinteng;
longintsum;
};
2)模块功能:
合并模板、提取模板、排序模板、查询模板、模块功能
1、生成文件3:
实现对两个文件数据进行合并,生成新文件3.txt;
2、查看文件3:
显示文件3里的所有信息;
3、生成文件补考文件4:
抽取出三科成绩中有补考的学生并保存在一个新文件4.txt;
4、查看文件4:
显示文件4里的所有信息;
5、排序后的文件3:
对合并后的文件3.txt中的数据按总分降序排序(冒泡、插入);
6、查找学生信息:
按姓名查找学生的信息并输出结果(顺序、折半);
3)调用关系
主函数可调用其它函数
六、源程序
#include<
stdio.h>
stdlib.h>
structstudentstu1[100],stu2[100],stu3[100],stu4[100],t,tmp;
FILE*fp;
inti,j;
voidcreat1()//对1.txt的成绩进行读取
{inti;
for(i=1;
i<
=5;
i++)
fscanf(fp,"
%s%d%ld%ld%ld"
stu1[i].name,&
stu1[i].num,&
stu1[i].chi,&
stu1[i].math,&
stu1[i].eng);
printf("
\n1.txt中学生的成绩如下:
\n"
);
姓名学号语文数学英语\n"
i++)
printf("
%s%d%ld%ld%ld\n"
stu1[i].name,stu1[i].num,stu1[i].chi,stu1[i].math,stu1[i].eng);
}
voidcreat2()//对2.txt的成绩进行读取
for(j=1;
j<
j++)
stu2[j].name,&
stu2[j].num,&
stu2[j].chi,&
stu2[j].math,&
stu2[j].eng);
\n2.txt中学生的成绩如下:
stu2[j].name,stu2[j].num,stu2[j].chi,stu2[j].math,stu2[j].eng);
voidhb()//把合并后的成绩赋值到新的结构体数组stu3[a]中
inti;
{
stu3[i]=stu1[i];
}
for(i=6;
=6+j;
stu3[i]=stu2[i-5];
\n3.txt中所有学生的成绩名单:
姓名学号语文数学英语总分\n"
=10;
{stu3[i].sum=stu3[i].math+stu3[i].eng+stu3[i].chi;
%s%d%ld%ld%ld%ld\n"
stu3[i].name,stu3[i].num,stu3[i].chi,stu3[i].math,stu3[i].eng,stu3[i].sum);
fprintf(fp,"
intextract()//把成绩中需要补考的学生成绩保存在数组stu4[j]中
{intj;
j=1;
{
if(stu3[i].math<
60||stu3[i].eng<
60||stu3[i].chi<
60)
{
stu4[j]=stu3[i];
j++;
}
\n补考学生成绩名单如下:
j;
%5s%3d%4d%4d%4\n"
stu4[i].name,stu4[i].num,stu4[i].chi,stu4[i].math,stu4[i].eng);
%5s%3d%4d%4d%4d\n"
voidsort1()//冒泡排序
for(j=i+1;
{
if(stu3[j].sum>
stu3[i].sum)
{t=stu3[j];
stu3[j]=stu3[i];
stu3[i]=t;
}
\n按总分由高到低排序(冒泡)后的成绩如下:
voidsort2()//插入排序
for(i=2;
if(stu3[i].sum>
stu3[i-1].sum)
tmp=stu3[i];
stu3[i]=stu3[i-1];
for(j=i-1;
j>
0&
&
tmp.sum>
stu3[j].sum;
j--)
stu3[j+1]=stu3[j];
stu3[j+1]=tmp;
\n按总分由高到低排序(插入)后的成绩如下:
voidsearch1()//名字查找方式(顺序查找)
{
charfname[6];
\n请输入要查找学生的姓名:
"
scanf("
%s"
&
fname);
if(!
strcmp(stu3[i].name,fname))
\n你所查找(名字顺序)的学生成绩如下:
printf("
voidsearch2()//名字查找方式(折半查找)
intmid,low=1;
inthigh=10;
\n请输入要查找的学生的姓名:
while(low<
=high)
mid=(low+high)/2;
if(strcmp(stu3[mid].name,fname)==0)break;
elseif(strcmp(fname,stu3[mid].name)>
0)high=mid;
elselow=mid;
\n你所查找(名字折半)的学生成绩如下:
stu3[mid].name,stu3[mid].num,stu3[mid].chi,stu3[mid].math,stu3[mid].eng,stu3[mid].sum);
voidmain()
{chardigit;
printf("
***************************系统功能菜单*******************************\n"
---------------------------------------------------------\n"
************************************************************\n"
*1.读取3.txt的成绩(合并)**2.读取4.txt的成绩(补考)*\n"
*3.按总分排序(冒泡)**4.按总分排序(插入)*\n"
*5.按名字查找(顺序)**6.按名字查找(折半)*\n"
*7.退出系统*\n"
---------------------------------------------------------\n"
请选择菜单编号:
scanf("
%c"
digit);
switch(digit)
case'
1'
:
fp=fopen("
d:
\\1.txt"
"
r+"
creat1();
fclose(fp);
fp=fopen("
\\2.txt"
creat2();
\\3.txt"
w"
hb();
fclose(fp);
break;
2'
\\4.txt"
extract();
break;
3'
sort1();
4'
sort2();
5'
search1();
6'
search2();
case'
7'
break;
七、测试结果
1)合并:
2)排序:
冒泡排序:
插入排序:
3)抽出补考学生:
4)按姓名查找:
顺序查找:
折半查找:
八、心得体会
本系统设计是为了合并两个信息表,然后对信息表进行排序,从信息中查询信息。
由于C语言学的不扎实,编程时遇到了很多困难,开始调试的时候经常出现很多的错误,经常容易烦躁,但是经过一段的时间的锻炼使得我能够一步一步的去解决问题。
在程序设计方面,逐渐感觉到模块化设计的重要性,应该分析出功能模块,然后对其细节中的共性和特性作分析。
这次的设计,让我大大地感觉到,成功的程序设计是要建立在熟悉语言的基础之上的。
每一次程序设计能大大地增加对语言的熟悉和感知,能使理论与实际应用相结合,提高了自己组织数据及编写程序的能力。
培养了基本的、良好的程序设计技能以及合作能力。
在上机操作的过程中,培养了我实际分析问题、编程和动手能力,使我掌握了程序设计的基本技能,提高了我适应实际和实践编程的能力。
总的来说,这次课程设计让我获益匪浅,对数据结构也有了进一步的理解和认识。
九、参考文献:
1.数据结构(C语言版)严蔚敏,吴伟明清华大学出版社
2.C程序设计(第三版)谭浩强清华大学出版社
3.XX搜索