数据结构 学生信息管理系统文档格式.docx
- 文档编号:22521771
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:8
- 大小:16.78KB
数据结构 学生信息管理系统文档格式.docx
《数据结构 学生信息管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构 学生信息管理系统文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
一、首先是文件的读写过程,因为对语法规则了解的不多,所以浪费了很多时间。
原先试图采用“fread”和“fwrite”来实现读写过程,估计是二进制和字符转换还有回车键处理得不好,显示时有乱码;
最后决定采用“fprint”和“fscanf”这两个比较容易操作的函数,问题得到了解决。
第一个函数“voidread()”设计完成。
二、求最大值是老问题,很好解决,但题目还要求显示出重复的最大值的位置。
开始设想在比较最大值的同时记录并列数据的位置,但遇到一个更大的数据时,前面记录的重复数据就要被清空并重新记录,代码有些繁琐;
最后采用先用一个循环判断出最大值,再用一个循环判断是否有并列的数据,并记录其位置(“num[j]”记录的是位置,“j”是并列最大值的个数)。
三、计算平均成绩也比较简单,采用“if”语句就能够解决。
四、成绩分类时使用了“switch语句”。
程序代码:
/*程序目的:
从磁盘读取数据,分析整理后将新数据显示出来并保存之新文件*/
/*作者:
陈扬君*/
/*完成时间:
2008年6月20日*/
#include"
stdio.h"
#defineSIZE10//原数据的序列数
voidread();
//声明读取数据函数
voidmax_score();
//声明求最大值的函数
voidaverage();
//声明求平均数的函数
voidrow();
//声明排列顺序的函数
structstudent//定义student结构体
{
intnum;
charname[10];
floatscore;
}stud[SIZE];
voidmain()
read();
//调用读取数据函数
max_score();
//调用求最大值的函数
average();
//调用求平均数的函数
row();
//调用排列顺序的函数
}
voidread()//定义读取数据函数
FILE*fp;
inti;
if((fp=fopen("
stuin.txt"
"
r+"
))==NULL)//如果文件无法打开则显示提示信息
{
printf("
can'
topenfile!
\n"
);
return;
}
学生成绩如下:
for(i=0;
i<
SIZE;
i++)//读取数据并显示数据
fscanf(fp,"
%d%s%f"
&
stud[i].num,stud[i].name,&
stud[i].score);
printf("
%d%s%3.1f\n"
stud[i].num,stud[i].name,stud[i].score);
fp=fopen("
stuout.txt"
w+"
//创建新文档并将显示的数据保存
fprintf(fp,"
i++)
fprintf(fp,"
fclose(fp);
voidmax_score()//定义求最大值的函数
floatm;
intnum[SIZE];
//确定最大值所在的位置
inti,j=0,k;
m=stud[0].score;
num[j]=0;
i++)//先求出最大值,赋值给m,并记录其位置num[j]
if(m<
stud[i+1].score)
{
m=stud[i+1].score;
num[j]=i+1;
}
i++)//记录重复的最大值的位置,j即为重复的次数
if(m==stud[i+1].score)
num[j++]=i+1;
a+"
//将新数据追加至stuout.txt文件
\n成绩最高的学生是:
j;
k=num[i];
stud[k].num,stud[k].name,stud[k].score);
}
voidaverage()//定义求平均数的函数
floatave,sum=0;
inthigh=0,low=0,equ=0,i;
i++)//求出总分
sum+=stud[i].score;
ave=sum/SIZE;
//计算平均分
i++)//判断并计数各档次的人数
if(ave>
stud[i].score)low++;
if(ave<
stud[i].score)high++;
if(ave==stud[i].score)equ++;
\n平均成绩为:
%4.2f\n"
ave);
高于平均成绩的有%d个,占总人数的%3.1f%%\n"
high,high*1.0/SIZE*100);
低于平均成绩的有%d个,占总人数的%3.1f%%\n"
low,low*1.0/SIZE*100);
等于平均成绩的有%d个,占总人数的%3.1f%%\n"
equ,equ*1.0/SIZE*100);
//追加新数据
voidrow()//定义排列顺序的函数
inti,score,perfect=0,good=0,medium=0,pass=0,failed=0;
//定义各档次人数的变量
score=(int)stud[i].score/10;
//依靠分数判断属于哪个档次
switch(score)//计数
case10:
perfect++;
break;
case9:
case8:
good++;
case7:
medium++;
case6:
pass++;
default:
failed++;
\n优秀(100~90)的有%d人\n"
perfect);
良好(89~80)的有%d人\n"
good);
中等(79~70)的有%d人\n"
medium);
及格(69~60)的有%d人\n"
pass);
不及格(59~50)的有%d人\n"
failed);
个人总结:
通过设计本程序,我了解了大型程序的开发步骤,熟悉了C语言中重要语句和函数的用法,提高了自己分析问题解决问题的能力;
同时也看到了自己在一些细节问题上容易粗心大意的毛病。
总之,通过设计这个程序,我自身的到了锻炼。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 学生信息管理系统 学生 信息管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)