C学生成绩管理系统的设计方案.docx
- 文档编号:25614009
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:22
- 大小:432.81KB
C学生成绩管理系统的设计方案.docx
《C学生成绩管理系统的设计方案.docx》由会员分享,可在线阅读,更多相关《C学生成绩管理系统的设计方案.docx(22页珍藏版)》请在冰豆网上搜索。
C学生成绩管理系统的设计方案
第一章课程设计目的与要求
1.1课程设计目的
1、使学生掌握系统各功能模块的基本工作原理。
2、掌握C/C++的基本编程原理和编程方法。
3、通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。
4、培养学生分析、解决问题的能力,提高学生的软件文档写作能力。
1.2课程设计的实验环境
该方案对机器的配置要求不是很高,计算机1台,型号:
k/400CPU、1G内存、40G硬盘。
1.3课程设计的要求
问题描述:
学生包含以下信息项:
学号、姓名、四门课成绩(数据结构、操作系统、组成原理、计算机网络)、总分、平均分、名次。
系统的主要功能包括:
1.创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分、平均分和名次,然后将学生成绩信息存储到一个文件中。
2.增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息。
3.删除学生信息,提示用户输入要进行删除操作的学号,如果数组中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
4.修改学生信息,提示用户输入要进行修改操作的学号,如果数组中有该息存在,则将提示用户输入该学号对应的要修改的选项,保存结果,并提示用户选择是否继续进行修改操作。
5.按不同条件对学生信息进行查询操作,输出满足条件的学生信息。
(1)按学号查询,输入学号。
(2)按姓名查询,输入全名。
第二章课程设计内容
2.1系统功能分析
系统可以实现学生信息的输入,创建,增加,修改,删除等功能
2.2各功能模块设计与分析
运行学生管理系统显示界面
完成输入学生成绩界面
显示学生成绩界面
修改学生成绩界面
查找学生成绩界面
删除学生成绩界面
插入学生成绩界面
删除和插入后的显示界面
清空学生成绩表界面
删除成绩表后的显示界面
2.3系统实现
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd。
structstudent
{
charname[12]。
///姓名
charid[10]。
///学号
floatCppnum。
///数据结构分数
floatSnum。
///操作系统分数
floatEnum。
///组成原理分数
floatynum。
///计算机网络分数
floatnumber。
///总分
floataverage。
///平均分
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)。
//统计学生总分
friendvoidpingjun(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->Cppnum。 while(cin.fail()){ cerr<<"您的输入有误,请重新输入"< cin.clear()。 cin.sync()。 cin>>p->Cppnum。 } 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。 } cin>>p->ynum。 while(cin.fail()){ cerr<<"您的输入有误,请重新输入"< cin.clear()。 cin.sync()。 cin>>p->ynum。 } total(p)。 //计算出总分 pingjun(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->Cppnum+p->Snum+p->Enum+p->ynum。 } //////---------计算平均分-------------//////////////// voidpingjun(student*p) { p->average=(p->Cppnum+p->Snum+p->Enum+p->ynum)/4。 } ///////-------------查找函数----------/////////////////// 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。 } elseif(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<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"。 cout<<"┃****************☆学生学籍成绩管理系统☆**************┃"。 cout<<"┃**********★★★★★★★★★★★★★★★★★***********┃"。 cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫"。 cout<<"┃****************★☆1.输入学生成绩☆★****************┃"。 cout<<"┃****************★☆2.显示学生成绩☆★****************┃"。 cout<<"┃****************★☆3.修改学生成绩☆★****************┃"。 cout<<"┃****************★☆4.查找学生成绩☆★****************┃"。 cout<<"┃****************★☆5.删除学生成绩☆★****************┃"。 cout<<"┃****************★☆6.插入学生成绩☆★****************┃"。 cout<<"┃****************★☆7.清空所有数据☆★****************┃"。 cout<<"┃****************★☆8.安全退出系统☆★****************┃"。 cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"。 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。 } cout<<"请输入想要修改学生姓名"< cin>>name。 head=stus.del(head,name)。 head=stus.input(head)。 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。 } 第三章课程设计总结 此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。 首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。 程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。 根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。 理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。 我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。 参考文献 谭永强著。 C程序设计(第二版)。 北京: 清华大学出版社,1999 谭永强著。 C++程序设计(第二版)。 北京: 清华大学出版社,1999 Decoder编著。 C/C++程序设计。 北京: 中国铁道出版社,2002 王育坚等编著。 Visual C++程序基础教程。 北京邮电大学出版社,2000 李光明主编。 Visual C++6.0经典实例大制作。 中国人事出版社,2001 [美]Beck Zaratian著。 Visual C++6.0Programmer’s Guide,北京希望电脑公司。 1998 [美]Jon Bates, Tim Tonpkins著。 何健辉等译,实用Visual C++6.0教程。 清华大学出版社。 20002 江明德编著。 面向对象的程序设计。 电子工业出版社,1993 陈文宇编著。 面向对象程序设计语言C++。 机械工业出版社,2004 廉师友编著。 C++面向对象程序设计简明教程。 西安电子科技大学出版社,1998 李师贤等编著。 面向对象程序设计基础。 高等教育出版社,1998 谭浩强编著。 C++程序设计。 清华大学出版社,2004 [美]H.M.Deitel,P.J.Deitel 等编著。 施平安译,C++程序设计教程——习题解答。 清华大学出版社,2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生成绩管理系统的设计方案 学生 成绩管理系统 设计方案