面向对象课程设计报告---学生成绩管理系统_第1页
面向对象课程设计报告---学生成绩管理系统_第2页
面向对象课程设计报告---学生成绩管理系统_第3页
面向对象课程设计报告---学生成绩管理系统_第4页
面向对象课程设计报告---学生成绩管理系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计任务书课程名称面向对象程序设计课题学生成绩管理系统专业班级计算机学生姓名学号指导老师李珍辉陈淑红李杰军审批任务书下达日期2011年 11月 15日任务完成日期2011年 12月 28日一、设计内容与设计要求1. 课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。 要求学生达到熟练掌握C+语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。2. 课题题目1)公司库存管理系统2)高校学籍管理系统3)高校工资管理系统4)高

2、校人事管理系统5)通讯录程序设计6)学生成绩管理系统7) 图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统3设计要求: 设计课题题目:每位同学根据自己学号除以 10 所得的余数加 1 选择相应题号的课题。随意 换题者不记成绩。 根据自己对应的课题完成以下主要工作:完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图) ;输入输出的要求。完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。完成系统详细设计:包括数据库需求分析;数据库概念结构设计( E R 图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。系统调试

3、:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。关键源程序(带注释) 按规定格式完成课程设计报告,将其打印稿(A4 纸) 上交给老师存档。 不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。二、进度安排第 17 周 星期一 8 :00 12: 00星期二 8 :00 12:00星期四 8 :00 12:00第 18 周 星期一 8 :00 12:00星期二 14 : 30 18:30星期三 8 :00 12:00课题 6:学生成绩管理系统(一)、课程设计题目:学生成绩管理系统(二)、目的

4、与要求:1、目的:(1)要求学生达到熟练掌握C+语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求:(1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书(三)、设计方法和基本原理:1、问题描述(功能要求) :设计一个实用的小型学生成绩

5、管理程序,具有查询,检索和删除功能,并且能够打开或修改指定文件及将多个文件组成一个文件。它完全使用类来实现,充分体现面向对象的程序设计特点。要求:实现主要功能:建立文件,文件的存取和显示,删除记录,查询记录。可以随时检索,删除,或增加记录,也可以保存或取消新的记录。2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模

6、块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书目录1.系统需求分析12.总体设计23.详细设计34.系统调试65.结果分析86.总结97.程序代码10湖南工程学院课程设计报告1. 系统需求分析1.1系统设计的目的与意义:现在的学校学生数量较多,各样的考试也比较频繁,因此需要一个学生成绩管理系统来对学生的成绩进行管理。1.2 系统功能需求:本系统有四个类, Score 类、Subject 类、 Student 类、 Class 类,存储学生的个人信息、考试科目及成绩信息。有学生成绩信息录入、学生成绩信息修改、学生成绩信息显示、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能

7、。1湖南工程学院课程设计报告2. 总体设计2.1 系统功能分析:系统通过调用函数来实现学生成绩信息录入、学生成绩信息修改、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。Insert ()函数用于录入学生成绩及信息; Update1()函数用来修改学生成绩及信息;Show()函数用于显示所有已有的记录; Delete ()函数用来删除学生成绩及信息;Search1()及 Search2()函数用来查询及信息; Save()函数用于将输入的信息存入文件内;主函数main()用于调用这些函数。2.2 系统功能模块划分与设计:本系统定义了 Score 类、 Subject 类、 Stude

8、nt 类以及 Class 类这四个类,定义了 Insert ()、Update1()、Show()、Save()、Delete ()、Search1()及 Search2()等函数来实现系统所需功能。2.3 系统功能模块图:学生成绩管理系统学学学学显记生生生生示录退成成成成全存出绩绩绩绩部入系查录删修记文统询入除改录件无查录无删无修显保退此询入此除此改示存出记成成记成记成成成成录功功录功录功功功功2湖南工程学院课程设计报告3. 详细设计3.1 分数类的设计 :该类定义了一个整型变量用来存放分数,定义了设置份总数和显示分数的函数。Score-score : int+Score( s: int=0

9、 )+set1 ():void+show1()图 3.13.2 科目类的设计 :该类定义了一个 Score 类类型的变量,定义了一个字符数组用来存放科目名称,定义了设置和显示私有成员的函数。Subject-subject20: char-sc : Score+Subject ()+set2 ():void+show2(): void图 3.23.3 学生类的设计 :该类定义了一个 Subject 类类型的数组,一个字符型数组和一个字符变量,两个整型变量以及设置和显示私有成员的函数。Student-name20 : char-num:int-S:char-n :int-p18 : Subject

10、+Student ()+set3 ():void+show3(): void+getNU1():int图 3.33湖南工程学院课程设计报告3.4 班级类的设计 :该类定义了一个 Student 类类型的变量、字符型数组、整型及设置和显示私有成员的函数等。Class-name20 : char-num2:int+Class ()+getNU(): int+set4 ():void+show4(): void图 3.43.5 各个类的关系描述 :Subject-subject20:char+Subject ()+set2 ():void+show2(): void1.*Score-score :i

11、nt-sc+Score(s:int=0 )1+set1 (): void+show1()图 3.5.14Student-name20 :char-num:int-S: char-n : int+Student ()+set3 (): void+show3():void+getNU1():int+getNA1():char *1.*Class-name20 :char-num2: int+Class ()+getNU():int+set4 (): void+show4():void1.*湖南工程学院课程设计报告Subject-p18-subject20 : char+Subject()1 +se

12、t2 (): void+show2(): void图 3.5.2Student-name20 : char-num:int-S :char-stu-n :int+Student()1 +set3 (): void+show3(): void+getNU1():int+getNA1():char *图 3.5.35湖南工程学院课程设计报告4. 系统调试4.1 在调试过程中,出现了下面一些错误:1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要注意。2、一开始主界面输入非正确字母时,没有提示错误。容易造成用户误解,在主函数的 switch 语句结束处加上 default:cout<

13、<" 选择错误,请从新选择!"就可以了。4.2 具体调试过程:主界面学生成绩录入学生成绩查询6湖南工程学院课程设计报告学生成绩显示学生成绩修改记录存入文件学生成绩删除7湖南工程学院课程设计报告5. 结果分析程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C+的编程思想来完成系统的设计,做到了用文件存储学生成绩信息、从文件中读取学生成绩信息、修改信息、查询信息、删除信息显示文件中存储的信息等要求。而且界面简洁, 容易操作。但是程序太长, 不够简练,导致出现错误很难发现和修改。8湖南工程学院课程设计报告6. 总

14、结首先,接到设计题目之后,在对本题目进行分析的时候,我懂得了一个很重要的道理,那就是说一个程序的产生需要一个对题目要求有一个正确全面的分析。其次,就该考虑程序算法的问题了, 一个好的算法是一个好程序的灵魂,也决定了一个程序的质量。两个星期的课设虽然有些疲劳和困倦,但带给我很多的收获。 C+已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多。对这些知识也有了更深的理解和很好的掌握。也有很多理论上说得过去的代码,但到了实际操作,却是行不通的。这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。只能避过这些方法,换方法实现。在课程设

15、计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。于是在课程设计的时候, 我花了四天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。这次的课程设计,真是让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好 c+是多么的重要。在这个程序的设计过程中,我清楚的意识到自己的

16、水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。9湖南工程学院课程设计报告7. 程序代码#include<iostream>#include<fstream>#include<string&g

17、t;using namespace std;int M=100;static int M2=0;class Score/分数类private:int score;public:Score(int s=0)score=s;void set1()cout<<" 请输入分数 :"<<endl;cin>>score;void show1()cout<<": "<<score<<endl;class Subject/科目类private:Score sc;char subject20;publ

18、ic:Subject()10湖南工程学院课程设计报告for(int i=0;i<20;i+)subjecti=0;void set2()cout<<" 请输入科目名称 :"<<endl;cin>>subject;sc.set1();void show2()cout<<subject;sc.show1();class Student/学生类private:Subject p18;char name20;int num;char S;int n;public:Student()for(int i=0;i<20;i+)n

19、amei=0;num=0;S=0;void set3();void show3();11湖南工程学院课程设计报告int getNU1()return num;char *getNA1()return name;void Student:show3()/学生类显示函数int i;cout<<" 姓名 :"<<name<<"t性别 :"<<S<<"t学号 :"<<num<<endl;for(i=0;i<8;i+)p1i.show2();void St

20、udent:set3()/学生类修改函数int i;cout<<" 请输入学生姓名 :"cin>>name;cout<<" 请输入该生学号 :"cin>>num;cout<<" 请输入该生性别 :"cin>>S;cout<<" 请输入每门课程的名字及分数."<<endl;for(i=0;i<8;i+)p1i.set2();class Class/班级类12湖南工程学院课程设计报告private:Student st

21、u;char name220;int num2;public:Class()for(int i=0;i<20;i+)name2i=0;num2=0;int getNU()return stu.getNU1();string getNA()return stu.getNA1();void set4()cout<<" 请输入该生所在班级名称:"cin>>name2;cout<<" 请输入该班班号 :"cin>>num2;stu.set3();void show4()cout<<" 班

22、级 :"<<name2<<"t班号 :t"<<num2;stu.show3();friend void Search1(Class c1,int count1);friend void Search2(Class c2,int count2);friend void Update1(Class c3,int count_d);friend void Delete(Class c4,int *count_c);friend void Insert(Class c5,int &count_a);b100;13湖南工程学院课程

23、设计报告void Save(Class c6,int count)/记录存入文件函数fstream file("class.dat",ios:out|ios:binary);if(!file)cout<<"file coun't open."<<endl;abort();for(int i=0;i<count;i+)file.write(reinterpret_cast<char*>(&c6i),sizeof(c6i);file.close();void Show(Class c7)/显示记录函数

24、int i=0;for(i=0;c7i.getNU()!=0;i+)c7i.show4();void Insert(Class c5,int &count_a)/信息录入函数int i,in_number,n=0;if(count_a=M)14湖南工程学院课程设计报告cout<<" 空间已满 !"return;cout<<" 请输入学生的学号: "<<endl;dodocin>>in_number;for(i=0;i<count_a;i+)if(c5i.getNU()=in_number)co

25、ut<<" 已有相同的学号 , 请重新输入 !"<<endl;break;while(c5i.getNU()=in_number);if(in_number<1)cout<<" 输入错误,请重新输入大于零的整数!"<<endl;while(in_number<=0);i=count_a;c5i.set4();count_a+;cout<<endl<<endl;n=n+1;if(n!=0)cout<<" 学生成绩录入成功 !"<<

26、endl;15湖南工程学院课程设计报告void Search1(Class c1,int count1)/按学号查询信息函数int i,number,flag=1,n=0;cout<<" 请输入所要查询的学生的学号:"<<endl;docin>>number;if(number<=0)cout<<" 输入错误,请重新输入大于零的整数!"<<endl;while(number<=0);for(i=0;i<count1&&flag;i+)if(c1i.getNU()

27、=number)c1i.show4();flag=0;n=n+1;if(n=0)cout<<" 没有查询到该学生的资料!"<<endl;void Search2(Class c2,int count2) /按姓名查询信息函数int i,n=0;char nam20;cout<<" 请输入所要查询的学生的姓名:"<<endl;cin>>nam;for(i=0;i<count2;i+)if(c2i.getNA()=nam)c2i.show4();16湖南工程学院课程设计报告n=n+1;if(n

28、=0)cout<<" 没有查询到该学生的资料!"<<endl;void Update1(Class c3,int count_d) /信息修改函数int i,n=0,flag=1,m;char nam20;cout<<" 请输入所要修改的学生的姓名:"<<endl;cin>>nam;for(i=0;i<count_d&&flag;i+)if(c3i.getNA()=nam)cout<<" 请输入所要修改的学生的学号:"<<endl

29、;cin>>m;for(i=0;i<count_d&&flag;i+)if(c3i.getNU()=m)c3i.set4();flag=0;n=n+1;break;if(n!=0)17湖南工程学院课程设计报告cout<<" 修改成功 !"<<endl;if(n=0)cout<<" 没有查询到该学生的资料!"<<endl;void Delete(Class c4) /信息删除函数fstream file("class.dat",ios_base:in|io

30、s_base:out|ios_base:binary);int i=0;for(i=0;i<100;i+)file.read(reinterpret_cast<char*>(&bi),sizeof(bi);for(i=0;bi.getNU()!=0;i+);M2=i;Class c9;int n=0,number,flag=1;cout<<"请输入要要进行操作的学生的学号:"<<endl;cin>>number;for(i=0;i<M2&&flag;i+)if(c4i.getNU()=num

31、ber)for(i;i<M2&&flag;i+)c4i=c4i+1;flag=0;(M2)-;n=1;Save(b,M2);break;18湖南工程学院课程设计报告if(n=0)cout<<" 没有查询到可以删除的资料!"<<endl;if(n!=0)cout<<" 资料删除成功 !"<<endl;int main()char a1;fstream file("class.dat",ios_base:in|ios_base:out|ios_base:binary);

32、cout<<"tt*欢迎进入学生成绩管理系统*"<<endl<<endl;docout<<" 请选择功能: "<<endl;cout<<"ttta.学生成绩查询 "<<endl;cout<<"tttb.学生成绩录入 "<<endl;cout<<"tttc.学生成绩删除 "<<endl;cout<<"tttd.学生成绩修改 "<&

33、lt;endl;cout<<"ttte.显示全部记录 "<<endl;cout<<"tttf.记录存入文件 "<<endl;cout<<"tttg.退出系统 "<<endl;int i=0;for(i=0;i<100;i+)file.read(reinterpret_cast<char*>(&bi),sizeof(bi);19湖南工程学院课程设计报告for(i=0;bi.getNU()!=0;i+);M2=i;cin>>a1;switch(a1)case a':cout&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论