C语言实验报告学生信息资源管理系统课件Word文档下载推荐.docx
《C语言实验报告学生信息资源管理系统课件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言实验报告学生信息资源管理系统课件Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
找到就输出此学生全部信息。
5、统计功能能:
用函数voidstat(STUDENT*data,intlen)来实现。
6、退出系统:
可用一个函数exit()来实现,首先将信息保存
到文件中,释放动态创建的内存空间,再退出此程序。
三、程序编写
#include<
stdlib.h>
stdio.h>
string.h>
#defineMAXN35
#defineMaxsize325
typedefstructstudent//学生信息
{
intno;
charname[Maxsize];
charsex[Maxsize];
charage[Maxsize];
charadress[Maxsize];
charglassnum[Maxsize];
doubleChinese;
doublemath;
doubleEnglish;
doublemark_ave;
doublemark_tot;
}STUDENT;
/*-----------输入信息子程序---------*/
voidinput(STUDENT*data,int*len)
putchar('
\n'
);
printf("
%s\n"
"
请输入新的记录,如果需要退出当前菜单请输入
-1."
格式:
\n学号\n"
姓名性别年龄地址班级学号语文数学英
语"
如:
\n"
1\n"
张三939589\n"
scanf("
%d"
&
no);
while(no!
=-1){
data[*len].no=no;
%s%s%s%s%s%lf%lf%lf"
data[*len].nam&
e,data[*len].sex,
&
data[*len].age,&
data[*len].adress,&
data[*len].glassnum,&
data[*le
n].Chinese,&
data[*len].math,&
data[*len].English);
data[*len].mark_ave=(data[*len].Chinese+data[*len].math+data[*le
n].English)/3.0;
data[*len].mark_tot=data[*len].Chinese+data[*len].math+data[*l
en].English;
(*len)++;
}
/*---------------输出信息子程序---------------*/
voidoutput(STUDENT*data,intlen)
inti;
system("
cls"
%8s"
姓名"
性别"
年龄"
地址"
班级"
语文"
数学"
%10s"
英语"
%12s"
平均分"
总分"
for(i=0;
i<
80;
i++)
='
for(i=0;
i<
len;
%8d"
data[i].no);
data[i].name);
data[i].sex);
data[i].age);
data[i].adress);
data[i].glassnum);
%8.1lf"
data[i].Chinese);
data[i].math);
%10.1lf"
data[i].English);
%12.1lf"
data[i].mark_ave);
data[i].mark_tot);
按回车键继续."
getchar();
/*--------------排序子程序------------*/
voidsort(STUDENT*data,intlen)
inti,j,k;
STUDENTtemp;
for(i=0;
len-1;
i++){
for(k=i,j=i+1;
j<
len;
j++)
if(data[k].mark_ave>
data[j].mark_ave)k=j;
if(k!
=i){
temp=data[i];
data[i]=data[k];
data[k]=temp;
/*--------------------查询子程序-----------------------*/
voidfind(STUDENT*data,intlen)
intfind_no,result;
lab:
result=0;
请输入需要查找的学生的学号,退出当前菜单
请输入-1."
find_no);
if(find_no==-1)return;
/*exitthefinesubprogram*/
while(data[result].no!
=find_no&
result<
len)result++;
if(result>
=len){
未查询到相关信息"
gotolab;
else{
查询信息如下:
"
学号"
data[result].no);
data[result].name);
data[result].sex);
data[result].age);
data[result].adress);
data[result].glassnum);
data[result].Chinese);
data[result].math);
data[result].English);
data[result].mark_ave);
data[result].mark_tot);
/*---------------统计子程序------------*/
voidstat(STUDENT*data,intlen)
intno_59=0,no_69=0,no_79=0,no_89=0,no_100=0;
i<
if(data[i].mark_ave<
=59)no_59++;
elseif(data[i].mark_ave<
=69)no_69++;
=79)no_79++;
=89)no_89++;
elseno_100++;
分数"
0--59"
60--69"
70--79"
80--89"
90--100"
学生"
%10d"
no_59);
no_69);
no_79);
no_89);
no_100);
按回车键返回"
/*---------------显示信息子程序------------*/
voidpaint()
%55s\n"
“信计二班学生成绩管理系统\n"
制作者:
XX\n"
1输入信息2输
出信息\n"
3按平均分排序4按
学号查找\n"
5按平均分输出统计信息6保
存到文件\n"
0退出\n"
=79;
请输入各操作对应的序号:
"
voidsave(STUDENT*data,intlen)/将/数据保存到文件
FILE*fp;
fp=fopen("
成绩统计表.txt"
"
w"
fprintf(fp,"
学号"
姓名"
性别"
年龄"
地址"
班级"
语文"
数学"
%10s\n"
==================================================
======================\n"
%10.1lf\n"
fclose(fp);
文件已保存到\"
成绩统计表.txt\"
/*-----------主程序--------------*/
voidmain()
STUDENTdata[MAXN];
intlen=0;
charctrl_ch;
paint();
%c"
ctrl_ch);
while(ctrl_ch!
='
0'
){
;
case'
1'
:
input(data,&
len);
break;
case'
2'
output(data,len);
3'
sort(data,len);
4'
find(data,len);
5'
insert(data,&
6'
delete_item(data,&
7'
stat(data,len);
8'
save(data,len);
default:
if(ctrl_ch!
)printf("
输入错误!
)paint();
四、误差分析
此程序没有按加权平均排序功能是本程序的一大弊端,还有就是
所列科目少了点,由于本课题中的许多知识点都没有学过,需要查找
课外资料,所以如有错误,希望老师多多指正,谢谢!