面向对象课程设计报告_第1页
面向对象课程设计报告_第2页
面向对象课程设计报告_第3页
面向对象课程设计报告_第4页
面向对象课程设计报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

课程设计任务书

课程名称面对对象程序设计

课题同学成果管理系统

专业班级计算机

同学姓名_______________

学号

指导老师李珍辉陈淑红李杰军

审批________________________

任务书下达日期2022年11月15日

任务完成日期2022年12月28日

一、设计内容与设计要求

1.课程设计目的:

面对对象程序设计课程设计是集中实践性环节之一,是学习完《面对对象程序设计》

课程后进行的一次全面的综合练习。要求同学达到娴熟把握C++语言的基本学问和技能;

基本把握面对对象程序设计的思想和方法;能够采用所学的基本学问和技能,解决简洁

的面对对象程序设计问题,从而提高动手编程解决实际问题的力量。

2.课题题目

1)公司库存管理系统

2)高校学籍管理系统

3)高校工资管理系统

4)高校人事管理系统

5)通讯录程序设计

6)同学成果管理系统

7)图书管理系统

8)文本编辑器的设计与实现

9)同学考勤管理系统

10)公司人员管理系统

3.设计要求:

(1)设计课题题目:每位同学依据自己学号除以10所得的余数加1选择相

应题号的课题。随便换题者不记成果。

⑵依据自己对应的课题完成以下主要工作:①完成系统需求分析:包括

系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完

成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模

块图)。③完成系统具体设计:包括数据库需求分析;数据库概念结构设计(E

—R图);数据库规律结构设计;类层次图;界面设计与各功能模块实现。④系

统调试:调试消失的主要问题,编译语法错误及修改,重点是运行规律问题修

改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,具体列出

每一步的操作步骤。⑥关键源程序(带注释)

⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。

(4)不得抄袭他人程序、课程设计报告,每个人应体现自己的共性设计。

二、进度支配

第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:同学成果管理系统

(一)、课程设计题目:

同学成果管理系统

(二)、目的与要求:

1、目的:

(1)要求同学达到娴熟把握C++语言的基本学问和技能;

(2)基本把握面对对象程序设计的基本思路和方法;

(3)能够采用所学的基本学问和技能,解决简洁的面对对象程序设计问题。

2、基本要求:

(1)要求采用面对对象的方法以及C++的编程思想来完成系统的设计;

(2)要求在设计的过程中,建立清晰的类层次;

(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;

(4)在系统的设计中,至少要用到面对对象的一种机制。

3、创新要求:

在基本要求达到后,可进行创新设计,如依据查找结果进行修改的功能。

4、写出设计说明书

(三)、设计方法和基本原理:

1、问题描述(功能要求):

设计一个有用的小型同学成果管理程序,具有查询,检索和删除功能,并且能够打

开或修改指定文件及将多个文件组成一个文件。它完全使用类来实现,充分体现面对对

象的程序设计特点。

要求:

实现主要功能:建立文件,文件的存取和显示,删除纪录,查询纪录。可以随时检

索,删除,或增加纪录,也可以保存或取消新的纪录。

2、问题的解决方案:

依据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系包括属性和行为;

(3)依据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述(包括属性和方法);

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告以及系统使用说明书

目录

I.系统需求分析.....................................................0

2.总体设计.........................................................0

3.具体设计..........................................................1

4.系统调试.........................................................4

5.结果分析.........................................................7

6.总结...............................................................7

7.程序代码.........................................................8

1.系统需求分析

1.1系统设计的目的与意义:

现在的学校同学数量较多,各样的考试也比较频繁,因此需要一个同学成果管理

系统来对同学的成果进行管理。

1.2系统功能需求:

本系统有四个类,Score类、Subject类、Student类、Class类,存储同学的个人

信息、考试科目及成果信息。有同学成果信息录入、同学成果信息修改、同学成果信息

显示、同学成果信息删除、同学成果信息查询以及数据保存文件等功能。

2.总体设计

2.1系统功能分析:

系统通过调用函数来实现同学成果信息录入、同学成果信息修改、同学成果信息删

除、同学成果信息查询以及数据保存文件等功能。Insert()函数用于录入同学成果及

信息;Updatel()函数用来修改同学成果及信息;Show。函数用于显示全部已有的

纪录;Delete()函数用来删除同学成果及信息;Searchi()及Search2()函数用来

查询及信息;Save。函数用于将输入的信息存入文件内;主函数main。用于调用这

些函数。

2.2系统功能模块划分与设计:

本系统定义了Score类、Subject类、Student类以及Class类这四个类,定义了

Insert()、Updatel()、Show()、Save()、Delete()、Searchi()及Search2()

等函数来实现系统所需功能。

2.3系统功能模块图:

同学成果管理系统

同显

学同

退

学示

学存

成全

成系

果部

果文

删件

修录

除改

退

3.具体设计

3.1分数类的设计:

该类定义了一个整型变量用来存放分数,定义了设置份总数和显示分数的函数。

Score

-score:int

+Score(s:int=0)

+setl():void

+showl()

图3.1

3.2科目类的设计:

该类定义了一个Score类类型的变量,定义了一个字符数组用来存放科目名称,定

义了设置和显示私有成员的函数。

_____________Subject_______________

-subject[20]:char

-sc:Score________________________

+Subject()

+set2():void

+show2():void

图3.2

3.3同学类的设计:

该类定义了一个Subject类类型的数组,一个字符型数组和一个字符变量,两个整

型变量以及设置和显示私有成员的函数。

Student

-name[20]:char

-num:int

-S:char

-n:int

-pl[8]:Subject

+Student()

+set3():void

+show3():void

+getNUl():int

图3.3

3.4班级类的设计:

该类定义了一个Student类类型的变量、字符型数组、整型及设置和显示私有成员

的函数等。

Class

-name[20]:char

-num2:int

+Class()

+getNU():int

图3.4

3.5各个类的关系描述:

Student

-name[20]:char

-num:int

-S:char

-n:int

+Student()

+set3():void

+show3():void

+getNUl():int

+getNAl():char*

v

4.系统调试

4.1在调试过程中,消失了下面一些错误:

1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要留意。

2、一开头主界面输入非正确字母时,没有提示错误。简洁造成用户误会,在主函

数的switch语句结束处加上default:cout<<"选择错误,请从新选择!就可以了。

4.2具体调试过程:

主界面

也欢迎进入学生成绩管理系统一

青选择功能:

“生

aZ绩查询

绩入

bZ生

cZ生

d绩

e显

^入

f记

on退

同学成果录入

情输入学生的学号:

-

该生

T鳏

l

南.1

该1

用A-

名2

.1善J

号1

A-该

本^

:m的

请^

11目

用:

gA-

.]

