1、吴世亮课设22课 程 设 计 报 告课程名称 面向对象编程 课题名称 学生成绩管理系统 专 业 信息管理与信息系统 班 级 信管 0901 学 号 200903110119 姓 名 吴世亮 指导教师 李峰、赵锦元、郭芳 2011 年 1 月 09 日湖南工程学院课 程 设 计 任 务 书课程名称 面向对象程序编程课 题 学生成绩管理系统 专业班级 信管0901 学生姓名 吴世亮 学 号 200903110119 指导老师 李峰、赵锦元、郭芳 审 批 任务书下达日期 2010 年 12月20 日任务完成日期 2011 年 1 月 09 日一、设计内容与设计要求1.课程设计目的:全面熟悉、掌握计算
2、机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C+语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2.课题题目1、学生成绩管理系统 2、职工信息管理系统3、图书管理系统程序系统4、教师工作量统计系统3.设计要求: 主要模块1、学生成绩
3、管理系统 具有功能:1、显示统计数据2、查找学生成绩3、修改学生成绩 4、删除学生成绩5、插入学生成绩6、按平均分降序排列7、显示全部学生成绩8、退出本系统2、职工信息管理 具有功能:1、添加信息2、显示统计数据3、查找学生成绩4、 修改信息5、删除信息6、插入信息 7、显示全部信息8、退出本系统3、图书管理系统程序具有功能:1、浏览书籍信息2、修改书籍信息3、统计书记情况4、查询书的基本信息5、录入新书信息4、教师工作量统计系统具有功能:1、输入教师信息 2、查看教师信息 3、清空记录 4、退出程序 课程设计报告规范1、完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。
4、2、完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3、完成系统详细设计:包括采用C+语言定义相关的数据类型;写出各模块的类C+码算法;画出函数的调用关系图。4、调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。5、关键源程序(带注释)6、其他1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计
5、报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。二、进度安排第 17 周 星期二 14时:00分 星期三 8时:00分 星期四 8时:00分星期五 8时:00分第 18 周 星期二 14时:00分星期三 14时:00分目 录1 系统需求分析 12 总体设计 22.1总体设计图 22.2 各函数之间的调用关系 32.3 数据结构及数据结构 73 详细设计 73.1 采用C+语言定义的相关数据类型 73.2功能模块划分 83.2.1构建学生类 83.2.2构造函数 93.2.3析构函数 103.2.
6、4统计数据 103.2.5查找学生成绩 113.2.6修改学生成绩 123.2.7删除学生成绩 133.2.8插入学生成绩 143.2.9按平均分降序排序 144.1 调试结果 154.1.1增加学生成绩 164.1.2显示学生成绩 174.1.3排序统计成绩 184.1.4查找学生成绩 204.1.5删除学生成绩 204.1.6修改学生成绩 224.1.7安全退出系统 224.2 程序调试中的问题 235 使用说明 246 心得体会 247 附录 257.1 源代码 257.2 参考文献: 348 评分表 351 系统需求分析本课题运用了c+类(面向对象)、链表和指针相结合开发的学生成绩管理
7、系统,该系统的主要功能是:显示统计数据 查找学生成绩 修改学生成绩 删除学生成绩 插入学生成绩 按平均分降序排列 显示全部学生成绩 退出本系统2 总体设计2.1总体设计图本程序实行了对学生成绩管理系统的管理,其系统功能模块如图所示;图2.12.2 各函数之间的调用关系统计模块输出模块修改模块删除模块2.3 数据结构及数据结构程序利用C+语言编写,数据保存到已建立的文档实现数据保存和查询以及文档的更新。3 详细设计3.1 采用C+语言定义的相关数据类型class Stu /构建学生类public: friend void Input(Stu stud) ; friend void Statist
8、ic(Stu stud); friend void Lookup(Stu stud) ; friend void Modify(Stu stud) ; friend void Delete(Stu stud) ; friend void Output(Stu stud) ; friend void Sort(Stu stud) ; friend void Insert(Stu stud) ; friend void Write(Stu stud,int n); friend int Read(Stu stud);private: char class_020; int num; char na
9、me8; float elec; float c_program; float media; float english; float math; float sport; float polity; float average; int order;3.2功能模块划分3.2.1构建学生类 class Stu public: friend void Input(Stu stud) ; friend void Statistic(Stu stud); friend void Lookup(Stu stud) ; friend void Modify(Stu stud) ; friend void
10、 Delete(Stu stud) ; friend void Output(Stu stud) ; friend void Sort(Stu stud) ; friend void Insert(Stu stud) ; friend void Write(Stu stud,int n); friend int Read(Stu stud);private: char class_020; int num; char name8; float elec; float c_program; float media; float english; float math; float sport;
11、float polity; float average; int order;3.2.2构造函数Studentmassage:Studentmassage() Head=new Student; Head-Next=new Student; End=Head-Next; in.open(sort.txt); if(!in) cout信管欢迎您登入我们的系统nnnReadFile(in); if(End-name0=0)break; End-Next=new Student; End=End-Next; in.close(); couttt读取学生信息成功!Next!=End;) temp=He
12、ad-Next; Head-Next=Head-Next-Next; delete temp; delete Head,End;3.2.4统计数据int Studentmassage:Statistic()/统计当前链表的记录总数,返回一个整数 if(! Head) return 0; int n=0; for(Student * p=Head-Next;p!=End;p=p-Next) n+; return n;3.2.5查找学生成绩void Studentmassage:Lookup() char name20 ,Id10; int x; Student * p=NULL; coutntt
13、*n; couttt 1.按学生的姓名查找ntt 2.按学生学号查找; coutx; switch(x) case 1:coutname; if(p=Lookupname(name) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该姓名的学生!nendl; cout输入任意字符!继续; getch(); break; case 2: coutId; if(p=LookupID(Id) p-Next-Input(); cout输入任意字符!继续; getch(); else couttt没有找到该学好的学生!nendl; cout输入
14、任意字符!继续; getch(); break; 3.2.6修改学生成绩void Studentmassage:Modify() /修改信息 char name20; Student * p=NULL; coutname; if(p=Lookupname(name) couttt已找到学生的信息,请输入新的信息!Next-Input(); cout修改成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; cout输入任意字符!继续; getch(); 3.2.7删除学生成绩void Studentmassage:Delete() / 删除
15、信息 char name20; Student * p=NULL,*temp=NULL; couttt请输入要删除的学生的姓名:name; if(p=Lookupname(name) temp=p-Next; p-Next=p-Next-Next; delete temp; couttt删除成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; coutInput(); End-Next=new Student; End=End-Next; cout添加成功!endl; cout输入任意字符!继续; getch(); 3.2.9按平均分降序
16、排序void Studentmassage:Sort()/对当前链表进行排序 cout Sorting.endl; Student *p=NULL,*p1=NULL,*k=NULL; int n=Studentmassage:Statistic(); if(nNext;p!=End;p=p-Next) for(k=p-Next;k!=End;k=k-Next) if(p-averaver) Studentmassage:Swap(p,k); cout 排序完成!Next;p!=End;p=p-Next) p-Show(); cout输入任意字符!继续; getch(); 4.1 调试结果学生成
17、绩管理程序登陆原始界面登陆后的学生成绩管理界面并开始执行操作:4.1.1增加学生成绩选择序号1进行增加学生成绩4.1.2显示学生成绩选择序号2进行显示学生成绩4.1.3排序统计成绩选择序号3进行学生成绩的排序排序后再进行显示学生成绩4.1.4查找学生成绩选择4进行查找学生成绩4.1.5删除学生成绩选择5进行删除学生成绩删除后进行核实结果:4.1.6修改学生成绩选择6进行修改学生成绩4.1.7安全退出系统选择0退出系统4.2 程序调试中的问题1、没有声明 student *next 出现错误,显示程序中 next is not amember of student。解决方法是在 student类
18、中的public中声明 student * next。2、不熟悉构造函数及析构函数的作用 ,后查阅c+有关资料后知道,构造函数和析构函数都是类的公用成员函数,构造函数的作用是为了处理对象初始化。析构函数是完成一些默认的处理工作。3、各个函数调用复杂,不易理解,程序中有两个类的定义,分别为student和 studentmessage,他们各有其函数,应对其函数进行合理分布。4、在选择操作数字是若输入字符时程序进入死循环即代码的健壮性不好,亟待提高。5、再输入数据时可以输入相同的学号即代码健壮性不好亟待提高。6、程序运行之后在计算机磁盘中找不到相关的文档,应主函数增加执行保存文档操作。case
19、7:Grade.Save();break;5 使用说明1、运行程序到系统界面,按entered键进入选择界面2、输入你想要进行操作的相关阿拉伯数字,进行操作。6 心得体会这一学期上完了程序员给我的感觉是内容多且知识点复杂抽象,虽然计算机是我们必不可少的生活工具、学习工具、娱乐工具。他给我们带来的是便利,愉悦。可是当我们真正得了解它时确是给人以不可言表的困难和虚幻。不得不佩服计算机的始祖。我们能做的也只是跟着前人的足迹不断拓展我们的知识面。在完成程序编程中,应考虑到注意运用到面向对象编程和符合程序需求。在此基础上怎样建立涵数以及怎样调用它们,建立他们的相互关系,在本程序中我用到了两个类,一个是类
20、class 和类Studentmessage,其中申明他们的私有变量和共有涵数,整个涵数中我用到的数据结构有链表及数组,用了两个系统自行运行的涵数分别为构造涵数和析构涵数,在整个运行程序中主要问题有界面的友好程度还有代码的简洁性和使算法尽量简单,以及程序的健壮性,程序的健壮性尤为重要亟待完善。结束了这个学期的计算机课程,我们稍微了解了面向对象程序,其中类确实是我们棘手的问题,我们又不得不在两星期内完成我们的c+课设,确实对我们来说很困难。自己在网上搜取相关信息外还看了c+的有关课程,经几天的认识了解,我还是懂了些相关知识,在老师、同学的帮助下我也在一步一步的进步,虽然期间遇到的困难不仅仅是知识
21、问题,我还是一步步的攻克了。现在的成果也是建立在c语言课设的基础上,在吸取c课设的优点时还对其进行了相关的完善。每一次课设后,我得到的很多其中最重要的算是懂得多学习的重要性以及做事就应该有准备,不得毫无准备,态度不端正,计划安排不合理等等。7 附录7.1 源代码# include # include # include #include /用getch();using namespace std;/Student类class Studentpublic: char name20; char Id20; int Cnum; /C课程得分 int Mnum; /数学课程得分 int Enum; /
22、英语课程得分 int elecnum; /电子课程得分 int medianum; /多媒体课程得分 int sportnum; /体育成绩 int politynum; /政治成绩 int sum; /总分 int aver; Student * Next; void Input() coutname; coutId; coutCnum; coutMnum; coutEnum; coutelecnum; coutmedianum; cout sportnum; coutpolitynum; sum=Cnum+Mnum+Enum +elecnum+ medianum+sportnum+poli
23、tynum; aver=sum/7; void ReadFile(istream & in) innameIdCnumMnumEnumelecnummedianumsportnumpolitynumsumaver; void Show() cout姓名:nameendl学号:IdendlC课程:Cnumendl 数学:Mnumendl外语:Enumendl电子课程:elecnumendl 多媒体课程:medianumendl体育成绩:sportnumendl政治成绩:politynumendl 总成绩:sumendl平均成绩:averendlNext;p!=End;p=p-Next) p-Show(); coutInput(); End-Next=new Student; End=End-Next; cout添加成功!endl; coutNext!=End;p=p-Next)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p-Next-name,name)return p; return NULL; Student *LookupID(char * Id) for(Student * p=Head;p-Next!=End;p=p-Next)/匹配成功则返回上一个指针
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1