面向对象课程设计报告---学生成绩管理系统

合集下载

c++面向对象课程设计报告(学生成绩管理系统)

c++面向对象课程设计报告(学生成绩管理系统)

课程设计报告课程名称面向对象程序设计课题名称学生成绩管理系统专业计算机科学与技术班级计算机1001学号**********姓名指导教师李珍辉陈淑红李杰军2011年12 月28 日湖南工程学院课程设计任务书课程名称面向对象程序设计课题学生成绩管理系统专业班级计算机1001学生姓名学号**********指导老师李珍辉陈淑红李杰军审批任务书下达日期2011 年11 月15 日任务完成日期2011 年12 月28 日一、设计内容与设计要求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。

要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。

2.课题题目1)公司库存管理系统2)高校学籍管理系统3)高校工资管理系统4)高校人事管理系统5)通讯录程序设计6)学生成绩管理系统7) 图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统3.设计要求:⑴设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相应题号的课题。

随意换题者不记成绩。

⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。

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

③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。

④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。

⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。

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

学生成绩管理系统面向对象分析设计

学生成绩管理系统面向对象分析设计

目录一.需求调查分析 (2)二.管理系统设计 (2)(1)确定执行者 (2)(2)确定用况 (2)(3)用况的简要描述 (3)三.学生成绩管理系统功能模型 (3)1. 功能模型描述 (3)2. 功能模型的用例图 (4)3. 成绩管理员处理成绩,补考等的用例图 (5)四.学生成绩管理系统对象模型 (6)1. 静态建模 (6)2. 动态模型 (9)一.需求调查分析在学生成绩管理系统中,管理员要为每个学生建立账户,并给学生注册不同的学号,密码,账户内存储学生的个人信息和记录成绩。

学生可以通过系统查询自己葛根没考试成绩。

查询成绩时,先输入学生的学号,系统验证有效性和学生是否可以查询成绩,无效则提示其原因,有效则显示学生的基本信息(包括成绩),供学生核对。

然后输入要查询的科目,系统查阅学生成绩信息数据库,显示科目成绩信息,供学生查阅。

如果有成绩不及格的情况,先转入补考处理,然后提交补考请求,系统接受后增加补考信息,并登记显示时间地点,补考过后输入补考成绩。

成绩管理员定期或不定期对学生成绩信息进行入库、修改、删除等管理以及注销,包括补考成绩管理。

二.学生成绩管理系统设计(1)确定执行者通过对系统需求陈述的分析,可以确定系统有两个执行者:管理员和学生。

简要描述如下:1)管理员:管理员按系统授权维护和使用系统不同功能,可以创建、修改、删除学生信息和成绩信息即学生管理和成绩管理,及补考管理学生:通过互联网查询终端,查询成绩信息和个人基本信息,还可以在符合条件下自己办理补考。

(2)确定用况在确定执行者之后,结合学生成绩管理的领域知识,进一步分析系统的需求,可以确定系统的用况有:•成绩管理:包含各门科目成绩情况查询;•学生管理:包含学生信息管理;•补考管理:包含补考时间、地点、成绩查询。

3)用况的简要描述:1)成绩情况查询:学生通过互联网查询终端登录系统后,查阅个人的所有成绩纪录。

2)学生信息管理:管理员登录后,对读者详细信息进行增、删、改等维护管理。

学生成绩管理系统设计报告

学生成绩管理系统设计报告

附录一应用程序综合设计汇报——题目: 学生成绩管理系统2023年1月1.需求分析学生成绩管理系统是学生管理系统旳重要构成部分, 对学生旳德、智、体全面评估有很大旳作用, 因此学生成绩管理系统应当可认为顾客提供以便旳查询平台和数据存储功能。

老式是使用人工旳方式对学生旳信息进行存储, 对于个人旳学生成绩来说, 数据旳整顿和分析就显得很麻烦, 不利于查找、更新和维护。

因此, 顾客但愿制作一种学生成绩管理系统, 来提高老师旳工作效率, 同步予以老师便利。

根据与顾客旳交流, 一般对学生成绩管理系统有如下几点旳规定:A.可认为顾客提供以便旳数据查询功能, 满足复杂、多样旳数据查询需求。

一般我们所需要旳数据都不是可以从原始数据库中直接读取旳, 往往需要一定旳加工, 这样才能使老式复杂旳人工操作变得简朴又精确。

