大学C++课程设计报告--学生成绩管理系统(附源代码)

四、 设计总结

这次课程设计基本上涵盖了大学一年级学习到的C++ 语言知识点,课程设计题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。这次课设使我了解我编程思想和编程技巧,也认识了软件生命周期的各个环境,包括构思、设计、编写、调试、发布、文档化、维护和修订。

C++程序编译是一种要求特别精细的工作,小到一个分号(或点)都能影响整个程序的运行,这就要求我们编写程序时要特别细心,即使是一个符号,还是一个字母都不能乱用。在这次的编写过程中,我就因为错把case序列语句里的变量中的p写成q使整个程序瘫痪。它让我记住了学习需要认真、仔细、负责的态度对待。

这次课程设计虽说很辛苦,而且设计出来的程序不全具备课程所需的,不过扩展功能学生数据的添加、修改、与删除的函数嵌进去,而且排序功能关联升序和降序功能,正所谓鱼与熊掌不可得兼。这次课程设计,在整个程序中,我们通过使用while循环,switch语句,冒泡排序法,表格设计中的setw()以及类的定义及使用来完成程序设计,使我提高了对C++中语句的使用能力和组合能力,进一步加强了我对使用C++编程的能力。还让我掌握了高级程序设计语言的基本思想、基本概念、基本方法和基本技能,while语句,this指针,case作为程序的入口,一般结合switch使用等等。

一个星期以来的课程设计,感谢帮助我的同学和师长,通过和他们的交流,互相交流经验,我这次设计的程序中各大主函数体得以设计出来,感谢他们在我编程过程中为我做的提醒和指点,这真的很重要。

这次课程设计不仅让我修补了以前学习的漏洞,也让我知道一个道理:编程需要兴趣和实际动手。这应该可以借鉴在同学或者师长们的编程经验上。创新思维至关重要,相对于我这略感冗余却实现不了更多功能的程序来说,有必要写出精简的代码,也有助于开发出高效的程序。虽说我编写的程序离专业人员设计的还有好大一段距离,但它已经是我目前的极限。我相信,通过我的努力,在不久的将来,我会编出一组真正实用的程序的。

五、 成绩评定

成绩 指导教师 日期

六、 附件

程序源代码清单: #include #include #include #include using namespace std; class student {

private: string number; string name; double computer; double English; double math; double sum; double ave; char grade; student *head; student *curnode; student *next; public: student();//不带参数的构造函数 student(string ,string ,double ,double ,double ,double =0.0,double =0.0,char =NULL); 带数据域参数的构造函数,用来动态建立节点 void sum_score();//总分函数 void ave_score();//平均分函数 void grade_score();//成绩等级 void cin_app();//修改用 void app_score(string ,string ,double ,double ,double); //动态的建立节点 void del_score(); //删除全部节点 void displist(); //输出节点中的全部数据 void lookup(int ,string ); //查找函数 void del_score(int ,string ); //删除函数 void compositor(int ,int ); //排序函数 void rework(int ,string ); //修改函数 };

/////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////student类的实现 void err_char();//输入错误字符检测函数

void score_err();//成绩范围检测函数,当输入成绩不在0到100之间时提示重新输入

//

student::student():next(NULL)//不带参数的构造函数 { head=curnode=this; }

//带参数的构造函数

student::student(string Number,string Name,double Computer,double ENglish,double Math,double Sum,double Ave,char Grade):next(NULL) { number=Number; name=Name; computer=Computer; English=ENglish; math=Math; sum=Sum; ave=Ave; grade=Grade; }

void student::sum_score()///////////////////////计算总成绩 {sum=computer+English+math;}

void student::ave_score()/////////////////////计算平均成绩 {ave=(computer+English+math)/3.0;}

void student::grade_score()///////////////////计算成绩等级 { int i; i=ave; switch(i/10) { case 10: grade='A'; break; case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; case 6: grade='D'; break; default: grade='E'; } }

void student::app_score(string Number,string Name,double Computer,double ENglish,double Math)//动态建立节点 { curnode->next=new student(Number,Name,Computer,ENglish,Math); curnode=curnode->next; }

void student::del_score()//////////////////////删除表中的全部数据 { student *p; curnode=head->next; while(curnode!=NULL) { p=curnode->next; delete curnode; curnode=p; } head->next=NULL; curnode=head; cout<<\┏━━━━━━━━━━━━━━━━━━━┓\ cout<<\┃ !表中内容全部清空,现已是一个空表! ┃\ cout<<\┗━━━━━━━━━━━━━━━━━━━┛\ cout<<\}

void student::displist()////////////////////////输出表中的全部数据 { if(head->next==NULL) { cout<<\┏━━━━━━━━━┓\ cout<<\┃ !这是一个空表! ┃\ cout<<\┗━━━━━━━━━┛\ cout<<\ return; } student *pw=curnode; curnode=head->next; cout<<\┏━━━━━┳━━━━━┳━━━┳━━━┳━━━┳━━━━┳━━━━┳━━┓\ cout<<\┃ 学号 ┃ 姓名 ┃计算机┃ 英语 ┃ 数学 ┃ 总分 ┃ 平均分 ┃等级┃\ cout<<\┣━━━━━╋━━━━━╋━━━╋━━━╋━━━╋━━━━╋━━━━╋━━┫\ while(curnode!=NULL) { cout<<\┃\ cout<<\┃\ cout<<\┃\ cout<<\┃\ cout<<\┃\ curnode->sum_score();

联系客服:779662525#qq.com(#替换为@)