returnhead;
}
模块图如下:
流程图如下:
2.3修改功能的实现
以学号进行查找学生不及格的成绩,然后将其修改掉输出结果。
特别是要注意必须连接链表以便整个程序能正常的运行
代码如下:
student*change(structstudent*head,stringx)//查找修改功能
{structstudent*p,*q;
structstudent*h;
p=head;
if(p==NULL)
{cout<<"对不起!
数据库中没有任何数据,请先录入信息\n";
}
if(p!
=NULL)
{while(p->num!
=x&&p->next!
=NULL)//当不是要查找的内容时
{q=p;p=p->next;}//就继续往下找
if(p->num==x)//如果找到就输出相关信息
{cout<<"你查找学生的信息为\n\n";//以学好进行查找
cout<<"学号"<<'\t'<<"姓名"<<'\t'<<"数学"<<'\t'<<"英语"<<'\t'<<"c++"<<'\t'<<"体育"
<<'\t'<<"vb"<<'\t'<<"总分"<cout<num<<'\t'<name<<'\t'
<math<<'\t'<english<<'\t'<cpp<<'\t'<pe<<'\t'<vb
<<'\t'<sum<}//先查找出要修改的信息
intmath1,english1,cpp1,pe1,vb1;
if(p->math<60||p->english<60||p->cpp<60||p->pe<60||p->vb<60)//看有小于60的没
{if(p->math<60)
{cout<<"输入修改的数学成绩:
";
cin>>math1;
p->math=math1;
cout<}
if(p->english<60)
{cout<<"输入修改的英语成绩:
";
cin>>english1;
p->english=english1;
cout<}
if(p->cpp<60)
{cout<<"输入要修改的C++成绩:
";
cin>>cpp1;
p->cpp=cpp1;
cout<}
if(p->pe<60)
{cout<<"输入要修改的体育成绩:
";
cin>>pe1;
p->pe=pe1;
cout<}
if(p->vb<60)
{cout<<"输入要修改的VB成绩:
";
cin>>vb1;
p->vb=vb1;
cout<}
}
else
cout<<"没有查找学生的信息\n";
}
h=head;
returnh;
}
相关模块图如下:
修改过程模块图如下:
修改后的模块图如下:
流程图如下:
心得
一开始知道课题后,以为很简单,,老师建议我们选择了使用链表,它可以实现无序的在内存中存放,只要有一个头结点,就可以对整个链表进行相关的操作,在调式时遇到了很多问题,最多的是有些程序看起来很简单但是要把所有的连接在一起就有很多问题出现了,结果我发现链表的建立、查找、删除、插入以及修改还有指针这一块知识还得好好的加强,当我在编写学生成绩管理系统时,出现了许多问题,我到处查找资料同时也向老师和同学请教,经过一个星期的努力我总算实现了基本功能。
我现在体会到程序的调试是相当的重要的。
在使用指针时要特别注意用过后的指针不使用就要删除,已防出错。
链表的尾部要指向NULL,这点是很重要的。
学生成绩管理系统是我学C++以来遇见的比较复杂的程序了,因为它牵扯到很多知识,并且我以前的知识也不是很扎实。
编写这个程序,在如何进行成绩排序和修改上我费了些力气,虽然老师讲过几种排序方法,可是运用到单链表上就着实感到困难了,参考了相关资料和老师的指导这一功能总算实现了,通过和同学老师的讨论我学到了血多东西。
不管怎么说,这次课程设计还是锻炼了我编写程序的能力,对以前学过的知识有了进一不的了解,特别是链表这一知识点。
此次课程设计最大的收获是:
学会了自己学习。
教师评语
课程设计成绩:
老师签字:
设计人:
唐必春
2010年7月12日星期一