B、成绩管理要可以提供学校考试安排旳管理, 学生考试成绩旳管理, 以及学生单科和总成绩旳记录和分析等功能。

这些是一种学生成绩管理系统最重要旳功能构成, 包括数据旳集成、整合和分析。

上述是顾客对系统需求和功能需求旳两点规定, 我根据顾客对功能旳需求, 将整个学生成绩管理系统提成两个大旳模块, 即基本信息设置模块和成绩管理模块(如图1)。

为了能使本系统可以基本独立, 通过度析, 我又添加了学生基本信息添加功能和班级基本信息添加功能, 这样系统就可以实现本系统旳全面界面化。

2.概要设计根据需求分析, 成绩管理系统重要是实现对考试和学生成绩旳管理功能, 我设计旳整个学生成绩管理系统分为两个大旳模块, 分别为基本信息设置模块和成绩管理模块, 这两个模块包括了成绩管理系统旳所有数据存储和功能需求, 为了愈加清晰了分解学生成绩管理系统, 每个大模块又由几种子功能模块构成, 完毕顾客旳需求。

两个大模块旳子模块详细划分如图2所示:基本信息设置是成绩管理系统中某些基本数据旳添加和修改, 为了可以实现本学生成绩管理系统旳独立性, 我在基本信息设置模块中添加了学生和班级信息添加模块, 以便顾客能直接添加新增旳数据, 而不需要通过程序员来完毕。

《面向对象程序设计》课程设计报告_学生成绩管理系统

《面向对象程序设计》课程设计报告_学生成绩管理系统

《面向对象程序设计》课程设计报告专业:姓名:学号:指导教师:二O一一年九月日一、课程设计问题描述设计完成一套学生成绩管理系统,要求能够实现学生成绩管理的基本功能,包括:学生成绩的键盘录入、学生成绩的条件输出、学生成绩的条件抽取、学生成绩的条件排序、条件修改。

其中具体设计内容如下:(1)从键盘输入学生基本信息(学号、姓名、英语成绩、高数成绩),计算每个学生的平均成绩,并将数据存入文件student.txt文件中。

(2)按如下格式输出大于等于平均成绩的学生信息:学号姓名英语高数平均成绩(3)将两门可课都不及格的学生信息抽取出来,另存入文件bat.txt中。

(4)提供按学号进行查询的功能。

(5)尽可能使用运算符重载以简化操作。

(6)使用多文件结构和菜单操作,并考虑相应的操作权限。

二、课程设计目的和要求:经过一学期对面向对象程序设计的初步学习,对于面向对象程序设计有了一定的编程基础,为更好地理解和掌握面向对象程序设计,将通过为期一周的上机实践编程,运用面向对象程序设计完成课程设计编程任务的同时,补充和完善面向对象程序设计的相关知识。

三、系统环境(包括硬件环境和软件环境)无。

四、程序设计思想描述首先明确这是一个学生成绩管理系统,那么这个系统应该具备管理学生成绩的基本功能。

同时考虑到使用对象的不同,应考虑到权限方面的相应开放,为简便用户操作以及个人能力限制将采用文字菜单模式。

1、成绩管理系统——>成绩(中心)——>学生(以学生为管理对象)——>学生属性和方法。

*学生类属性包括:学号、姓名、英语成绩、高数成绩、平均成绩、名次(以链表的当前位置为计)。

*学生类方法包括:构造函数、析构函数、设置函数、修改函数以及获取相应属性的函数。

2、操作权限——>教师——>教师特权。

*教师特权包括:成绩录入、条件抽取、条件修改、排序以及删除。

操作权限——>学生——>普通权限。

*教师与学生共同权限包括:条件查询。

学生成绩管理系统实验报告,C++

学生成绩管理系统实验报告,C++