分数

用A-

:

80.JA

I1A^

同学成果查询

请继续选择:

1.揍学号查询信息

2晨姓名查询信息

%输入所要查询的学生的学号:

班级:计算机班号:i00i姓名:张三性别:m学号:i

C++:80

同学成果显示

班级:计算机班号:1001姓名:张三性别方学号:2

C++:90

同学成果修改

请输入所要修改的学生的姓名:

JP---

黯入所要修改的学生的学号:

该生

所在

主f

I,lT

CD.J

需1

I该

,I1A-?

I学«

闫I1A-J

^该

l,2

rl.席I1A-

门:M

主.1A-

.,

月:

I名

I)^A目

I月

+

C+

分数

输I

WW-.

,

纪录存入文件

成绩

a查询

b文

绩删

c幸

d改

e录

f4件

^

退

a^

保存文件成功?

同学成果删除

成绩

a查

绩录

b生

c成绩

d成绩

全部

e显

拿入

f记

水统

9退

请输入要要进行操作的学生的学号:

5.结果分析

程序总共设计了四个类,满意了课题对类的要求,在设计的过程中,建立了较为清

晰的类层次,也采用了面对对象的方法以及C++的编程思想来完成系统的设计,做到了

用文件存储同学成果信息、从文件中读取同学成果信息、修改信息、查询信息、删除信

息显示文件中存储的信息等要求。而且界面简洁,简洁操作。但是程序太长,不够简练,

导致消失错误很难发觉和修改。

6.总结

首先,接到设计题目之后,在对本题目进行分析的时候,我懂得了一个很重要的道

理,那就是说一个程序的产生需要一个对题目要求有一个正确全面的分析。其次,就该

考虑程序算法的问题了,一个好的算法是一个好程序的灵魂,也打算了一个程序的质量。

两个星期的课设虽然有些疲惫和困倦,但带给我很多的收获。C++已经学了一个学

期了,有很多学问都存在似懂非懂的现象,这种现象通过实际的上机操作,已经削减了

很多。对这些学问也有了更深的理解和很好的把握。也有很多理论上说得过去的代码,

但到了实际操作,却是行不通的。这种困惑,有很多已经通过实际操作解决了,并能够

深刻熟悉,但也有很多没有明白。只能避过这些方法,换方法实现。在课程设计之前,

由于有了综合试验的阅历与教训,明白了写代码这一步是特别重要的,由于当你把代码

输入电脑,并用编译器将其运行,发觉通过不了,再来检查找出问题,这是一件特别辛

苦的事情,也很铺张时间。于是在课程设计的时候,我花了四天的时间来规划与写代码,

将要实现的内容分析清晰,才把代码输入电脑。我觉得写程序,应当先找到该程序中的

