数据结构课程设计报告学生作业完成情况管理系统.docx
- 文档编号:2314648
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:28
- 大小:256.70KB
数据结构课程设计报告学生作业完成情况管理系统.docx
《数据结构课程设计报告学生作业完成情况管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告学生作业完成情况管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
数据结构课程设计报告学生作业完成情况管理系统
2.概要设计……………………………………………………………………………………………2
2.1学生作业完成情况管理系统………………………………………………………2
2.1.1程序设计说明……………………………………………………………………2
2.1.2数据结构类型……………………………………………………………………4
2.2图的建立及存储…………………………………………………………………………4
2.2.1程序设计说明……………………………………………………………………4
2.2.2数据结构类型……………………………………………………………………4
3.1算法流程图…………………………………………………………………………………5
3.1.1学生作业完成情况管理系统………………………………………………5
3.1.2图的建立及存储…………………………………………………………………6
4.2图的建立及存储…………………………………………………………………………30
1.需求分析
(1)学生作业完成情况管理系统
假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。
学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。
该程序应该具有下列功能:
(1)输入信息;
(2)输出信息;
(3)给定条件,修改、删除相应信息;
(4)按条件统计。
(2)图的建立及存储
建立图的存储结构(图的类型可以是有向图、无向图),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。
应用环境设定给定某类图的顶点和边的相关信息,要求输出该图的邻接矩阵。
用户界面命令行界面,用户选择所要建立的图的类型,输入相关顶点和边的信息,然后输出该图的邻接矩阵。
输入方式首先输入所要建立的图形类型的代码,然后输入顶点vexnum和边的数量arcnum,再输入顶点信息,边的2个端点v1和v2,如果建立的是网则还要输入权值w。
输出方式输出的是一个邻接矩阵,采用for循环嵌套,输出该图的邻接矩阵。
数据存储方式全部在内存存放,不使用硬盘上的文件或其他数据源,程序执行过程中和结束后不保存数据。
程序功能:
1.输入图的类型;
2.输入相应的图的顶点和边的相关信息;
3.得到图的邻接矩阵。
2.概要设计
2.1学生作业完成情况管理系统
2.1.1程序设计说明
程序整体分为登录部分、获得数据部分、数据处理及处理信息反馈部分、数据导出保存部分,如下结构图1、2所示:
图1
通过选择,显示各类统计数据
图2
该程序具有下列功能:
(1)输入信息;
(2)输出信息;
(3)给定条件,修改、删除相应信息;
(4)按条件统计。
2.1.2数据结构类型
typedefstructstudent//学生信息链表
{
charname[10];
intschoolnumber;
intclassnumber;
floatscore[10];
structstudent*next;
}stu,*stupt;
stuptst=NULL;//学生信息的头指针
stuptqt=NULL;//学生信息的尾指针
FILE*fp;//文件指针
2.2图的建立及存储
2.2.1程序设计说明
本程序通过输入有向图与无向图的顶点、边、权值等信息,存储至用数组建立的邻接矩阵,并输出该邻接矩阵图。
2.2.2数据结构类型
基本操作:
typedefenum
{
DG,UDG
}GraphKind;//有向图,无向图
typedefstructArcCell
{
VrTypeadj;//顶点关系类型。
对无权图,用1或0表示相邻否;对带权图,则为权值类型。
InfoType*info;//该弧相关信息的指针
}ArcCell,AdjMatrix[20][20];
typedefstruct
{
VertexTypevertex[20];//顶点向量
AdjMatrixarcs;//邻接矩阵
intvexnum,arcnum;//图的当前顶点数和弧(边)数
GraphKindkind;//图的种类标志
}MGraph;
CreateGraph(MGraph&G)
初始条件:
图G未创建。
操作结果:
创建一个图G。
CreateUDG(MGraph&G);
初始条件:
无向图G未创建。
操作结果:
创建一个无向图并求出其邻接矩阵。
CreateDG(MGraph&G);
初始条件:
有向图G未创建。
操作结果:
创建一个有向图并求出其邻接矩阵。
DDisplay(MGraphG)
。
初始条件:
图G已创建。
操作结果:
输出图G的邻接矩阵。
3.详细设计
3.1算法及流程图
3.1.1学生作业完成情况管理系统
程序算法:
手动输入学生信息:
voidinpu(stuptp)
{
intn;
intm=0;
intflag;
while(m<10)//成绩初始化为0
{
p->score[m]=0;
m++;
}
printf("请输入:
姓名:
");
scanf("%s",p->name);
clear();
printf("请输入:
学号:
");
scanf("%d",&p->schoolnumber);
clear();
printf("请输入:
班级(如:
101):
");
scanf("%d",&p->classnumber);
clear();
do
{
printf("请输入:
第几次作业(1~10):
");
scanf("%d",&n);
clear();
printf("请输入:
该次作业成绩:
");
scanf("%f",&p->score[n-1]);
clear();//清空缓冲区
printf("是否继续输入该生成绩,退出请按q,其他键继续:
");
flag=getchar();
clear();//清空缓冲区堆积
}
while(flag!
='q');
}
从文件中导入学生信息:
voidreadfile(stupt&st,FILE*fp)
{
charflag,flag_1;
charfilename[90];
printf("如导入前有过手动输入,请先导出至文件后再进行导入,否则输入部分的数据将丢失!
\n");
printf("任意键继续,退出请按q:
");
flag_1=getchar();//等待接收一个字符
clear();
if(flag_1=='q')
{
return;
}
lab_2:
printf("请选择:
a.程序默认路径导入(之前导出时需要是默认导出)b.自定义导入路径(请确保导入路径合法):
");
flag=getchar();
clear();
if(flag=='b')
{
printf("请输入导入路径(请确保导入路径合法!
)(如c:
.\\student_homework_infor.txt):
");
scanf("%s",filename);
clear();
if(access(filename,0)==1)//确定文件或文件夹的访问权限即检查文件的存取方式,如果存取方式有效,则返回0,否则返回1
{
printf("路径不合法或文件不存在,请重新选择!
\n");
gotolab_2;
}
fp=fopen(filename,"rb");
if(fp==NULL)
{
printf("打开%s文件失败,请返回主菜单重试!
\n",filename);
return;
}
else
filep_read_to_st(st,fp);//导入文件
fclose(fp);
}
elseif(flag=='a')
{
fp=fopen("student_homework_infor.txt","r");
if(access("student_homework_infor.txt",0)==1)
{
printf("文件不存在!
\n");
}
if(fp==NULL)
{
printf("打开程序所在目录下的student_homework_infor.txt文件失败,请返回上层菜单重试!
\n");
return;
}
else
filep_read_to_st(st,fp);
fclose(fp);
}
else
{
printf("非法输入!
程序将返回上层菜单...\n");
}
}
查询某学生作业完成情况:
voidsearch_1(stupt&st,intsnum)
{
stuptp,q;
if(st==NULL)
{
printf("未建立学生信息表,请返回上层菜单输入或导入所有学生的信息\n");
return;
}
else
{
p=st;
q=p->next;
}
if(p->schoolnumber==snum)
{
printf_score(p);//查找成功输出并返回上级函数
return;
}
while(q!
=NULL)
{
if(q->schoolnumber==snum)
{
printf_score(q);//查找成功输出并返回上级函数
return;
}
q=q->next;//下一个
}
printf("查询失败,该学号学生信息不存在\n");
}
查询某班级所有学生成绩:
voidsearch_2(stuptst,intclnum)
{
stuptp,q;
intf=0;
if(st==NULL)
{
printf("未建立学生信息表,请返回主菜单输入所有学生的信息\n");
return;
}
else
{
p=st;
q=p->next;
}
printf("班级姓名学号成绩1成绩2成绩3成绩4成绩5成绩6成绩7成绩8成绩9成绩10\n");
printf("──────────────────────────────────────\n");
if(p->classnumber==clnum)
{
printf_infor(p);
f++;
}//查找成功输出
while(q!
=NULL)
{
if(q->classnumber==clnum)
{
printf_infor(q);
f++;
}//查找成功输出
q=q->next;//下一个
}
if(f==0)
{
printf("没有该班级学生信息\n");
}
}
修改学生信息:
voidchange(stupt&p)
{
char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 学生 作业 完成 情况 管理 系统