char sjk[10];
char jsjyy[10];
int pjf;
}Student;
Student stu[80];
int menu()
{
char c;
for(;c<'0'||c>'8';)
{
system("cls");
cout<<"
欢迎使用本学
生 成 绩 管 理 系 统 !! "<<endl;
#include<string.h>
#include<iostream>
#include<iomanip>
using namespace std;
typedef class
{
public:
char num[10];
char cla[10];
char name[10];
char byyl[10];
char jsjzc[10];
二 总 体 设 计 ........................................................................................5 三 详 细 设 计 ........................................................................................6 四 调 试 与 测 试 ................................................................................. 16 五 心 得 体 会 ......................................................................................21

python学生成绩管理系统课程设计报告

python学生成绩管理系统课程设计报告

Python学生成绩管理系统课程设计报告一、引言学生成绩管理是教育管理中的重要组成部分,为了更加高效地管理学生的成绩信息和提供方便的查询功能,开发了一款基于Python的学生成绩管理系统。

本文档将详细介绍系统的设计思路、功能模块和实现方式。

二、需求分析1. 功能需求学生成绩管理系统需要满足以下功能需求:•学生信息录入与管理:包括姓名、学号、性别、班级等信息的录入、修改和删除功能。

•成绩录入与管理:包括课程成绩的录入、修改和删除功能,同时支持查询各个学生的成绩。

•成绩统计与分析:可以根据学生或课程进行成绩的统计分析,包括平均分、最高分、最低分、及格率等指标。

•成绩报表导出:可以将成绩报表导出为CSV文件供其他系统使用。

2. 性能需求•系统要求具备良好的响应速度,能够在短时间内处理大量的学生成绩信息。

•系统要求具备良好的稳定性和可靠性,能够处理异常情况,并能够对用户输入进行合理的判断和提醒。

三、系统设计1. 总体设计学生成绩管理系统采用面向对象的设计思想,包括以下几个主要的类:•学生类(Student):用于存储学生的基本信息。

•成绩类(Grade):用于存储学生成绩信息,包括课程名称、成绩等。

•管理系统类(ManagementSystem):用于操作学生和成绩信息,包括添加、修改、删除等功能。

2. 模块设计学生成绩管理系统包含以下几个模块:•学生管理模块:用于管理学生的基本信息,包括学生信息的录入、修改和删除功能。

•成绩管理模块:用于管理学生的成绩信息,包括成绩的录入、修改和删除功能,以及成绩的查询和统计功能。

•导出模块:用于将成绩报表导出为CSV文件。

四、系统实现1. 环境与工具•开发语言:Python•开发工具:PyCharm•版本控制工具:Git2. 代码结构学生成绩管理系统的代码结构如下:├── main.py├── student.py├── grade.py└── management_system.py其中,main.py为系统入口文件,student.py、grade.py和management_system.py分别为学生、成绩和管理系统的类定义文件。

面向对象课程设计学生成绩管理程序

面向对象课程设计学生成绩管理程序

面向对象课程设计学生成绩管理程序随着计算机技术的飞速发展,计算机应用范围不断扩大,它已经广泛应用于不同的行业和领域。

计算机科学的发展对各个行业的发展产生了巨大的影响,计算机科学在教育领域的发展也十分重要。

在学校教育中,学生成绩管理是学校工作的重中之重,但由于传统的方法容易出现成绩录入错误、工作量大等问题,为了解决这些问题,在计算机应用技术的帮助下,开发出了学生成绩管理程序。

本文的目的是通过使用面向对象的方法开发出一个学生成绩管理程序,实现学院成绩的有效管理和维护。

首先,综述了面向对象的基本理论和概念,并介绍了Java语言的特点。

其次,讨论了系统设计之前的几个重要步骤。

最后,实际设计出一个学生成绩管理程序,给出了程序运行时的输出结果。

第一部分介绍面向对象理论和概念面向对象是一种新颖的程序设计思想,它以面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)为主要内容,它将对象、类、抽象、继承、封装等元素作为基本编程模块,并结合实际需求来设计出各种应用程序。

与其他编程模式不同,面向对象的编程方式极大地减少了编程的复杂度,提高了系统的可视化和可维护性,增强了系统的可重用性,以及它可以支持大规模程序的开发。

第二部分介绍Java编程语言Java是一门易学而又强大的面向对象编程语言,它采用简单的、一致的和面向对象的设计思想,使得编程变得简单而又有效。

由于它的可移植性和跨平台的特性,Java得到了广泛的应用。

Java有很多特性,如面向对象、自动垃圾回收、多线程、简单性、安全性、低成本维护等,这些特性使它在开发人员中深受欢迎。

第三部分统设计在设计系统之前,需要分析需求,然后实设计步骤,将系统分解为一系列模块,包括功能分析、类视图设计、模块划分、界面设计、数据库设计、测试设计等。

系统的功能分析:本系统的主要功能是对学生的成绩进行管理,包括登录、添加学生成绩、查询学生成绩、录入成绩等功能。

类视图设计:为了实现系统的功能,设计出几个基本类,包括学生类、成绩类、学生管理类、数据库类等,每个类都有各自的属性和操作方法,并且它们之间存在继承关系和多态关系。

java阶段项目:学生成绩管理系统(面向对象)

java阶段项目:学生成绩管理系统(面向对象)

Java 学生信息管理系统(面向对象)一:效果如下:二:具体实现代码如下:Student类Student .javapublic class Student {private int id;private String name;private int age;private int java;private int csharp;private int html;private int sql;private int sum;private int avg;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getJava() {return java;}public void setJava(int java) { this.java = java;}public int getCsharp() {return csharp;}public void setCsharp(int csharp) { this.csharp = csharp;}public int getHtml() {return html;}public void setHtml(int html) { this.html = html;}public int getSql() {return sql;}public void setSql(int sql) {this.sql = sql;}public int getSum() {return sum;}public void setSum() {this.sum = this.java+this.csharp+this.html+this.sql;}public int getAvg() {return avg;}public void setAvg() {this.avg = this.sum/4;}public String toString(){Stringmsg="\t"+this.id+"\t"++"\t"+this.age+"\t"+this.java+"\t"+this.csharp+"\t"+this.html+"\t"+this.sql+"\t"+this.sum+"\t" +this.avg;return msg;}}学生信息管理类StudentAdmin.javaimport java.util.Scanner;public class StudentAdmin {String msg="\t编号\t姓名\t年龄\tjava\tcsharp\thtml\tsql\t总分\t平均分";//打印现有学生public void print(Student [] stu){System.out.println(msg);for(int i=0;i<stu.length;i++){if(stu[i]!=null){System.out.println(stu[i]);}}}//添加学生public void addStudent(String name,int age,Student [] stu) {Student student=new Student();student.setName(name);student.setAge(age);int i=this.getIndex(stu);if(i==9999){System.out.println("数组已经容纳最大量,不能再接受");}else{student.setId(i);}stu[i]=student;}//获取编号public int getIndex(Student [] stu){for(int i=0;i<stu.length;i++){if(stu[i]==null){return i;}}return 9999;}//根据学生编号查找学生public void selectStudent(int id,Student [] stu){System.out.println(msg);for(int i=0;i<stu.length;i++){if(stu[i]!=null){if(this.exits(id, stu[i])){if(stu[i].getId()==id){System.out.println(stu[i]);return;}}}}System.out.println("\t没有这个学生存在!!!");}//查询学生是否存在public boolean exits(int id,Student stu){if(stu!=null){if(stu.getId()==id){return true;}else{return false;}}return false;}//更新学生信息public void updateStudent(int id,String name,int age,Student [] stu) {for(int i=0;i<stu.length;i++){if(stu[i]!=null){if(this.exits(id, stu[i])){if(stu[i].getId()==id){stu[i].setName(name);stu[i].setAge(age);System.out.println("--更新学生信息成功--");return;}}}}System.out.println("该学生不存在!!!");}public void deleteStudent(int id,Student [] stu){for(int i=0;i<stu.length;i++){if(this.exits(id, stu[i])){stu[i]=null;this.print(stu);System.out.println("\t--删除学生成功--");return;}}System.out.println("删除学生失败");}//根据学生编号获取学生姓名public String getName(int id,Student [] stu){for(int i=0;i<stu.length;i++){if(this.exits(id, stu[i])){return stu[i].getName();}}return null;}//根据学生编号输入学生成绩public void inputScore(int id,Student [] stu,Scanner input) {String name=this.getName(id, stu);System.out.println("请输入"+name+"的java成绩:");int java=input.nextInt();System.out.println("请输入"+name+"的csharp的成绩:");int csharp=input.nextInt();System.out.println("请输入"+name+"的html的成绩:");int html=input.nextInt();System.out.println("请输入"+name+"的sql的成绩:");int sql=input.nextInt();for(int i=0;i<stu.length;i++){if(this.exits(id, stu[i])){stu[i].setJava(java);stu[i].setCsharp(csharp);stu[i].setHtml(html);stu[i].setSql(sql);stu[i].setSum();stu[i].setAvg();break;}}this.print(stu);}//指定某门课的成绩排序public void scoreSort(int num,Student [] stu){Student [] arr=stu;if(num==1){for(int i=0;i<stu.length-1;i++){for(int j=i+1;j<stu.length;j++){if(stu[i]!=null&&stu[j]!=null){if(stu[i].getJava()<stu[j].getJava()){Student s=arr[i];arr[i]=arr[j];arr[j]=s;}}}}this.print(arr);}else if(num==2){for(int i=0;i<stu.length-1;i++){for(int j=i+1;j<stu.length;j++){if(stu[i]!=null&&stu[j]!=null){if(stu[i].getCsharp()<stu[j].getCsharp()){Student s=arr[i];arr[i]=arr[j];arr[j]=s;}}}}this.print(arr);}else if(num==3){for(int i=0;i<stu.length-1;i++){for(int j=i+1;j<stu.length;j++){if(stu[i]!=null&&stu[j]!=null){if(stu[i].getHtml()<stu[j].getHtml()){Student s=arr[i];arr[i]=arr[j];arr[j]=s;}}}}this.print(arr);}else if(num==4){for(int i=0;i<stu.length-1;i++){for(int j=i+1;j<stu.length;j++){if(stu[i]!=null&&stu[j]!=null){if(stu[i].getSql()<stu[j].getSql()){Student s=arr[i];arr[i]=arr[j];arr[j]=s;}}}}this.print(arr);}}//总分排序public void sumSort(Student [] stu){Student [] arr=stu;for(int i=0;i<arr.length-1;i++){for(int j=i+1;j<arr.length;j++){if(arr[i]!=null&&arr[j]!=null){if(arr[i].getSum()<arr[j].getSum()){Student s=arr[j];arr[j]=arr[i];arr[i]=s;}}}}this.print(arr);}}测试类Test.Javaimport java.util.Scanner;public class Test {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubScanner input=new Scanner(System.in);StudentAdmin admin=new StudentAdmin();System.out.println("请输入学生的人数:");int studentNumber=input.nextInt();Student [] students=new Student[studentNumber];while(true){System.out.println("请选择要执行的功能(输入编号):");System.out.println("10:添加一个学生");System.out.println("11:查找一个学生");System.out.println("12:根据学生编号更新学生基本信息");System.out.println("13:根据学生编号删除学生");System.out.println("14:根据编号输入学生各门科的成绩");System.out.println("15:根据某门成绩进行排序");System.out.println("16:根据总分进行排序");System.out.println("99:退出系统");int number=input.nextInt();if(number==10){System.out.println("--执行添加学生操作--");System.out.println("请输入要添加学生的姓名:");String name=input.next();System.out.println("请输入要添加学生的年龄:");int age=input.nextInt();admin.addStudent(name, age, students);admin.print(students);}else if(number==11){System.out.println("--执行查找学生操作--");System.out.println("请输入要查找学生的编号:");admin.selectStudent(input.nextInt(), students);}else if(number==12){System.out.println("执行更新学生信息操作");System.out.println("请输入要修改信息学生的编号");int id=input.nextInt();System.out.println("请输入修改后学生的姓名:");String name=input.next();System.out.println("请输入修改后学生的年龄:");int age=input.nextInt();admin.updateStudent(id, name, age, students);admin.print(students);}else if(number==13){System.out.println("--执行删除操作--");System.out.println("请输入要删除学生的编号:");int id=input.nextInt();admin.deleteStudent(id, students);}else if(number==14){System.out.println("--执行输入学生成绩操作--");System.out.println("请输入要输入成绩学生的编号:");int id=input.nextInt();admin.inputScore(id, students, input);}else if(number==15){System.out.println("执行成绩排序操作");System.out.println("请选择用什么成绩排序:(1:java 2:charp 3:html 4:sql)");int score=input.nextInt();admin.scoreSort(score, students);}else if(number==16){System.out.println("执行总分排序操作");admin.sumSort(students);}else if(number==99){System.out.println("退出系统成功!!!");break;//System.exit(0);}else{System.out.println("输入有误,请重新输入");}}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书课程名称面向对象程序设计课题学生成绩管理系统专业班级计算机学生姓名学号指导老师李珍辉陈淑红李杰军审批任务书下达日期 2011 年 11 月 15 日任务完成日期 2011 年 12 月 28 日一、设计内容与设计要求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。

要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。

2.课题题目1)公司库存管理系统2)高校学籍管理系统3)高校工资管理系统4)高校人事管理系统5)通讯录程序设计6)学生成绩管理系统7) 图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统3.设计要求:⑴设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相应题号的课题。