核心地方,用多种方法来实现该核心,这才可能避开等到发觉规律上或者编译器不支持

上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。

这次的课程设计,真是让我充分的感觉到了要自己设计一个程序是多么的难,以及

学习好C++是多么的重要。在这个程序的设计过程中,我清晰的意识到自己的水平有多

么的薄弱,课程的学问学得有多么的不扎实。看网上的例子似乎觉得也没那么难,自己

一上机实际操作就消失了很多问题,调试的时候系统总是在报错,还有很多警告,每增

加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。

虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。

以后还会有很多的课程设计,肯定要吸取这次的教训,把学问学懂学透学精,真正

的为我所用,这样走上社会我才能真正的发挥所长。

7.程序代码

#include<iostream>

#include<fstream>

#include<string>

usingnamespacestd;

intM=100;

staticintM2=0;

classScore{〃分数类

private:

intscore;

public:

Score(ints=0){

score=s;

}

voidsetl0{

cout<<〃请输入分数:z/<<endl;

cin>>score;

voidshowl(){

cout<<zz:/z<<score«endl;

)

};

classSubject{〃科目类

private:

Scoresc;

charsubject[20];

public:

Subject(){

for(inti=0;i<20;i++)

subject[i]=0;

J

voidset2(){

cout«〃请输入科目名称:〃<<endl;

cin>>subject;

sc.setl();

)

voidshow2(){

cout<<subject;

sc.showl();

)

);

classStudent{〃同学类

private:

Subjectpl[8];

charname[20];

intnum;

charS;

intn;

public:

Student(){

for(inti=0;i<20;i++)

name[i]=0;

num=0;

S=0;

)

voidset3();

voidshow3();

intgetNUl(){returnnum;}

char*getNAl(){returnname;}

);

voidStudent::show3(){〃同学类显示函数

inti;

cout<〈〃姓名:性别:,,«S<<,,\t学号:,z«num«endl;

for(i=0;i<8;i++)

pl[i].show2();

voidStudent::set3(){〃同学类修改函数

inti;

cout<<〃请输入同学姓名:〃;

cin>>name;

cout«〃请输入该生学号:〃;

cin>>num;

cout<〈〃请输入该生性别:〃;

cin>>S;

cout*〃请输入每门课程的名字及分数.〃<<endl;

for(i=0;i<8;i++)

pl[i].set2();

classClass{〃班级类

private:

Studentstu;

charname2[20];

intnum2;

public:

Class(){

for(inti=0;i<20;i++)

name2[i]=0;

num2=0;

)

intgetNU0{returnstu.getNUl();}

stringgetNAO{returnstu.getNAl();}

voidset4(){

coutG〃请输入该生所在班级名称:〃;

cin>>name2;

cout<<〃请输入该班班号:〃;

cin>>num2;

stu.set3();

)

voidshow4(){

cout<〈〃班级:/z<<name2«/z\t班号:\t/z<<num2;

stu.show3();

friendvoidSearchi(Classcl[],intcountl);

friendvoidSearch2(Classc2[],intcount2);

friendvoidUpdatel(Classc3[],intcount_d);

friendvoidDelete(Classc4[],int*count_c);

friendvoidInsert(Classc5[],int&count_a);

}b[100];

voidSave(Classc6[],intcount)〃纪录存入文件函数

fstreamfile(z,class.dat〃,ios::out|ios::binary);

if(!file)

cout«/zfilecoun,topen.zz<<endl;

abort();

for(inti=0;i<count;i++)

file,write(reinterpret_cast<char*>(&c6[i]),sizeof(c6[i]));

file.closeO;

voidShow(Classc7[])〃显示纪录函数

inti=0;

for(i=0;c7Li].getNU()!=0;i++)

c7[i].show4();

voidInsert(Classc5[],int&count_a)〃信息录入函数

(

inti,in_number,n=0;

if(count_a==M)

cout*〃空间已满!〃;

return;

cout«〃请输入同学的学号:〃《endl;

cin»in_number;

for(i=0;i<count_a;i++)

if(c5[i].getNU()==in_number)

cout<<〃已有相同的学号,请重新输入!〃<<endl;

break;

)

}while(c5[i].getNU()==in_number);

if(in_number<l)

cout。〃输入错误,请重新输入大于零的整数!z,«endl;

}while(in_number<=0);

i=count_a;

c5[i].set4();

count_a++;

cout<<endl«endl;n=n+l;

if(n!=0)

cout<<〃同学成果录入胜利!〃<<endl;

voidSearchi(Classcl[],intcountl)〃按学号查询信息函数

(

inti,number,flag=l,n=0;

cout«〃请输入所要查询的同学的学号:〃〈Cendl;

do

(

cin>>number;

温馨提示

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

评论

0/150

提交评论