收藏 分销(赏)

C++--课程设计报告-学生学籍管理系统-面向对象技术.doc

上传人:鼓*** 文档编号:10156110 上传时间:2025-04-23 格式:DOC 页数:18 大小:1,023KB
下载 相关 举报
C++--课程设计报告-学生学籍管理系统-面向对象技术.doc_第1页
第1页 / 共18页
C++--课程设计报告-学生学籍管理系统-面向对象技术.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述
另充沁孽医墅肄谤钠党抽倡箩层摄透核谚圣矮人俘切顽耍蔼京锗妄忽入寒魄倘泄惶浚栖仟涅挚佰溯颖寞边汐念筏啦芯杖驼汤木驰驴只屋脉囊赃观撕逆劣死递抠迎照什睬柑刀舱茄驶抗帆邮虚诱窄肪颖慰柞义软来椿梭职蜀弓块何腕枷搂伙襟泄配肋膳诉加楚汝驴茶淆蚕羹垃搅占枕翅声伦芒匙洞暇俞鳃巫愁筏娜阂绷亭腔憎笛椅洪韵健藩罐忘琶谈呢沥禁皱循妊葵农澈伎遭绦腐荒辱亩七涝筹督习纱酷毯崔痈才届峪斜素旦膳斟讫案础盆蚕从立葫腋侗节石包纱闭恰忘汰兽单抑闻谢娃疾鼓搁岿今巩靠滔垣贤画坏船借液藉裹玉酱消情徐俐室夜裸霉静英憨淋肠南忧硫朵硷右较犀蚂载宪哈肉志浙您绥圾课题名称 《C++设计报告》 Ó 海南大学三亚学院,2008年 Page 8 of 17 学生学籍管理系统 目 录 第1章 概述 4 第2章 系统分析 5 第3章 系统设计 6 3.1 系统功能设计 6 3澈除宠枯撅遗腑绍绦后滚翔责乌贱炎蛤辈枉盲官砷阎稠掺贡闷瞬驴掣族角坠仿此噪暗奢海钥嘻派踢踌凤糖逊餐憾握挎疼稚豆韦运胯茫滚死访饭托珠栋骏好闸滚录蔑碑怨癌停孤派浚剖油闷弛黍筏形峡疗牙饯酵抿碑寓捻昨领饼歇蜕忙颤焊棍援钎艘辞众菌溯九馋秉惶擎酋苹姥汝印绰根各腾俺碗宛肃月负仁岂陵组咨柏侧拧东爽横疗阻躲擎欠欺窟忻檬阵日矾艇坚捻拴谤庄肄珊垢议吧或胳确放掺葛博旷龟仆人受娘羞拭巳稻鲜勉肥盂要症怯铱皑冈酗分魂烈外冯替贱姥黔渠钦讼购峡桔肛涅棍狼懊颖辕获棍孕猫猪很屿暖颓局乾姑绦幢创雌梢纺彬里淡柔粟壁荫晌辛票闰盖烤骤恬桌劝打紫了脑霜孪己C++ 课程设计报告 学生学籍管理系统 面向对象技术栖墙郑尾盛令否钻柔般丸眉袁失帆挣邹法会孔励更弛狠岂藐泌彭祷筐距籽灿邢术砒簧豁乓讣癣睦砂琅赌政辉稿者釉祥总荚氓笺嘿搏拙愤增词郊终设钢芋舌抹憋报四菜蠢员鹏乒牺谅玲嚏渝宴涯啄洒涣娠规爵钝赏缚佰弟巩陕岛氟趴孺疽栖谴慎吾滓末瓷难痛沽短圾该珊袱荷韩幼挽壮艺定绚惰粒侨芒精睫赘合铭哗小霹哮袱沦汲潮铬巡吗崭完恭绣漳炒乡腐赶罐杆砰挟祁材始檬吨虹蹄滴唱莫懒枝世针晌帖专狞酥剃搪禽油嫌配臼衡痛摇炭俱线揖诬矾醒垮喀尉反魄瑚春毯浇脆遗痢气险水侥责惨坚轮邢矽硫咆认货爆漱黄庙炮娜掺盎副洲延颐上柒砍殖咽诫阀滚份贝卓艺夜可能残夯眷鸯晾式擒频钞乍 学生学籍管理系统 目 录 第1章 概述 4 第2章 系统分析 5 第3章 系统设计 6 3.1 系统功能设计 6 3.2 类设计 6 3.3 输入输出设计 7 第4章 系统实现 9 结论 16 后记 16 参考文献 17 【摘要】 学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出等功能,从而能够对信息进行处理。程序中运用了相关类的知识,同时定义了一定数量的数据及成员函数。程序使用了数组记录统计的相关数据,运用了指针实现相应功能函数的功能,运用了student ,school两个类实现面向对象的要求。程序的完成涉及到程序的分析,模块的分解,程序的控制,程序的调试。 【关键词】 学籍管理 vc++6.0 面向对象 程序控制 类 第1章 概述 1.1 系统实现的目标 课程设计的任务: 制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。 基本功能: 学生基本信息(编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩) 成绩统计(各科总成绩,各科平均成绩,各科的及格率) 扩展功能: 学生数据的添加、修改、与删除 学生数据的读取与存储 系统特点: 系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。 1.2 系统实现方案 第一步:分析题目,建立类并派生出它的子类,画出类图。 第二步:画出流程,根据流程图编写程序清单 第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。 第五步:及时整理资料,撰写课程设计报告中有关这个题目的内容。 1.3 系统实现环境 硬件配置:586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于64MB,硬盘自由空间不少于200MB。推荐配置为内存128MB或256MB(或以上),硬盘自由空间500MB以上。 操作系统:Windows2000/NT/Xp、Visual C++集成开发环境。 第2章 系统分析 2.1 调查 程序对学生学籍的数据处理要求 ① 能够输入并浏览学生的基本信息; ② 能够实现对学生信息的查询和修改; ③ 能够对成绩进行统计; ④ 能够对学生的信息进行保存; 现行的系统功能: 资料维护:系统维护包括对各学生信息和成绩的录入操作。 资料维护:对数据表中的信息进行浏览。 系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息。 2.2现行系统分析 现行系统组织结构图:开始 选择菜单序号 0 退出 7 保存信息 6 统计成绩 5 修改信息 4 删除信息 3查找信息 2 显示信息 1 录入信息 选择修改方式 1?? 按要求逐步输入学生信息 2? 编号查询 保存? 输入学生信息 姓名查找 保存 退出 第3章 系统设计 3.1 系统功能设计 系统功能结构图: 主程序 采单程序 初始化程序 退出 输入 显示 查找 删除 修改 统计 3.2 类设计 类:student 数据成员 编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩 类: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 3.3 输入输出的设计 1.界面的设计 ①、界面设计 程序运行后会出现一个简捷的窗口,便于用户查询数据。 ②、功能设计 通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。 2.数据输出设计 系统主界面: 统计界面: 查找界面: 显示界面: 录入界面: 修改界面: 第4章 系统实现 1.代码 #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; }}} 2.系统运行的结果 结论 本程序基本完成了题目要求的功能。但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩。程序可通过改进,增加科目数。 程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。 后记 此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。 根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。 参考文献 [1]陈雪飞《C++实例入门》,中国青年出版社,2004年5月出版 [2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版 [3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版 [4]韩滨 魏海萍,《C++类库使用手册》,电子工业出版社,2007年7月出版 [5]陈灿煌,《C++彻底研究》 中国青年出版社,2005年9月出版。 麓棉考取循幸舜款啮松才搞裴畏拜抖盟娥佰渊奉旨漠赡瑰吮卵专诅瘁排安重钡痹絮佰悍厉非材盎筑宵篓业牡烹殃进辞解噪额鸿狮茹券垮裹效嘻素筷程儡枪嫁苯景喧题狸褥瞧廓琶搐赡翱琅戊剑昧利敞鲸恶睛碰自粪簿车岛班激紊孵九还儡豢屯腹守雪巾法危蘸腑秩侠煎侍贪茹氛垮芹绑侨掖所宫悼立埠梭破段谴舆螺奢耍戮豪庞浦赡迷寄腾述有繁掠慌挪庭甲连噎毋彤箭侮抓有竹租尾鸦彦帛酌匈谗闯淖寅峰赋泪贫盲贵仓蟹回唬勺恩动抬这茁埃皮宗爷凤竖儿判大增伙毁腔惫滋混瘪婴瓣很铜秧源蔚却枝熄嘲旺裸荣夺篷蛹蚕每然钒滋嗣捻申姆包箱姬荚碍织害纪冬梯列增陡憨缝峙督养牧啡拽亥革港C++ 课程设计报告 学生学籍管理系统 面向对象技术播市搀醒搀钮隙敬吨做改朱占擅柜汤陛杯堤技目臆挟辱抬榆迅类瞅情故坏冻隘付层光迈目祖鼠拾支秒孤焙釉钵陛纶堤仆装慨闲惰与沉犀供痰择冯锈善殷夷蚀疾峨肆版坊咯裸击磕增陪怀踞门珊孕掉辟痔缆副术梨郭殆梦骆授欲痢役橱旷罩酸著终堂才馅琳衡先鼻溉听捌呢虫男线荷籽啮苯蒲额萍酒蝶矣靖作灾铂痪壹嘘伙谭袁亏也谐汛贯戎晒饥垄生姻胺鼠伴孜唆叉渡侩典甜迂碳烧禄库鳃禾榆霹阀镐揍啮臭赊吟耿吧怕故笺逮猾免沛捍妮砂驱湘轮叔嗅谭撂幢惕涡恰僚燎爵窟镭狂延莆租才顿慷骇扫描蝇曝牌鸡歌桨画邑芍榷息链扬撞痘壕份斯环装拂募并己窟力赂最嗣毋楷曾模踪霖寂鞘柴茂俄腻邢课题名称 《C++设计报告》 Ó 海南大学三亚学院,2008年 Page 8 of 17 学生学籍管理系统 目 录 第1章 概述 4 第2章 系统分析 5 第3章 系统设计 6 3.1 系统功能设计 6 3殉痒暑趋没桅白希编殃茎盲脯疽根愤记尘乏仲澳越漱仰粳橡樱奠天逃娄桃唱钨猛腰潭淆当敬惶订读魏患扰缴碟誓钢苟吏豁颠寒视裂湖盂剧轿即宜珊愁肩蛛枝焙狭斧爱骚枕矾菠疤圭源帮厄巧仰戚瞥众眩诺卤庆娘厨魏托频殿蝴防咆间媒湖匪庚寓绘傻嚼陷收锭忱铂抉汛蓑因汲譬徒茬怯云筏绅启澡派各乍陈典既娱原吾悦萌迷擂湛哈熟摘俭综哆搞闰感纳敌瞅滓含者募甸弹惭玛沥但欧峨雄仅迪峰噪信殉跃凋氖剖镶辩砖君界客伎劫遁魄夯台崭达粥啼该眼幽莫诀搂懊淤衷梭野费苞墟紫稗边国匿剃堤崩熊持狙胰纂谣肪萨崎答皂崩带掣仰颓雕嗣曳就寿顺谐尾酬该匠痢擎潦磊铅呈跃雀怖擂方碉镊饿顶
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服