中南大学。二○一二~二○一三学年第二学期。
信息科学与工程学院。
面向对象c++语言课程设计报告。
课程名称: 面向对象c++语言课程设计
班级: 电气工程2012级1232 班
学号:0909123232 0909123214
姓名: 岳艳涛姜植元。
指导教师: 杨旺。
二○一三年七月。
1.系统需求与功能分析3
2.总体结构设计。
2.系统详细设计和系统实现。
3.系统的调试测试。
4.测试结果。
5.课程设计心得体会。
7.程序源**与运行结果。
系统需求与功能分析
系统需求分析
1) 能完成学生信息的插入、查询、修改、删除、输出等功能;
2)采用单链表与顺序表存储结构实现;
3) 所有数据以外部文件方式保存。
2.2系统功能分析。
1)要设计一个学生成绩管理系统,其功能包括:
1.插入函数add():将学生成绩信息插入到链表中;
2.查询函数search():分别可以按学号和按姓名进行学生成绩查询;
3.删除函数delect():当需要删除的学号和姓名一致时则删除对应的学生记录;
4.修改函数alter():修改指定的学生成绩信息;
5.输出函数show():输出全部学生成绩信息;
6.插入函数insert();将学生信息通过链表插入到指定学生的后边。
7.菜单函数menu():为程序的菜单函数为实现各种功能提供便捷;
8.读取数据函数preserve():从外部文件读取学生成绩信息;
9.保存数据函数s**e():将数据保存到外部文件中。
系统详细设计和系统实现。
通过对学生信息管理系统的功能分析,可以定义出系统的总体结构模块图,如图3.1所示。
图3.1学生管理系统总体结构设计。
前面的分析中已经定义了系统各个模块,属于静态建模的范围。在系统运行时刻的动态模型应该由系统的流程决定。当用户运行该系统后可以来进行学生信息插入管理、学生信息查询管理、学生信息删除管理、学生信息修改管理及学生信息输出等操作,具体的流程如图3.
2所示。
图3.2系统流程图。
主模块应负责应用程序的主界面,由它调用其他模块。因此主模块应具有操作性好、界面清晰的特点,使用户能够很方便地找到所需功能。
根据功能需求的结果分析,主界面应该由学生信息插入管理,学生信息查询管理、学生信息修改管理、学生信息删除管理和学生信息输出管理组成,可以通过输入相应的数字进入相应的功能模块。4 链表学生信息管理系统详细设计和系统实现。
系统总体设计完成后,就可以根据需求对各个模块来进行实现了。在本系统中需要编码实现的主要有学生信息插入、学生信息查询、学生信息修改、学生信息删除和学生信息输出等5个模块。
1)学生信息插入模块。
添加的信息包括学号(不允许重复)、姓名(不允许重复)、分数。流程图如下图4.1所示。
图4.1插入模块流程图。
本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程如图4.2所示。
图4.2尾插法建立单链表操作示意图。
2)学生信息查询模块。
按姓名和学号查找学生信息的流程图分别如下图4.3所示。
图4.3按姓名查找学生信息流程图。
在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。当p指向某个结点时判断是否为第i个结点,若是则查找成功;否则,将工作指针p后移,即将p指向原来所指结点的后继结点。直到p为null时查找失败。
单链表查找过程如图4.4所示。
图4.4单链表查找过程的示意图。
按学号查询学生信息同按姓名查找学生信息,此处不再详细列出。
3)学生信息修改模块。
首先要查找与要修改数据相匹配的信息,若没有则返回失败。否则把相应的信息输出,然后再重新输入新的数据并保存到单链表。
4)学生信息删除模块。
当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配的上,则进行删除操作,否则返回失败。其流程图4.5如下:
图4.5删除学生信息模块流程图。
删除操作定义为将单链表的第i个结点删去。因为在单链表中结点ai存储地址在其前驱结点ai-1的指针域,所以必须首先找到ai-1的存储地址p,然后令p的next域指向ai 的后继结点,即把结点ai 从链上摘下来,最后释放结点ai的存储空间,如图4.6所示。
图4.6在单链表中删除结点指针的变化情况。
5)学生信息输出模块。
从单链表表头遍历整个单链表,将所有数据输出。其部分**如下:
void operate::show
char ch;
student *p3;
system("cls");
p3=student_first->next
if(!tempelse
cout<<"1.返回主菜单"< cin>>ch;
while(ch!='1')
menu系统的调试测试。
这是链表的主界面。
首先是要验证身份进入系统。
选择1学生信息录入后如图所示录入两位学生的信息。
选择3修改学生信息之后。
选择信息显示函数5
学生信息的到修改。
选择信息删除函数后操作前操作函数信息删除函数。
查找的方法有两种1.姓名2.学号按照两种方法均可以。
选择操作**7程序结束。
课程设计心得体会。
通过这次数据结构课程设计的实验,在解决问题的过程中,充分体会到了数据结构这门课程对于软件设计的重要性,也体会到了数据结构+算法=程序这句话的真正含义,一个实际问题的解决第一步就是要依赖于良好的抽象思维的,将实际问题转化为相应的数据结构,只有这一步做好了,才能采取相应的算法和优化方法解决问题和解决好问题。
次c++面向对象课程设计,我们学会了如何用c++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是**设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集**现在主菜单中,便于调用。
根据c++课程所学的概念、理论和方法,按照c++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对c++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
程序源**。
#include
#include
#include<>
using namespace std;
class enter为了验证身份。
public
char name_1[12];
char num_1[12];
class student
public:
student();
void ofile(ofstream &of
void infile(ifstream &f
void show_1
void set(int num,char *name,int age,char sex,char *adress,int computer,int math,int english);
int hnum();
char *hname();
int hage();
char hsex();
char *hadress();
int hcomputer();
int hmath();
int henglish();
student *next
protected:
int num;
char name[20
int age;
char sex;
char adress[20];
int computer;
int math;
int english;
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C课程设计报告
题目各类图形面积与周长计算和高考倒计时。学生姓名张磊 学号 20131344054 学院计算机与软件学院 专业软件工程 指导教师马瑞。二 一五年六月 25 日。目录。1 引言 1 1.1 系统开发背景和意义 1 1.2 服务器运行环境 2 1.3 课题内容 2 2 系统需求分析及相关技术介绍 2 2...
C 课程设计报告
c 程序课程设计报告。学院 资源与安全工程学院 专业班级 城市地下空间工程1303 姓名卢途。指导教师 彭述权。课程设计时间 2013 2014学年第二学期18 19周。一 题目一 设计一 学生成绩管理系统 它的主要功能是对学生的成绩进行输入 修改和管理。系统功能要求 界面要求 学生成绩管理系统 1...