欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    长春理工大学课程设计报告正文.doc

    • 资源ID:35213982       资源大小:314.50KB        全文页数:22页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    长春理工大学课程设计报告正文.doc

    题目及要求:学生成绩管理系统主要功能是对学生的成绩进行输入、修改和管理。系统功能要求:1 界面要求*学生成绩管理系统*1-输入数据*2-查询成绩*3-修改成绩*4-输出所有学生成绩*5-统计及格和优秀人数*6-退出系统*2 功能这个程序的主要功能是输入学生姓名、成绩,学号自动生成,并可以对学生成绩按学号或姓名进行查询。该系统具有存贮学生数据,按学号、姓名查询,按需要修改学生成绩,列出学生成绩和统计功能。3 统中初始数据如下(需要从文件中读取数据。结果写入文件):学号 姓名 成绩1 张三 902 李四 843 王五 754 陈六 685 刘七 5920142015C+课程设计一、 课程设计内容:1.题目:学生信息管理系统。2.基本要求:设计一个程序,掌握C+设计程序的一些流程,综合的运用C+使用。对流的使用,这个程序运用了一个流类的类库用继承的方法建立起来的。3.实验目的:掌握类的设计、类的派生;C+的输入输出流;继承性和派生类;函数应用运用,提高我们对系统应用,让我们更好的运用知识C和C+知识,还有一些语句的运用,格式控制符等运用。4.程序功能简介:本程序具体功能如下:(1)用户登录界面设计(以下结果展示图)。(2)输入数据:增加学生号码信息、成绩信息。其中学生信息包括姓名、成绩、序号(学号自动生成)。(3)信息查询:查询时实现按姓名、序号查询、每次查询均具有详细提示。使用函数重载,按提示进入不同界面,完成相应操作。(4)修改成绩:支持按学号或按姓名修改,修改完成有提示,不成功返回主菜单。使用函数重载,按提示进入不同界面,完成相应操作(5)输出所有:将储存学生信息按列表输出,每一列对应“学号 姓名 成绩”输出格式,力求达到美观,有条理;(6)统计功能:在储存的学生信息中进行统计(原有数据保留,可添加),并输出及格(六十分及以上)与优秀(八十分及以上)人数;(7)退出:进入退出界面,系统自动储存保存信息,并生成(如没有)保存文件到程序运行根目录上,方便查看;5.程序设计资料调研本课程的要求是学生信息管理,要求完成其基本功能。其信息经过搜索,查得学生信息表。在进行某种学生信息管理操作时,通过是先显示所有的学生信息,再找到符合自己要找的学生的操作,本系统遵循了这一习惯,且查询方式灵活,方便。6.关键算法在本程序中使用了动态数组数据类型,所用最多的是WHILE循环结构和IF语句,然而这也正为了它的特色。循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。SWITCH语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。该程序是在汉化系统下编写完成的,所以它支持在汉化系统下运行,还支持在普通系统下运行,它允许完全用中文操作,包括对信息的添加浏览和查询等功能,它使用的指针是动态分配内存的,允许用户大量的信息录入,对它的长短不加限制,这样就方便了很多。而且中文环境更加方便使用,一目了然。7.存在的问题与次略本课程设计是在汉化环境下操作的,对系统要求相对严格。在输入信息时,每输入一条信息后用ENTER键结束,然后继续下一条信息的输入。如果不能按照规定方法录入,为保护程序自动退出,只有重新启动系统开始新的输入。策略是:只有人为的去掌握输入方法,正确操作;还有是对程序改进,使程序对一些非法输入给予忽略,提示重新输入或退出。8.设计的思路(伪代码)1.建立“学生信息管理系统”工程2.建立Datebase.h,Datebase.cpp,Main.cpp文件并天加到工程中(准备工作完成)3.创建学生类(class Student),数据类(class Datebase)并关联到主程序中3.为学生类添加基本属性(私有):姓名,学号,成绩。添加共有方法,体现其封装特性,共有方法有:构造方法(多种),赋值函数重载,信息输出,等等。4为数据类添加私有成员:students【100】。使用数组取代vector模板类极大简化操作。5.为数据类添加add方法,将学生添加到数据中;6.为数据类添加find方法,通过学号或名字查找到学生并显示其信息7.为数据类添加update方法,可通过学号或名字找到学生并修改其成绩8.为数据类添加statistic方法,统计及格及优秀人数9.添加read方法,读取保存文件内的信息并添加到数据类10.添加保存方法,在退出程序是将数据类内的信息保存实现再次读取11在main函数中使用菜单,给用户提示,并使用循环与SWITCH使得重复选择操作变得可行12在程序最后调用save方法保存,最后退出13.最后在工程中使用Mian.exe就能实现上述全部功能9.基本流程图 学生管理系统功能流程图二、 得意之处:1. 编码过程做到先构图后编译,保持较清晰的设计思路2. 严格遵守编译规范,对代码格式,注释都相当注意3. 使用switch使整个程序条理非常清晰,易读4. 适用面向对象的思想,对学生类有着较好的封装,对于每个私有成员都建立共有方法调用,控制对其访问5. 通过双静态整数计数方法,配合student构造方法完成对数组的管理,做到准确,简单6. 对于read方法不适用void返回而使用bool值,对外置文件读取起到监听的做用,一旦读取失败,使用自身数据初始化,避免重启程序而储存为空的尴尬7. 使用双储存方法,运用函数重载,对于第一次未储存及在原有储存文件基础上在储存有较好的应对策略8. 文件读取针对数据之间空格隔开的特性,做到准确读取数据并使文件储存到内存操作可进行三、 创意的技术实现:通过双静态整数计数方法,配合student构造方法完成对数组的管理,做到准确,简单对于read方法不适用void返回而使用bool值,对外置文件读取起到监听的做用,一旦读取失败,使用自身数据初始化,避免重启程序而储存为空的尴尬使用双储存方法,运用函数重载,对于第一次未储存及在原有储存文件基础上在储存有较好的应对策略。文件读取针对数据之间空格隔开的特性,做到准确读取数据并使文件储存到内存操作可进行四、 课程设计中存在的问题或者调试过程中发现的错误: l 将menu并入Datebase类l 为student类添加赋值构造函数l 为Student类添加赋值函数l 在Datebase类添加i/o文件方法l 修改部分方法返回值l 修改Student类析构函数改变计数方式l find方法传参做改变l 对students数组访问方法作调整l 出现与头文件不匹配情况,已修正l 用数组取代vector模板类l 调整控制台输出格式,使其更美观l 简化添加,在主程序使用对象取代动态方法l 增加大量提示,方便用户l 增加if语句处理特殊情况五、设计实践过程中的收获与体会经过一个学期的学习和上机实践,使我对C+语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。课程设计它是一项任务,更是一种挑战和历练。在课程设计中,为了使用时方便,着重对不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的提高。通过实际的演练,可以增强对知识的理解和运用能力程序在调试时发现了许多细节上的错误比如:类定义是最后没有加分号,在主函数的if else结构中丢失或者多写花括号,命名空间的一些错误等。这些错误并不是什么难点,就是平时打程序时不规范,没有良好的习惯导致这些错误的发生,我以后一定会规范自己,养成一个良好的打代码习惯,避免在一些小的细节错误上浪费时间。我设计的这个程序其实还有一些地方不符合题目的要求,题目要求程序输入学生姓名,成绩,然后学号自动生成,但是我设计的程序是要求用户自己输入学生的学号,我认为这更满足现实情况,希望老师可以理解。还有就是一些函数在执行前需要对文件内的数据进行转存,否则无法运行,我认为这占据了很大一部分内存并且,不断地调用文件内的数据容易出现错误,但是现在我还没有想出好的解决办法,所以只能先这样了。这次课程设计历时数天,通过课程设计,我发现了自己的很多不足,知识上还存在很多漏洞,我看到了自己的实践经验还比较缺乏,理论联系实际的能力还急需提高。为完成这次课程设计我确实付出很多,有苦有乐,这几天的工作日子,怎么形容呢,每次在教室回来就会心情不好,感觉自己什么都没有做成,慢慢的摸索着,开始入门,而且有了一点成就感,就这样每一次都比前一次收获多,心情也慢慢好了,而且我的系统也一天比一天的完善。毕竟没有白费心血,以艰辛的付出最终还是获得不少回报!总之,计算机是一门实践性很强的学科,要想学好,就必须多练习,多总结,只有这样,才能够更加深入地了解,才能够学会如何去运用它参考文献1吴乃陵, 况迎辉.C+课程设计. 北京:高等教育出版社,200122孙建春,韦强.C+程序设计.北京:人民邮电大学出版社,2014附录Datebase.h/*创建人:140511526向闪闪创建时间:2015/7/14内容:声明学生类,菜单和数据类修改履历:调整计数count位置 将menu并入Datebase类 为student类添加赋值构造函数 为Student类添加赋值函数 在Datebase类添加i/o文件方法 修改部分方法返回值 修改Student类析构函数改变计数方式 find方法传参做改变*/#include <fstream>#include <string>#include <iostream>using namespace std;static int count = 0;static int initial_numb = 0;class Student/学生类的私有属性private:string name;/姓名int numb;/学号double score;/成绩public:Student();Student( const string & n, int scor );Student( int num, const string & name, int score);Student( const Student & s);Student & operator=( const Student & s );void show()const;void setScore( int n ) score = n; int getNumb()const return numb;int getScore()const return score;string getName()const return name;Student();class Datebaseprivate:/使用学生类数组Student students100;public:Datebase()void menu()const;void add( const Student & s );void find( int numb )const;void find( const string & name )const;void update( int numb );void update( const string & name );void list()const;void statistics()const;void save_new();void save();bool read();void getStudent();void initial();Datebase();Datebase.cpp/*创建人:140511526向闪闪创建时间:2015/7/14内容:对学生类,菜单和数据类进行定义修改履历:将整个选项代码移入main函数中 对students数组访问方法作调整 出现与头文件不匹配情况,已修正 用数组取代vector模板类 调整控制台输出格式,使其更美观 简化添加,在主程序使用对象取代动态方法 增加大量提示,方便用户 增加if语句处理特殊情况*/#include"Datebase.h"#include <fstream>#include <string>#include <iostream>using namespace std;/构造空对象,不进行计数Student:Student() name = "null"numb = 0;score = 0;/每调用一次,计数加一Student:Student( const string & n, int scor) count +;name = n;score = scor;numb = count;/每调用一次,计数加一Student:Student(int num,const string & n, int scor) count +;name = n;score = scor;if(!num = count)cout << "-请按序添加-" << endl;numb = count;/复制构造函数,保留学号不变Student:Student( const Student & s) count+;name = s.name;score = s.score;numb = s.numb;/赋值构造,不计数Student & Student:operator=(const Student & s) name = s.name;score = s.score;numb = s.numb;return *this;/学生信息输出到控制台void Student:show()const cout << getNumb() << " " << getName() << " " << getScore() << endl;/主菜单void Datebase:menu()const cout<<"学生成绩管理系统" << endl;cout<<"*" << endl;cout<<"*" << endl;cout<<"*1-输入数据*" << endl;cout<<"*2-查询成绩*" << endl;cout<<"*3-修改成绩*" << endl;cout<<"*4-输出所有学生成绩*" << endl;cout<<"*5-统计及格和优秀人数*" << endl;cout<<"*6-退出系统*" << endl;cout<<"*" << endl;/添加方法void Datebase:add( const Student & s ) studentscount -1 = s;/按学号查找信息void Datebase:find( int numb)const if( cout = 0) cout << "*没有学生,请先添加 " << endl;return;students(numb - 1).show();/按姓名查找信息void Datebase:find( const string & name)const if( count = 0) cout << "*没有学生,请先添加 " << endl;return;for( int i = 0; i < count ; i+)if( name = studentsi.getName()studentsi.show();/按学号修改成绩void Datebase:update( int numb ) cout << "-输入新成绩-" << endl;int n;cin >> n;studentsnumb-1.setScore(n);/按名字修改成绩void Datebase:update( const string & name ) cout << "-输入新成绩-" << endl;int n;cin >> n;for( int i = 0; i < count ; i+)if( name = studentsi.getName()studentsi.setScore(n); /遍历已加入数据类的学生信息void Datebase:list()const for( int i = 0; i < count ; i+)cout << studentsi.getNumb() << " " << studentsi.getName() << " " << studentsi.getScore() << endl;/保存信息,创建并到Save_Date.txt文件中void Datebase:save_new() cout << "*保存中*" << endl;ofstream fout("Save_Date.txt");for( int i = 0; i < count ; i+)fout << studentsi.getNumb() << " " << studentsi.getName() << " " << studentsi.getScore() << endl;fout.close();ifstream fin("Save_Date.txt");if(!fin)cout << "*储存失败,检查内存*" << endl;else cout << "*储存成功*" << endl;fin.close();/保存信息到已有文件中,void Datebase:save() cout << "*保存中*" << endl;ofstream fout;fout.open("Save_Date.txt",ios_base:out | ios_base:app);for( int i = initial_numb; i < count ; i+)fout << studentsi.getNumb() << " " << studentsi.getName() << " " << studentsi.getScore() << endl;fout.close();ifstream fin("Save_Date.txt");if(!fin)cout << "*储存失败,检查内存*" << endl;else cout << "*储存成功*" << endl;fin.close();/在储存信息文件中读取,输出到控制台并添加到数据类bool Datebase:read() ifstream fin("Save_Date.txt");cout << "*进入只读界面*" << endl;if(!fin) cout << "*读取失败,进入初始化阶段*" << endl;initial();fin.close();return false; else char ch;while(fin.get(ch)&&(!fin.eof()cout << ch;cout << "*读取完成*" << endl;fin.close();getStudent();return true;/从储存文件中读取信息并添加到数据类void Datebase:getStudent() ifstream fin("Save_Date.txt");int numb;int score;string name;cout << "*正在写入内存*" << endl;while(!fin.eof() fin >> numb;fin >> name;fin >> score;Student * s = new Student(numb,name,score);studentscount -1 = *s;delete s;fin.close();cout << "*写入完毕,进入主菜单*" << endl;initial_numb = count;/统计及格及优秀void Datebase:statistics()const int passing = 0;int outstand = 0;int fail = 0;for(int i = 0; i < count ; i+) if(studentsi.getScore() > 80) outstand+;passing+; else if( studentsi.getScore() > 60) passing+;fail = count - passing;cout << "及格人数(六十分及六十分以上):" << passing << "人" << endl;cout << "优秀人数(八十分及八十分以上):" << outstand << "人" << endl;/初始化void Datebase:initial() cout << "*初始化数据中*" << endl;Student s1("张三" , 90);Student s2("李四" , 84);Student s3("王五" , 75);Student s4("陈六" , 68);Student s5("刘七" , 59);students0 = s1;students1 = s2;students2 = s3;students3 = s4;students4 = s5;cout << "-初始化完成-" << endl;/程序结束提示Datebase:Datebase() cout << "-" << "-Bye-" << "-" << endl;Main.cpp/*创建人:140511526向闪闪创建时间:2015/7/14内容:实现学生信息管理系统 先进行初始化 支持储存及读取修改履历:将操作移到主程序中*/#include "Datebase.h"#include <string>#include <fstream>#include <iostream>using namespace std;int main() Datebase datebase;datebase.menu();cout << "*寻找已储存数据*" << endl;bool is_read = datebase.read();int n;string name;int numb;int score;int i;cout << "*请选择功能(输入选项数字): " ;while(cin >> n &&( n >0 && n < 6)switch( n ) case 1 : cout << "n*请输入姓名*" << endl;cin >> name;cout << "*请输入成绩*" << endl;cin >> score;Student * s = new Student(name,score);datebase.add( *s );cout << "-添加完毕,返回主菜单-" << endl;delete s;datebase.menu();break; case 2 : int i;cout << "n*进入查询界面*" << endl;cout << "*1-按姓名查询*" << endl;cout << "*2-按学号查询*" << endl;cin >> i;if ( i =1 ) cout << "-请输入姓名-" << endl;cin >> name;cout << "-查询中-" << endl;datebase.find(name);cout << "-查询完毕,返回主菜单-" << endl;datebase.menu();break; else cout << "-请输入学号-" << endl;cin >> numb;cout << "-查询中-" << endl;datebase.find( numb );cout << "-查询完毕,返回主菜单-" << endl;datebase.menu();break; case 3: cout << "n*进入修改界面*" << endl;cout << "*1-按姓名修改*" << endl;cout << "*2-按学号修改*" << endl;cin >> i;if ( i =1 ) string name;cout << "-请输入姓名-" << endl;cin >> name;cout << "-查询中-" << endl;datebase.find( name );datebase.update( name );cout << "-修改完毕,返回主菜单-" << endl;datebase.menu();break; else cout << "-请输入学号-" << endl;cin >> numb;cout << "-查询中-" << endl;datebase.find( numb );datebase.update( numb );cout << "-查询完毕,返回主菜单-" << endl;datebase.menu();break;case 4 : cout << "n*选择输出所有功能*" << endl;datebase.list();cout << "-输出完成,返回主菜单-" << endl;datebase.menu();break; case 5 : cout << "n*进入统计界面*" << endl;datebase.statistics();cout << "*统计完成,返回主菜单*" << endl;break; cout << "*请选择功能: "cout << "*谢谢使用,退出中*" << endl;if(is_read | (count - initial_numb > 0) datebase.save();return 0;datebase.save_new();return 0;成绩及指导教师评语:

    注意事项

    本文(长春理工大学课程设计报告正文.doc)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开