数据结构之学生成绩管理系统方案.docx
- 文档编号:11397019
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:20
- 大小:35.70KB
数据结构之学生成绩管理系统方案.docx
《数据结构之学生成绩管理系统方案.docx》由会员分享,可在线阅读,更多相关《数据结构之学生成绩管理系统方案.docx(20页珍藏版)》请在冰豆网上搜索。
数据结构之学生成绩管理系统方案
学生成绩管理系统
一、实验目的
1.通过此次课程设计中学生成绩管理系统的题目,掌握链表等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解;
2.将所学数据结构方面的知识与一门具体的语言——C语言来进行实现,感受数据结构的强大作用,加深理解。
二、试验要求
管理系统中有五个要求:
输入查找修改插入删除存储
(1)输入要求:
能够通过键盘输入和文件输入两种
(2)查找要求:
能够根据学生号查找单个学生的信息,也可以遍历所有学生信息
(3)修改要求:
能够根据学生号修改单个学生所有信息
(4)插入要求:
能够实现头插和尾插
(5)删除要求:
能够根据学生号删除单个学生信息
(6)存储要求:
通过链表存储所有信息
三、算法的思想与算法实现步骤
1.基本思想
通过链表数据类型进行基本操作,主要有三个模块:
分别是主函数模块、
主要操作函数及基本操作函数。
其中,主函数负责其他子函数的调用实现以及基本界面的操作
主要函数包括:
voidStuInput
voidStuSelect
voidStuAlter
voidStuInsert
voidStuDelect
voidStuSave
基本操作函数:
voidStuOutput
intStuImport
voidStuInputHand
voidStuInputFile
voidStuSelectErg
voidStuSelectNumFind
voidStuSelectSubFind
2.实现步骤
首先,分析题目要求划分实现模块,定义基本数据类型,诸如结构体、链表等;
其次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能;
最后,编写主函数对每个实现进行按需调用,实现操作。
3.流程图
四.代码:
#include
#include
#include
structStudent
{
charname[10];
charsubject[10];
intnum;
intgrade;
Student*next;
};
voidStuMain<>;//学生成绩管理系统的主函数,由main函数调用
voidStuInput
voidStuSelect
voidStuAlter
voidStuInsert
voidStuDelect
voidStuSave
voidStuOutput
intStuImport
voidStuOutput
{
printf<"学生__">;
printf<"%s",p->name>;
printf<"学生号:
">;
printf<"%d",p->num>;
printf<"科目:
">;
printf<"%s",p->subject>;
printf<"学生成绩:
">;
printf<"%d\n",p->grade>;
}
intStuImport
{
Student*Opinion=
Opinion=head->next;
printf<"学生__\n">;
scanf<"%s",p->name>;
printf<"学生号:
\n">;
scanf<"%d",&p->num>;
printf<"科目:
\n">;
scanf<"%s",p->subject>;
if =NULL> { if strcmp { printf<"该学生这门科目已有成绩,请重新输入\n">; return1; } Opinion=Opinion->next; } printf<"学生成绩: \n">; scanf<"%d",&p->grade>; return0; } voidmain<> { StuMain<>; } voidStuMain<> { chardecide='y';//定义while变量,函数是否继续进行 intnum=1;//定义switch变量,函数跳转到哪个子函数 Student*head;//定义链表的头指针 head= head->next=NULL;//初始化头指针 while ='n'> { printf<"***************************************************\n">; printf<"**********1输入2查找3修改4插入********\n">; printf<"**********5删除6存储7退出********\n">; printf<"***************************************************\n">; scanf<"%d",&num>; switch { case1: StuInput break; case2: StuSelect
break;
case3:
StuAlter
;break;
case4:
StuInsert
;break;
case5:
StuDelect
;break;
case6:
StuSave
;break;
default:
decide='n';
break;
}
};
}
voidStuInputHand
voidStuInputFile
voidStuInput
{
chardecide='y';//定义while变量,函数是否继续进行
intnum;//定义switch变量,函数跳转到哪个子函数
while ='n'> { printf<"***************************************************\n">; printf<"**1手动输入2文件输入3退出**\n">; printf<"***************************************************\n">; scanf<"%d",&num>; switch { case1: StuInputHand
break;
case2:
StuInputFile
;default:
decide='n';
break;
}
}
}
voidStuInputHand
{
if
{
Student*point=
point->next=NULL;
intdecide=1;
while =0> { Student*p= p->next=NULL; StuImport
if
{
head->next=p;
point=p;
}
else
{
point->next=p;
point=p;
}
printf<"是否继续:
1/0\n">;
scanf<"%d",&decide>;
}
}
else
printf<"管理系统中已存在信息,若想输入学生信息,请转插入子系统">;
}
voidStuInputFile
{
if
=NULL>
{
printf<"学生管理系统中已有信息,请跳转到插入选项\n">;
return;
}
FILE*fp;
printf<"请输入文件名〔包括物理地址\n">;
charfilename[10];
scanf<"%s",filename>;
if<
{
printf<"cannotopenfile\n">;
return;
}
Student*point=
Student*Opinion=
while
feof
Opinion=head->next;
Student*p=
p->next=NULL;
fread
,1,fp>;
if =NULL> { if strcmp { printf<"该文件中有重复学生信息,请验明再传输\n">; head->next=NULL; return; } Opinion=Opinion->next; } if { head->next=p; point=p; } else { point->next=p; point=p; } }; Opinion=head->next; while =NULL> { Opinion=Opinion->next; if Opinion->next=NULL; }; fclose printf<"传输成功\n">; } voidStuSelectErg voidStuSelectNumFind voidStuSelectSubFind voidStuSelect { chardecide='y';//定义while变量,函数是否继续进行 intnum;//定义switch变量,函数跳转到哪个子函数 while ='n'> { printf<"***************************************************\n">; printf<"****1遍历2学号查找3科目查找4退出****\n">; printf<"***************************************************\n">; scanf<"%d",&num>; switch { case1: StuSelectErg break; case2: StuSelectNumFind
break;
case3:
StuSelectSubFind
;break;
default:
decide='n';
break;
}
}
}
voidStuSelectErg
{
Student*p=
p=head->next;
inti=1;
while
=NULL>
{
printf<"第%d位学生信息:
\n",i>;
StuOutput
;
p=p->next;
i++;
}
}
voidStuSelectNumFind
{
intnum;
printf<"输入想要查找学生的学生号:
\n">;
scanf<"%d",&num>;
Student*p=
p=head->next;
inti=1;
while
=NULL>
{
if
{
StuOutput
;
i++;
}
p=p->next;
}
if
printf<"没有该学生信息">;
}
voidStuSelectSubFind
{
charSub[10];
printf<"输入想要查找科目:
\n">;
scanf<"%s",Sub>;
Student*p=
p=head->next;
inti=1;
while
=NULL>
{
if
strcmpsubject>>
{
StuOutput
;
i++;
}
p=p->next;
}
if
printf<"没有该学生信息">;
}
voidStuAlter
{
intnum;
printf<"输入想要查找学生的学生号:
\n">;
scanf<"%d",&num>;
charSub[10];
printf<"输入想要查找科目:
\n">;
scanf<"%s",Sub>;
Student*p=
p=head->next;
inti=1;
while
=NULL>
{
if
strcmpsubject>>
{
printf<"输入修改成绩:
\n">;
scanf<"%d",&p->grade>;
printf<"修改成功\n">;
i++;
}
p=p->next;
if
printf<"没有该学生信息">;
}
}
voidStuInsert
{
Student*point=
point=head->next;
while
=NULL>
point=point->next;//找到尾结点
chardecide='y';//定义while变量,函数是否继续进行
intnum;//定义switch变量,函数跳转到哪个子函数
while ='n'> { printf<"***************************************************\n">; printf<"****1头插2尾插3退出****\n">; printf<"***************************************************\n">; scanf<"%d",&num>; Student*p= switch { case1: StuImport
p->next=head->next;
head->next=p;
printf<"插入成功\n">;
break;
case2:
StuImport
;point->next=p;
p->next=NULL;
printf<"插入成功\n">;
break;
default:
decide='n';
break;
}
}
}
voidStuDelect
{
intnum;
printf<"输入想要删除学生的学生号:
\n">;
scanf<"%d",&num>;
charSub[10];
printf<"输入想要删除科目:
\n">;
scanf<"%s",Sub>;
Student*p=
p->next=head->next;
inti=1;
while
=NULL>
{
if
strcmpnext->subject>>
{
StuOutput
printf<"是否删除:
1/0\n">;
scanf<"%d",&i>;
if
strcmpnext->subject>>
{
head->next=head->next->next;
}
else
{
p->next=p->next->next;
}
i=2;
printf<"删除成功\n">;
break;
}
p=p->next;
}
if
printf<"没有该学生信息\n">;
}
voidStuSave
{
FILE*fp;
charfilename[10];
printf<"请输入存储文件名〔包括物理地址\n">;
scanf<"%s",filename>;
Student*p=
p=head->next;
if<
{
printf<"cannotopenfile">;
return;
}
printf<"inputdata:
/n">;
while
=NULL>
{
fwrite
,1,fp>;/*成块写入文件*/
p=p->next;
}
fclose
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 学生 成绩管理系统 方案