C++课程设计报告_学生学籍管理系统.doc
《C++课程设计报告_学生学籍管理系统.doc》由会员分享,可在线阅读,更多相关《C++课程设计报告_学生学籍管理系统.doc(22页珍藏版)》请在咨信网上搜索。
. . 课程名称:C++面向对象程序设计 课程设计题目:大学生学籍管理系统 目录: 一、 系统设计目标、意义 二、 系统设计思路 三、 系统功能介绍 四、 输入输出的设计 (1) 界面的设计 (2) 数据输出设计 (3) 系统运行结果 五、 详细设计 (1) 系统功能结构图 (2) UML 六、 附录 七、 系统设计、开发过程中遇到的问题 八、 心得体会 学生学籍管理系统 一、系统设计目标、意义 (一)系统实现的目标 1、课程设计的任务: 制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。 2、(1)基本功能: 学生基本信息(编号,,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩) 成绩统计(各科总成绩,各科平均成绩,各科的及格率) (2)扩展功能: 学生数据的添加、修改、与删除 学生数据的读取与存储 3、系统特点: 系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,,民族,政治面貌,号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和查找。 (二)系统设计的意义 通过设计此项程序,能够对学生的学籍进行统一的管理,对学生的学籍进行录入、修改、保存等功能进行处理,从而能够较快地对信息进行处理,系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,程序中查找运用了两种查找方式即学号查找和查找,方便查询。 二、系统设计思路 第一步:分析题目,建立类并派生出它的子类,画出类图。 第二步:画出流程,根据流程图编写程序清单 第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。 第四步:及时整理资料,撰写课程设计报告中有关这个题目的容。 三、系统功能介绍 (一)程序对学生学籍的数据处理要求 ① 能够输入并浏览学生的基本信息; ② 能够实现对学生信息的查询和修改; ③ 能够对成绩进行统计; ④ 能够对学生的信息进行保存; (二)系统功能: 资料维护:系统维护包括对各学生信息和成绩的录入操作。 资料维护:对数据表中的信息进行浏览。 系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息。 四、输入输出的设计 1.界面的设计 ①、界面设计 程序运行后会出现一个简捷的窗口,便于用户查询数据。 ②、功能设计 通过主窗体调用其他窗体,具体实现可以参照系统分析相关容。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。 2.数据输出设计 主要运行界面: 统计界面: 查找界面: 显示界面: 录入界面: 保存界面: 修改界面: 删除界面: 3、系统运行的结果: (仅部分) 五、详细设计 1、系统功能结构图: 主程序 菜单程序 初始化程序 退出 统计 修改 删除 查找 显示 输入 2、(1)类:student 数据成员:编号,,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩 (2)类:school 成员函数:录入函数Input():输入编号到计算机的成绩; 统计函数count():统计各科的总成绩,计算平均成绩,统计各科的及格率; 查询函数found():按学号或查找学生的记录; 修改函数mend():修改指定学号学生成绩记录; 删除函数del():删除指定学号学生记录; 输出函数show():输出班级所有学生成绩记录; UML图: Student #number:int #name[20]:char #sex[6]:char #place[20]:char #nation[6]:char #birth[20]:char #party[10]: char #id[20]:char #score[3]:float +student*next; +student(){ } +~student(){ } + * getname():char +getnumber():int +getscore(inti)double + getg():float + input():void +input(ifstream & is): void +output():void +output(ofstream&os):void school +school() +~school() + input():void + mend():void + del():void + find:int +found():void + show():void + count():void + save():void + begin():void + clear():void +mainmenu():char +getkey():int +setkey(intk):void - *head: student - key:int 六、附录:(主要代码) #include<iostream.h> #include<string.h> #include<fstream.h> #include<iomanip.h> //操纵符定义在其中 class student { protected: int number;char name[20]; char sex[6];char place[20]; char nation[6];char birth[20]; char party[10];char id[20]; float score[3]; public: student *next; student(){ } ~student(){ } char* getname(){ return name; } int getnumber(){ return number;} double getscore(int i) { return score[i];} float getg(){ return (score[0]+score[1]+score[2]); } void input() {int e=1; cout<<"\t\t\t按提示输入:"<<endl; cout<<"\t\t输入编号: "; cin>>number; cout<<"\t\t输入: "; cin>>name; do {cout<<"\t\t输入性别: "; cin>>sex; if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0) { cout<<"\t\t输入籍贯: ";cin>>place; cout<<"\t\t输入民族: ";cin>>nation; cout<<"\t\t输入生日: ";cin>>birth; cout<<"\t\t输入政治面貌: ";cin>>party; cout<<"\t\t输入号: ";cin>>id; cout<<"\t\t输入数学分数: ";cin>>score[0]; cout<<"\t\t输入英语分数: ";cin>>score[1]; cout<<"\t\t输入计算机分数: ";cin>>score[2]; e=0;} else {cout<<"\t\t\t无此类型性别!重新输入!"<<endl; e=1; } }while(e); return ; } void input(ifstream & is) {is>>number>>name>>sex>>place>>nation>>birth>>party>>id >>score[0]>>score[1]>>score[2]; is.get(); } void output() {cout<<"学生基本信息如下:"<<endl; cout<<"编号:"<<number<<" :"<<name<<" 性别:"<<sex <<" 籍贯:"<<place <<" 民族:"<<nation<<" 生日:"<<birth<<" 政治面貌:"<<party<<endl <<"号:"<<id<<" 数学:"<<score[0]<<" 英语:"<<score[1] <<" 计算机:"<<score[2]<<" 总分:"<<getg()<<endl<<endl; } void output(ofstream & os) {os<<setw(6)<<number <<setw(15)<<name<<setw(20)<<place <<setw(6)<<nation<<setw(20)<<birth<<setw(20)<<party <<setw(20)<<id<<setw(6)<<score[0]<<setw(6)<<score[1] <<setw(6)<<score[2]<<endl; }};//操纵符指定宽度 class school {public: school(){ head=new student; head->next=NULL; key=0; } ~school(){ delete head; } void input();void mend();void del(); int find(student **p,int num,char *pn="^"); void found();void show();void count(); void save();void begin(); void clear(); char mainmenu(); int getkey(){ return key;} void setkey(int k){ key=k; } private: student *head; int key; }; //录入函数 void school::input() {student *p,*p2=NULL; p=head; int n; while(p->next) p=p->next; while(n) {p2=new student; p2->input(); p->next=p2;p2->next=NULL;p=p->next; school::setkey(1); cout<<"\t\t\t按1继续,按0返回 : "; cin>>n; }} //子查找函数 int school::find(student **p1,int num,char *pn) {student *p;p=head; while(p->next) { (*p1)=p; if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) ) return 1; p=p->next; } return 0;} //查找函数 void school::found() {student *p; int num=-1,n=9;char name[20]="^"; do { cout<<"\t\t1:按编号查找,2:按查找: "; cin>>n; }while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入编号: "; cin>>num;} if(n==2) { cout<<"\t\t\t输入: "; cin>>name;} if(!find(&p,num,name) ) { cout<<"\t\t找不到你要查找的容!"<<endl; return;} (p->next)->output(); } //删除函数 void school::del() {student *p,*p2;int num; cout<<"\t\t\t输入编号: "; cin>>num; if( !find(&p,num,"^") ) { cout<<"\t\t找不到你要删除的容!"<<endl; return; } (p->next)->output(); p2=p->next;p->next=p2->next; delete p2; school::setkey(1);} void school::show() //显示函数 {student *p;p=head; while(p->next) {(p->next)->output(); p=p->next; }} //修改函数 void school::mend() {student *p;int num=-1,n; char name[20]="^"; do { cout<<"\t\t1:按编号修改,2:按修改: "; cin>>n; }while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入编号: "; cin>>num; } if(n==2) {cout<<"\t\t\t输入: "; cin>>name; } if( !find(&p,num,name) ) { cout<<"\t\t找不到你要修改的容!"<<endl; return; } (p->next)->output();(p->next)->input(); school::setkey(1); } void school::save() //保存函数 {student *p;p=head; ofstream os("student.txt",ios::out); if (school::getkey()==1) { while(p->next) { (p->next)->output(os); p=p->next;} } cout<<"\t\t\t文件已保存! "<<endl; school::setkey(0); } void school::begin()//初始化函数 {student *p,*p2; p=head;clear(); long t; ifstream is("student.txt",ios::in); if(!is) {ofstream os("student.txt",ios::out); os.close(); return ; } int num=-1; while(1) { num=-1; t=is.tellg(); is>>num; is.seekg(t); if(num<0) { is.close(); return; } p2=new student;p2->input(is); p->next=p2;p2->next=NULL;p=p->next; }} void school::clear()//清空函数 {student *p,*p2; p=head->next; while( p ) {p2=p;p=p->next; delete p2; }} void school::count()//统计函数 {student *p;p=head; int n=0; double g[3]={0,0,0};float j[3]={0,0,0}; while(p->next) { p=p->next; n++; for(int i=0;i<3;i++) { g[i]=g[i]+( p->getscore(i) ); (p->getscore(i) )>=60.0" j[i]++ : 0 ; } } cout<<"\t\t\b\b\b\b数学总分:"<<g[0]<<" 平均分:"<<g[0]/n <<" 及格率:"<<j[0]/n<<endl<<"\t\t\b\b\b\b英语总分:"<<g[1] <<" 平均分:"<<g[1]/n<<" 及格率:"<<j[1]/n<<endl <<"\t\t\b\b\b\b计算机总分: "<<g[2]<<" 平均分: "<<g[2]/n <<" 及格率:"<<j[2]/n<<endl; } //主选菜单函数 char school::mainmenu() { char n[6]; cout<<"\n\n ☆☆☆☆欢迎进入学籍管理系统☆☆☆☆"<<endl<<endl <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl <<" * * 1: 录入学生信息 * *"<<endl <<" * * 2: 显示学生信息 * *"<<endl <<" * * 3: 查找学生信息 * *"<<endl <<" * * 4: 删除学生信息 * *"<<endl <<" * * 5: 修改学生信息 * *"<<endl <<" * * 6: 统计学生成绩 * *"<<endl <<" * * 7: 保存学生信息 * *"<<endl <<" * * 0: 退出系统 * *"<<endl <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl <<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl <<" 请选择:"; cin>>n; return n[0]; } //主函数 void main() {school pp; int k=1;char n;pp.begin(); while(k==1) {n=pp.mainmenu(); switch(n) {case '1':pp.input(); break; case '2':pp.show(); break; case '3':pp.found(); break; case '4':pp.del(); break; case '5':pp.mend(); break; case '6':pp.count(); break; case '7':pp.save(); break; case '0': if(pp.getkey()==1) { cout<<"\t\t\t是否保存" 1 : 保存 0:不保存 : "; cin>>k; if(k==1) pp.save(); } pp.clear(); k=0; break; }}} 七、系统设计、开发过程中遇到的问题及创新点 本程序基本完成了题目要求的功能。但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩。程序可通过改进,增加科目数。程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。 至于创新,就是在课题的选择上,我更加偏向于选择自己感兴趣的课题,更加注意程序的实用性 八、心得体会 通过这次课程设计,我学会了很多的知识,我通过自学相关的书籍,浏览,接触了大量的编程知识,在编程过程中逐渐提升自己的自学能力,克服困难的能力。我觉得首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。 根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。 - 优选- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 学生 学籍 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文