随意换题者不记成绩。

⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。

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

③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E -R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。

④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。

⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。

⑥关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(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:学生成绩管理系统(一)、课程设计题目:学生成绩管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。

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

4、写出设计说明书(三)、设计方法和基本原理:1、问题描述(功能要求):设计一个实用的小型学生成绩管理程序,具有查询,检索和删除功能,并且能够打开或修改指定文件及将多个文件组成一个文件。

它完全使用类来实现,充分体现面向对象的程序设计特点。

要求:实现主要功能:建立文件,文件的存取和显示,删除记录,查询记录。

可以随时检索,删除,或增加记录,也可以保存或取消新的记录。

2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书目录1.系统需求分析 ....................................... 错误!未定义书签。

2.总体设计 ........................................... 错误!未定义书签。

3.详细设计 ........................................... 错误!未定义书签。

4.系统调试 ........................................... 错误!未定义书签。

5.结果分析 ........................................... 错误!未定义书签。

6.总结 ............................................... 错误!未定义书签。

7.程序代码 ........................................... 错误!未定义书签。

1.系统需求分析系统设计的目的与意义:现在的学校学生数量较多,各样的考试也比较频繁,因此需要一个学生成绩管理系统来对学生的成绩进行管理。

系统功能需求:本系统有四个类,Score类、Subject类、Student类、Class类,存储学生的个人信息、考试科目及成绩信息。

有学生成绩信息录入、学生成绩信息修改、学生成绩信息显示、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。

2.总体设计系统功能分析:系统通过调用函数来实现学生成绩信息录入、学生成绩信息修改、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。

Insert()函数用于录入学生成绩及信息;Update1()函数用来修改学生成绩及信息;Show()函数用于显示所有已有的记录;Delete()函数用来删除学生成绩及信息;Search1()及Search2()函数用来查询及信息;Save()函数用于将输入的信息存入文件内;主函数main()用于调用这些函数。

系统功能模块划分与设计:本系统定义了Score类、Subject类、Student类以及Class类这四个类,定义了Insert()、Update1()、Show()、Save()、Delete()、Search1()及Search2()等函数来实现系统所需功能。

系统功能模块图:3.详细设计分数类的设计:该类定义了一个整型变量用来存放分数,定义了设置份总数和显示分数的函数。

图科目类的设计:该类定义了一个Score类类型的变量,定义了一个字符数组用来存放科目名称,定义了设置和显示私有成员的函数。

图学生类的设计:该类定义了一个Subject类类型的数组,一个字符型数组和一个字符变量,两个整型变量以及设置和显示私有成员的函数。

图班级类的设计:该类定义了一个Student类类型的变量、字符型数组、整型及设置和显示私有成员的函数等。

图各个类的关系描述:4.图系统调试在调试过程中,出现了下面一些错误:1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要注意。

2、一开始主界面输入非正确字母时,没有提示错误。

容易造成用户误解,在主函数的switch语句结束处加上default:cout<<"选择错误,请从新选择!";就可以了。

具体调试过程:主界面学生成绩录入学生成绩查询学生成绩显示学生成绩修改记录存入文件学生成绩删除5.结果分析程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C++的编程思想来完成系统的设计,做到了用文件存储学生成绩信息、从文件中读取学生成绩信息、修改信息、查询信息、删除信息显示文件中存储的信息等要求。

而且界面简洁,容易操作。

但是程序太长,不够简练,导致出现错误很难发现和修改。

6.总结首先,接到设计题目之后,在对本题目进行分析的时候,我懂得了一个很重要的道理,那就是说一个程序的产生需要一个对题目要求有一个正确全面的分析。

其次,就该考虑程序算法的问题了,一个好的算法是一个好程序的灵魂,也决定了一个程序的质量。

两个星期的课设虽然有些疲劳和困倦,但带给我很多的收获。

C++已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多。

对这些知识也有了更深的理解和很好的掌握。

也有很多理论上说得过去的代码,但到了实际操作,却是行不通的。

这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。

只能避过这些方法,换方法实现。

在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。

于是在课程设计的时候,我花了四天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。

我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。

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

在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。

看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。

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

以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。

7.程序代码#include<iostream>#include<fstream>#include<string>using namespace std;int M=100;static int M2=0;class Score{ how2();}void Student::set3(){ <<endl;for(i=0;i<8;i++)p1[i].set2();}class Class{ <<endl;abort();}for(int i=0;i<count;i++)(reinterpret_cast<char*>(&c6[i]),sizeof(c6[i]));();}void Show(Class c7[]) etNU()!=0;i++) c7[i].show4();}void Insert(Class c5[],int &count_a) etNU()==in_number)cout<<"已有相同的学号,请重新输入!"<<endl;break;}}while(c5[i].getNU()==in_number);if(in_number<1)cout<<"输入错误,请重新输入大于零的整数!"<<endl;}while(in_number<=0);i=count_a;c5[i].set4();count_a++;cout<<endl<<endl;n=n+1;if(n!=0)cout<<"学生成绩录入成功!"<<endl;}void Search1(Class c1[],int count1) etNU()==number) {c1[i].show4();flag=0;n=n+1;}if(n==0)cout<<"没有查询到该学生的资料!"<<endl;}void Search2(Class c2[],int count2) etNA()==nam) {c2[i].show4();n=n+1;}if(n==0)cout<<"没有查询到该学生的资料!"<<endl;}void Update1(Class c3[],int count_d) etNA()==nam) {cout<<"请输入所要修改的学生的学号:"<<endl;cin>>m;for(i=0;i<count_d&&flag;i++){if(c3[i].getNU()==m){c3[i].set4();flag=0;n=n+1;}}}break;}if(n!=0)cout<<"修改成功!"<<endl;if(n==0)cout<<"没有查询到该学生的资料!"<<endl;}void Delete(Class c4[]) etNU()!=0;i++);M2=i;Class c9;int n=0,number,flag=1;cout<<"请输入要要进行操作的学生的学号:"<<endl;cin>>number;for(i=0;i<M2&&flag;i++){if(c4[i].getNU()==number){for(i;i<M2&&flag;i++)c4[i]=c4[i+1];flag=0;(M2)--;n=1;Save(b,M2);break;}}if(n==0)cout<<"没有查询到可以删除的资料!"<<endl;if(n!=0)cout<<"资料删除成功!"<<endl;}int main(){char a1;fstream file("",ios_base::in|ios_base::out|ios_base::binary);cout<<"\t\t**************欢迎进入学生成绩管理系统**************"<<endl<<endl;do{cout<<"请选择功能:"<<endl;cout<<"\t\t\ta.学生成绩查询"<<endl;cout<<"\t\t\tb.学生成绩录入"<<endl;cout<<"\t\t\tc.学生成绩删除"<<endl;cout<<"\t\t\td.学生成绩修改"<<endl;cout<<"\t\t\te.显示全部记录"<<endl;cout<<"\t\t\tf.记录存入文件"<<endl;cout<<"\t\t\tg.退出系统"<<endl;int i=0;for(i=0;i<100;i++){(reinterpret_cast<char*>(&b[i]),sizeof(b[i]));}for(i=0;b[i].getNU()!=0;i++);M2=i;cin>>a1;switch(a1){case ‘a':{cout<<"\t\t\t请继续选择:"<<endl;cout<<"\t\t\t\t1.按学号查询信息"<<endl;cout<<"\t\t\t\t2.按姓名查询信息"<<endl;int x;cin>>x;switch(x){case 1:Search1(b,M2);break;case 2:Search2(b,M2);break;default:cout<<"选择错误,请重新选择!"<<endl;}}break;case ‘b':Insert(b,M2);break;case ‘c':{();Delete(b);}break;case ‘d':Update1(b,M2);break;case ‘e':Show(b);break;case ‘f':{();Save(b,M2);cout<<"保存文件成功!"<<endl;fstream file("",ios_base::in|ios_base::out|ios_base::binary);};break;case ‘g':{();break;}default:cout<<"选择错误,请重新选择!"<<endl;}}while(a1!='g');return 0;}三、参考书籍1.《C++程序设计课程设计》刘振安编著 TP312C5632.《C++ Builder和Delphi课程设计与系统开发案例》伍俊良清华大学出版社7-302-06072-XC++课程设计案例精编严华峰中国水利水电出版社 7-5084-2007-1 2004 C++课程设计与系统开发案例伍俊良清华大学出版社 7-302-05968-3 2002 C++语言课程设计 : 案例精选与编程指导陈清华朱红东南大学出版社7-81089-275-4 2003++课程设计案例精编中国水利水电出版社 7-5084-1004-1 20027.数据结构课程设计案例精编 : 用C/C++描述李建学李光元吴春芳清华大学出版社 7-302-14536-9 2007(编程平台不限,vc++, c++ Builder等等。

相关文档
最新文档