数据结构报告 学生成绩管理系统.docx
- 文档编号:28824250
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:20
- 大小:172.20KB
数据结构报告 学生成绩管理系统.docx
《数据结构报告 学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构报告 学生成绩管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
数据结构报告学生成绩管理系统
数据结构报告学生成绩管理系统
2009-6-27
学生成绩管理系统的设计和使用
数据结构是计算机专业的教学计划中的核心课程之一,数据结
构在计算机科学中是一门综合性的专业基础课。
“数据结构”的研究
不仅涉及到计算机硬件(特别是编码理论、存储装置和存取方法等)的
研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译
程序还是操作系统,都涉及到数据元素在存储器中的分配问题。
在研
究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更
为方便。
因此,可以认为“数据结构”是介于数学、计算机硬件和计
算机软件三者之间的一门核心课程。
在计算机科学中,“数据结构”
不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是
设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型
应用程序的重要基础。
通过对学生管理的系统的学习和设计,了解对指针、串、排序各种
函数的调用以及C++程序设计的应用。
并通过指针、串、排序和函数来实
现学生成绩管理的程序设计。
对于学生成绩管理系统的具体要求:
通过程序的设计能够比较准确
的实现对学生成绩的输入、修改、查询、删除、输出、求平均成绩。
通过学生成绩管理系统课程设计,进一步掌握管理信息系统的理论和
方法,培养和锻炼开发管理信息系统的能力。
为今后信息系统开发打
下良好的基础。
:
VC++语言
本程序通过指针、串、排序为主体来实现,主要包括一个主程序
和八个子程序,其中八个子程序主要分别实现程序的输入、显示、排
序、查找、删除、插入和清空成绩的输出及求总成绩。
程序运行,刚
开始出现一个主界面供使用者选择所要进行的功能。
然后选择所要进
行的功能:
1:
增加成绩功能:
即完成对成绩的输入,通过调用用于添加数据的
子函数inputs来实现对所有学生成绩的输入。
2:
显示成绩功能:
显示出你说输入的所有学生的成绩列表。
并且在
最后输出它们的总成绩。
3:
排序成绩功能:
通过冒泡排序的方法对学生的总成绩进行排序。
4:
查找成绩功能:
通过输入姓名调用查找函数来实现对某些学生成
绩的查询。
5:
删除成绩功能:
调用删除函数通过姓名删除该同学的成绩。
6:
插入成绩功能:
当需要再次输入一部分同学的成绩时,调用插入
函数来实现对一些新同学成绩的输入。
7:
清空成绩功能:
把以前输入的所有学生的成绩清空成空的,可以
实现对学生成绩的重新输入。
8:
求总成绩功能:
实现对所输入的所有同学的成绩进行求总。
最后退出系统功能:
退出系统
main()
Inputs()
a=1a=8
输出成绩stud:
:
inserta=2
a=6插入学生成
绩
if(headswitch(a)Error==NULL
if(head)
Error==NULL
)
a=3
a=7
完成排序a=5
a=4
stud:
:
find)
stus.clearstus.del)
if(head
==NULL输入姓名
)
清空链表
输入姓名
Error输出成绩列
表删除学生
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
structstudent
{
charname[10];///姓名charid[10];///学号floatYnum;///语文分数floatSnum;///数学分数floatEnum;///英语分数floatnumber;///总分student*next;
};
///////////-------定义类-----------------------////////////
classstud
{
student*p1,*p2,*head;
public:
~stud()/////----析构函数------------------------{
while(head)
{
p1=head->next;
deletehead;
head=p1;
}
}
///------------成员函数------------
voidoutput(student*head);//输出学生成绩
student*input(student*head);//增加学生记录
student*del(student*head,char*p);//删除记录student*find(student*head,char*p,int&n);//查找学生记录(可查找多个同名数据)
student*stat(student*head);//排序统计学生总分
friendvoidtotal(student*head);//统计学生总分student*insert(student*head);//按学生总分插入记录
student*clear(student*head);//删除当前表
voidInputs(student*p);//用于添加数据的子函数
};//----------------------------------------------------
////---------用于添加数据的子函数-------///////
voidstud:
:
Inputs(student*p)
{
cout< < cin>>p->name>>p->id; cin>>p->Ynum; while(cin.fail()) {cerr<<"您的输入有误,请重新输入"< cin.clear(); cin.sync(); cin>>p->Ynum; } cin>>p->Snum; while(cin.fail()) {cerr<<"您的输入有误,请重新输入"< cin.sync(); cin.clear(); cin>>p->Snum; } cin>>p->Enum; while(cin.fail()) {cerr<<"您的输入有误,请重新输入"< cin.clear(); cin.sync(); cin>>p->Enum; } total(p);//计算出总分 } ////////-----输出学生成绩-----------------///////////////////// voidstud: : output(student*head) {p1=head; while(p1! =NULL) { cout< < < < p1=p1->next; } } /////////------------插入学生成绩记录--------//////////////// student*stud: : insert(student*head){ p1=newstudent; Inputs(p1);//调用子函数增加数据 p2=head; student*p3=NULL; while((p2->number =NULL) {p3=p2; p2=p2->next; } if(p2->number>p1->number) {p1->next=p2; if(p3==NULL)//若当前值是最小的 returnp1; p3->next=p1; returnhead; } else {p2->next=p1; p1->next=NULL; returnhead; } } //////----------清空数据------------///////////// student*stud: : clear(student*head){ while(head) {p1=head->next; deletehead; head=p1; } returnhead; } //////////-----------排序统计函数-----------///////////////// student*stud: : stat(student*head) { p2=head; p1=p2->next; while(p2->next)//冒泡泡法,呵呵`~~~ { if(p2->number>p1->number) {//把头指针指向当前比较小的节点 p2->next=p1->next; p1->next=head; head=p1; //把用于比较的两个指针复位 //p2=head; p1=p2->next; } else {//指向下一个节点 p2=p2->next; p1=p2->next; }//------------------------------------------- } cout<<"当前表以按学生总分排序成功"< returnhead; } /////-----------删除记录-----------////////////////////// student*stud: : del(student*head,char*p) { p1=head; p2=NULL; while(strcmp(p1->name,p)&&p1->next! =NULL) {p2=p1; p1=p1->next; } if(! strcmp(p1->name,p)) { if(p1==head) head=p1->next; else p2->next=p1->next; cout<<"删除成功,OK"< deletep1; } else cout<<"没找到姓名"< returnhead; } ///////----------统计总分---------------/////////////// voidtotal(student*p) {p->number=p->Ynum+p->Snum+p->Enum; } ///////-------------查找函数----------/////////////////// student*stud: : find(student*head,char*p,int&n){ p2=head; while(strcmp(p2->name,p)! =0&&p2->next! =NULL) p2=p2->next; if(0==strcmp(p2->name,p)) { cout< < < < n++; returnp2; } else if(n==0) { system("cls"); cout<<"对不起,没有您要查找的学生数据"< } returnNULL; } ///////----------------增加学生记录-----------//////////////////////////// student*stud: : input(student*head) {p1=newstudent; p2=head; Inputs(p1);//调用子函数增加数据 if(head==NULL) { head=p1; p1->next=NULL; returnhead; } while(p2->next! =NULL) p2=p2->next; p2->next=p1; p1->next=NULL; returnhead; } //-----------输出错误-----------////////// voiderror() { cout<<"错误,这还是一张空表,请输入数据"< getch(); } ///////////////////------------main函数--------//////////////////----------- intmain() { studstus; student*head=NULL; student*pd;//临时指针,用于查找函数 charchoice;//用于存放用户的选择项 charname[10];//查找,删除记录的key while (1) {system("cls"); cout<<"***************计算机四班(24020704)李达2402070414*************"< cout<<"****************学生成绩管理系统 *************"< cout<<"********** ******"< cout<<"****************1.增加学生成绩****************"< cout<<"****************2.显示学生成绩****************"< cout<<"****************3.排序统计成绩****************"< cout<<"****************4.查找学生成绩****************"< cout<<"****************5.删除学生成绩****************"< cout<<"****************6.插入学生成绩****************"< cout<<"****************7.清空所有数据****************"< cout<<"****************8.安全退出系统****************"< cout<<"请输入您的选择(0--8): ";cout< intn=0;//计数器,用于在查找时计算有没有同名学生 cin>>choice; fflush(stdin); if(choice=='8')//安全退出 {cout<<"谢谢使用,再见"< exit(0); } switch(choice) { case'1': head=stus.input(head); break; case'2': if(head==NULL) { error(); break; } cout< < < ! ! "< stus.output(head); getch(); break; case'3': if(head==NULL) { error(); break; } head=stus.stat(head); getch(); break; case'4': if(head==NULL) { error();//调用函数输出错误信息 break; } cout<<"请输入想要查找的学生姓名"<<","<<"本系统可以查找重复姓名学生"< cin>>name; pd=head; cout< < < ! ! "< while(pd)//循环调用函数,用于输出多个的同名学生成绩 { pd=stus.find(pd,name,n); if(pd==NULL) break; pd=pd->next;//指针指向当前以找到的下一个节点,用于查找多个同名学生 } getch(); break; case'5': if(head==NULL) { error(); break; } cout<<"请输入想要删除学生姓名"< cin>>name; head=stus.del(head,name); getch(); break; case'6': if(head==NULL) { error(); break; } head=stus.stat(head); head=stus.insert(head); break; case'7': if(head==NULL) { error(); break; } head=stus.clear(head); cout<<"删除表成功~"< getch(); break; default: cout<<"对不起,您的输入有误,请重新输入。 \n"; getch(); break; } } getch(); return0; } 接下来的截图是删除lihu再插入jiangyong后的学生列表且已经按总 分顺序排序 一学期对于《数据结构》的学习,让我们学到了很多理论知识, 了解了c语言方面的编程技术,它们都对我们进一步学习计算机方面的知识建立的坚实的基础,为我们今后的发展也提供了很多有用的地 方,虽然很显然的是这些知识不是很好学,有难度,但是这也是真正 考验我们的时候,对于数据结构我们不仅要在平时的课堂上认真学 习,在课后也应该多加练习增强我们的动手能力而不仅仅只是局限对 书本知识的学习上,对于这次课程设计,我们也深深的感受到编程序 一定要认真,不能马虎、大意,要综合各个方面的知识来编写程序而 不仅仅只是课本,要海纳百川,多吸收同学们的意见,多和同学老师 们探讨,这样才能真正完成一份好的课程设计。 教师评语: 指导老师: 日期: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构报告 学生成绩管理系统 数据结构 报告 学生 成绩管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)