学生成绩管理系统数据结构完整版Word格式文档下载.docx
- 文档编号:19959183
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:14
- 大小:89.87KB
学生成绩管理系统数据结构完整版Word格式文档下载.docx
《学生成绩管理系统数据结构完整版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构完整版Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
指导教师:
_______________
年月日
一.问题描述
二.基本要求
三.数据结构
structstudent
{
charnum[10];
/*学号*/
charname[20];
/*姓名*/
intfgrade;
/*佛学成绩*/
intcgrade;
/*C语言成绩*/
integrade;
/*英语成绩*/
inttotal;
/*总分*/
}st[100];
四.总体设计
1.结构图
图
2.流程图
录入函数
排序函数
查询函数
按学号查询函数
按姓名查询函数(同上)
五.详细设计
1.录入模块
定义一个结构structstudent和数组st[N]用来储存N个学生的所有信息(学号st[i].num、姓名st[i].name、佛学成绩st[i].fgrade、C语言成绩st[i].cgrade、英语成绩st[i].egrade)。
通过for循环输入所有学生信息。
用printf语句提示需要输入的内容,接着用scanf语句输入相应内容。
输入完毕后套用保存函数save(m)将所输入的信息写入指定文件。
2.浏览模块
声明整形变量i和count,其中记录输出的学生序数,count用来接收调用浏览函数时所传递过来的实参,将其值传递给导出函数load(m),使得导出的学生人数与浏览的学生人数保持一致。
通过调用load函数后(即给em数组赋值),用for循环输出每一个学生的各种信息。
3.排序模块
声明整形变量i,j和结构体变量structstudenttemp,用for循环实现排序功能,利用冒泡法,以st[i].total<
st[j].total为条件进行排序。
最后用printf输出排序结果。
4.查找模块
声明整型变量k,先用printf语句显示查询菜单,用scanf输入选择的查询方式的代号,用switch(k)进入所选择的具体查询函数,包括学号查询,姓名查询两种方式。
学号查询中,用scanf语句输入需要查询的学号,并赋值给num。
用for循环,循环主体判断em[i].num中是否有输入的学号。
如果有,用printf语句输出与学号相对应的该学生的所有信息,再跳出循环。
按姓名查询与此方法类似,不再叙述。
六.测试与调试
1.运行程序,进入主菜单
图主菜单
2.输入数字“1”,创建学生信息
图输入职工信息
3.输入数字“2”,浏览学生信息
图浏览职工信息
4.输入数字“3”,按总分排序
图按总分排序
5.输入数字“4”,查询学生信息
选择查询方式“1”
图按学号查询
选择查询方式“2”
图按姓名查询
七.源程序清单
#include<
>
voidmenu();
voidinput();
voidsave(intm);
voidsave();
voiddisplay();
voidsearch();
voidsearch_num();
voidsearch_name();
voidsort_total();
intload();
/*定义各函数*/
intm;
voidmain()
menu();
intn=0,flag;
chara;
do
{
printf("
请选择你需要操作的步骤(1--4):
\n"
);
scanf("
%d"
&
n);
if(n>
=0&
&
n<
=4)
{
flag=1;
break;
}
else
flag=0;
printf("
您输入有误,请重新选择!
"
}
while(flag==0);
while(flag==1)
switch(n)
case1:
printf("
\n◆◆◆输入学生信息◆◆◆\n"
input();
break;
case2:
\n◆◆◆浏览学生信息◆◆◆\n"
display();
case3:
\n◆◆◆按总分排序◆◆◆\n"
sort_total();
case4:
\n◆◆◆查询学生信息◆◆◆\n"
search();
case0:
exit(0);
default:
getchar();
是否继续运行(yorn):
%c"
a);
if(a=='
y'
)
system("
cls"
/*清屏*/
menu();
/*调用菜单函数*/
请再次选择你需要操作的步骤(1--4):
scanf("
exit(0);
}
voidmenu()/*菜单函数*/
printf("
**************欢迎进入学生信息管理系统**************\n"
1.录入学生信息\n"
2.浏览学生信息\n"
3.按总分排序\n"
4.查询学生信息\n"
0.退出\n"
**********************谢谢使用**********************\n"
voidinput()/*输入学生信息并保存*/
inti;
请输入需要创建信息的学生人数(1--10):
scanf("
m);
for(i=0;
i<
m;
i++)
请输入学号:
%s"
st[i].num);
请输入姓名:
st[i].name);
请输入佛学成绩:
st[i].fgrade);
请输入C语言成绩:
st[i].cgrade);
请输入英语成绩:
st[i].egrade);
st[i].total=st[i].fgrade+st[i].cgrade+st[i].egrade;
/*信息输入已经完成*/
save(m);
return;
/*返回主界面*/
voiddisplay()/*浏览学生信息*/
intcount=0;
m=load();
\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n"
/*输出学生信息*/
m+count;
i++)
\n%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n"
st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egrade,st[i].total);
voidsort_total()/*按总分排序*/
inti,j;
structstudenttemp;
/*声明结构体变量*/
\t学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n"
for(i=0;
i++)/*对数据进行排序*/
for(j=i+1;
j<
j++)
if(st[i].total<
st[j].total)
{
temp=st[i];
st[i]=st[j];
st[j]=temp;
}
\n\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n"
voidsearch()/*查询函数*/
intk;
/*定义局部变量*/
\n按学号查询请按1,\t按姓名查询请按2\n"
\n请输入查询方式:
k);
switch(k)/*查询方式的选择*/
search_num();
/*按学号查询*/
case2:
search_name();
/*按姓名查询*/
\nPressanykeytoentermenu......"
getchar();
/*返回主界面*/
voidsearch_num()/*
(1)按学号查找*/
chartemp[30];
\n请输入要查找的学号:
temp);
for(i=0;
if(strcmp(temp,st[i].num)==0)
voidsearch_name()/*
(2)按姓名查找*/
\n请输入要查找的姓名:
if(strcmp(temp,st[i].name)==0)
intload()/*导入函数*/
FILE*fp;
intn=0;
if((fp=fopen("
student_list"
"
rb"
))==NULL)
cannotopenfile\n"
exit(0);
else
do
fread(&
st[n],sizeof(structstudent),1,fp);
n++;
while(feof(fp)==0);
fclose(fp);
return(n-1);
voidsave(intm)/*保存文件函数*/
wb"
))==NULL)/*创建文件并判断是否能打开*/
i++)/*将内存中学生的信息输出到磁盘文件中去*/
if(fwrite(&
st[i],sizeof(structstudent),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据结构 完整版