课程设计选题管理系统设计

北 华 航 天 工 业 学 院

《基于C++的面向对象程序设计实例》

课程设计报告

报告题目: 课程设计选题管理系统设计 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机应用技术 作者所在班级: 作 者 姓 名 : 指导教师姓名: 斯庆巴拉 完 成 时 间 :

北华航天工业学院教务处制

课程设计任务书

摘 要

在当前的各大高校课程设计选题管理系统中,为了方便管理、查询、修改与统计相关信息,一般都会将学生、课程设计题目等信息进行编号存储,所以就必须拥有一套完善的并且适合自身特点的信息化管理系统,以实现对冗杂的课程设计题目信息与学生信息的管理目的,还可以提高效率,方便同学们选题。

本文利用Microsoft 的Visual C++ 6.0(类和函数,数组,对象等) 编写程序,实现了用户对课程设计选题的管理操作。

本系统主要有八个功能模块:包括添加、查询、显示、修改、删除、统计、保存、读取等功能。已经过全面的系统测试,能够很好的运行,达到了预期设计预想。

关键词:系统设计 类 函数 数组 文件操作

目录

摘 要 . ................................................................................................................... 1 第一章 绪论 . ....................................................................................................... 1

1.1 课程设计的目的 . .................................................................................. 1 1.2 课程设计的背景和意义 . ...................................................................... 1

1.2.1 课程设计的背景 . ..................................................................... 1 1.2.2 课程设计的意义 . ..................................................................... 1 1.3 课程设计环境 . ...................................................................................... 1 第二章 需求分析 . ............................................................................................... 2

2.1 问题描述 . .............................................................................................. 2 2.2 功能要求 . .............................................................................................. 2 2.3 问题的解决方案 . .................................................................................. 2 第三章 系统设计 . ............................................................................................... 3

3.1 数据设计 . .............................................................................................. 3

3.1.1 类设计 . ..................................................................................... 3 3.1.2 函数设计 . ................................................................................. 3 3.2 结构设计 . .............................................................................................. 3

3.2.1 系统流程图 . ............................................................................. 3 3.2.2 界面设计 . ................................................................................. 4

第四章 系统实现 . ............................................................................................... 5

4.1 类实现 . .................................................................................................. 5 4.2 函数实现 . .............................................................................................. 5 4.3 主函数实现 . ........................................................................................ 14 第五章 系统测试 . ............................................................................................. 16

5.1 模块测试 . ............................................................................................ 16 5.2 课程设计过程中遇到的问题 . ............................................................ 22 总 结 . ................................................................................................................. 22 致 谢 . ................................................................................................................. 22 参考文献 . ............................................................................................................. 23 附 录 . ................................................................................................................. 24

第一章 绪论

1.1 课程设计的目的

(1)要求学生能够熟练掌握C++语言的基本知识和技能。 (2)基本掌握面向对象程序设计的基本思路和方法。 (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

1.2 课程设计的背景和意义

1.2.1 课程设计的背景

1. 理论研究基础

(1)运用面向对象(类和对象)的机制来实现系统功能。

(2)建立清晰的类与函数之间的关系,学会对函数调用的熟练使用。 2. 技术层面的支持

Microsoft Visual C++6.0 Microsoft Visual studio2010

1.2.2 课程设计的意义

通过此次课程设计,清晰的掌握C++语言的基本知识并能熟练的应用进行编程。

1.3 课程设计环境

软件:WindowsXP 、windows7系统,

Microsoft Visual Studio 2010,

Microsoft Visual C++ 6.0编译器。

硬件:戴尔 双核处理器,2G 内存,512独立显卡,80G 硬盘。 宏基 双核处理器,2G 内存,1G 独立显卡,500G 硬盘。

第二章 需求分析

2.1 问题描述

课程设计题目包括:编号、名称、关键词、实现技术、人员数(由几个人来完成)等信息。

学生信息包括:学号、姓名、性别、年龄、班级、专业等信息。

2.2 功能要求

(1)添加功能:程序能够添加学生的记录和课程设计题目记录,提供选择界面供用户选择所要添加的类别。添加记录时,要求学号和编号要唯一。如果添加了重复记录,则提示数据添加重复并取消添加。

(2)查询功能:可根据学号、姓名、编号、名称等信息对已添加的学生和课程设计题目进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有学生的信息和课程设计题目信息,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。

(5)删除功能:主要实现对已添加的学生和课程设计题目记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能按课程设计题目名称统计出学生选择该题目的人员的信息。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。 (8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用

2.3 问题的解决方案

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

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;

(8)完成系统总结报告。

第三章 系统设计

3.1 数据设计

3.1.1 类设计

定义一个学生类Student ,类中包括学号stuid ,姓名stuname ,性别sex ,年龄age ,班级clas ,专业specialty ,及所选课程的课程编号couid ,课程名称couname ,关键词keyword, 实现技术technology ;定义一个管理类Guanli ,其成员函数包括向文件输入函数void write(int n);从文件读取函数,int read();添加学生信息函数void add(),查询信息函数void search (),按学号查询函数void searchsid(),按姓名查询函数void searchsname(),按题目编号查询函数void searchcid(),按题目名称查询函数void searchcname();修改信息函数void alter() ;删除信息函数void del();统计信息函数void total();显示函数void display()以及一个数据成员Student stu[50]。

3.1.2 函数设计

void write(int n),向文件中写入数据,打开文本文档,并将数据输入到文本文档中;int read(),向文件中写入数据从文件中读数据,打开文本文档,并将文本文档中的数据输出;void add(S),添加学生信息;void search()查询信息(可根据学生的学号、姓名、所选课程编号、课程名称进行信息查询);void alter(),修改学生信息;void del()删除学生信息,根据输入的学生学号通过调用函数实现;void total(),统计学生信息(根据学生所选课程名称进行统计);void display(),显示函数用来显示所有学生信息;int main()主函数,显示主菜单,调用各个函数实现所有功能。

3.2 结构设计

3.2.1 系统流程图

课程设计学生选课系统设计结构图:进入功能界面后,可以进行多项功能选择,如添加、查询、显示、修改、删除、统计,将数据写入文件以及从文件读取数据等;而查询功能又可以分为按学号、姓名、题目编号、题目名称等方式进行查询。如图3-1示。

图3-1课程设计学生选课系统设计结构图

3.2.2 界面设计

主界面是“欢迎使用课程设计选课系统”,下面是所要使用的功能:1. 添加新的纪录 2. 查询记录信息 3. 修改学生信息 4. 删除学生信息 5. 统计所有记录 6. 显示所有记录 0. 退出系统

其中,查询记录又可以弹出一个界面分别有以下几个功能: (1).根据学号查询 (2).根据姓名查询 (3).根据编号查询 (4).根据题目名称查询

每实现一个功能,重新弹出主界面,进行下一个的功能选择。

第四章 系统实现

4.1 类实现

class Student {

public:

int stuid; //学号

char stuname[10]; char sex[2]; int age; char clas[10]; char specialty[10]; int couid; char couname[10]; char keyword[20]; char technology[30]; }stu[50]; class Guanli {

private: Student stu[50]; public: void add(); void search(); void searchsid(); void searchsname(); void searchcid(); void searchcname(); void alter(); void del(); void total(); void display(); void write(int n); int read(); };

4.2 函数实现

void Guanli::write(int n) {

fstream myfile;

//姓名 //性别 //年龄 //班级 //专业

//题目编号 //题目名称 //关键词 //实现技术 //定义对象 //添加学生信息 //查询信息 //按学号查询信息 //按名字查询信息 //按题目编号查询信息 //按题目名称查询信息 //修改信息 //删除信息 //统计信息 //显示信息 //向文件中写入数据 //从文件中读数据

myfile.open("student.txt",ios::out|ios::binary); if(!myfile) { cout

int count=n;

myfile

}

myfile.close(); }

int Guanli::read() {

fstream myfile;

myfile.open("student.txt",ios::in|ios::binary); if(!myfile) { cout

int count;

myfile.seekg(0); myfile>>count;

for(int i=0;i>stu[i].stuid>>stu[i].stuname>>stu[i].sex>>stu[i].age>>stu[i].clas>>stu[i].specialty>>stu[i].couid>>stu[i].couname>>stu[i].keyword>>stu[i].technology;

cout

myfile.close(); return count; }

void Guanli::add() {

int n=read(); int i=0; char sign;

cout

while(sign!='N') { loop:

cout>stu[i].stuid; cout

cout

cin>>stu[i].stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas; cout>stu[i].specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout

cin>>sign; //输入判断 i++; }

write(i); }

void Guanli::search() {

int n=read();

cout

cout>c; switch(c) {

case 1:

g.searchsid(); break; case 2:

g.searchsname(); break; case 3:

g.searchcid(); break; case 4:

g.searchcname(); break; default: cout

g.write(n); }

void Guanli::searchsid() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

cout

cout

void Guanli::searchsname() {

int n=read(); char a[10];

cout>a;

for(int i=0;i

if(strcmp(stu[i].stuname,a)==0) { cout

cout

cout

void Guanli::searchcid() {

int n=read(); int b; int i=0;

cout>b;

while((stu[i].couid-b)!=0&&i

cout

cout

cout

void Guanli::searchcname() {

int n=read(); char c[10];

cout>c;

for(int i=0;i

if(strcmp(stu[i].couname,c)==0) { cout

cout

cout

cout

cout

void Guanli::alter() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

stu[i].clas

cout>stu[i]. stuid ; cout

cin>>stu[i]. stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas ; cout

cin>>stu[i]. specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout>c; if(c='y') cout

void Guanli::del() {

int n=read(); int s; int i=0,j;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

strcpy(stu[j].specialty,stu[j+1].specialty); stu[j].couid=stu[j+1].couid;

strcpy(stu[j].couname,stu[j+1].couname); strcpy(stu[j].keyword,stu[j+1].keyword); strcpy(stu[j].technology,stu[j+1].technology); } cout

cout

cout

void Guanli::total() { { int n=read(); char c[10]; cout>c; for(int i=0;i

} } }

void Guanli::display() {

int n=read();

cout

stu[i].clas

" 关键词"

} }

4.3 主函数实现

int main() {

char choice;

cout>choice; Guanli g;

if(choice=='0') { cout

else if(choice=='1') {

g.add(); system("pause"); main(); } else if(choice=='2') { g.search(); system("pause"); main(); } else if(choice=='3') { g.alter(); system("pause"); main(); } else if(choice=='4') { g.del(); system("pause"); main(); } else if(choice=='5') { g.total(); system("pause"); main(); } else if(choice=='6') { g.display(); system("pause"); main(); } else { cout

}

第五章 系统测试

5.1 模块测试

1. 添加功能

添加学生信息界面如图5-1示。

图5-1 添加学生信息

2. 查询功能

查询学生信息的界面如图5-2示。

图5-2 查询学生信息

(1)根据学生学号进行查询,界面如图5-3示。

图5-3根据学生学号查询学生信息(2)根据学生姓名进行查询,界面如图5-4示。

图5-4根据学生姓名查询学生信息

(3)根据题目编号进行查询,界面如图5-5示。

图5-5根据题目编号查询学生信息

(4)根据题目名称进行查询,界面如图5-6示。

图5-6根据题目名称查询学生信息

3. 修改功能

修改学生的相关信息,界面如图5-7示。

图5-7修改学生的相关信息

4. 删除功能

删除学生的信息,界面如图5-8示。

图5-8删除学生的信息

5. 统计功能

根据题目名称统计学生的信息,界面如图5-9示。

图5-9根据题目名称统计学生的信息6. 显示功能

显示全部学生的信息,界面如图5-10示。

图5-10显示全部学生的信息

7. 退出系统

退出使用系统,界面如图5-11示

图5-10退出使用系统

5.2 课程设计过程中遇到的问题

类的定义时要声明对象,另外,在调用类中定义的成员函数时,要通过类的对象进行调用。另外,写入文件的数据在显示时只能显示第一个数据,需要用到for 循环语句。注意数据成员的类型,字符串型或整形等,一定要注意数据类型的匹配,否则会报错,对文件的操作不熟悉,文件的读写操作不熟悉,对文件所存储的内容删除与修改不会。

总 结

经过这几天的课程设计的训练,我学到了很多知识,可以熟练的应用所学的知识,遇到不会的问题时通过与同学们交流,查找书籍,上网检索来解决问题。在做课程设计部时,首先对系统要求进行分析,根据要求设计类,设计函数,理解了面向对象的编程思想。

因为本人水平有限,在做课程设计是参考了很多资料,并在一些书籍中找到了解决问题的方法,在查阅书籍的同时进行学习,经过多次的修改与调试,最后交出了一份自己比较满意的答卷。

通过这次课设,让我进一步掌握了C++程序设计语言,更好的理解了面向对象的程序设计思想。我相信这会对以后的学习有帮助作用。在以后的学习中应当继续努力。

致 谢

首先,感谢老师给予我们这样一次机会,让我们独立完成课设,让我们学会了独立思考问题,提高了我们解决问题的能力,让我们在这学期即将结束的时候能将所学的知识应用到实践中,使我们加深了对所学知识的掌握程度。

再则我要感谢我的同学在课程设计上给予我的指导、提供给我的支持和帮助,是他们的帮助让我可以更加顺利的完成这次课设;同时也感谢学院为我提供良好的做课程设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学在这次课程设计的撰写过程中,我得到了许多人的帮助。

这次课设让我认识到自己不足,在解决问题的同时收获了友谊,在大家的帮助下完成了课设,感到很高兴。在此真挚的感谢帮助我的所有人,

参考文献

[1]安志远,贾振华. c++程序设计基础. 北京:高等教育出版社,2009 [2]谭浩强.c++面向对象程序设计. 北京:清华大学出版社,2006 [3]刘丽华.c++面向对象程序设计 .北京:人们交通出版社,2004 [4]王超,C++程序设计.-------------北京:地质出版社,2006.82 [5]王继明,C++程序设计与应用开发[M].北京:清华出版社,2008.

附 录

#include #include #include #include #include class Student {

public:

int stuid; //学号

char stuname[10]; //姓名 char sex[2]; //性别 int age; //年龄 char clas[10]; //班级 char specialty[10]; //专业

int couid; //题目编号 char couname[10]; //题目名称 char keyword[20]; //关键词 char technology[30]; //实现技术 }stu[50]; class Guanli {

private:

Student stu[50]; public:

void add(); //添加学生信息 void search(); //查询信息

void searchsid(); //按学号查询信息 void searchsname(); //按名字查询信息 void searchcid(); //按题目编号查询信息 void searchcname(); //按题目名称查询信息 void alter(); //修改信息 void del(); //删除信息 void total(); //统计信息 void display(); //显示信息

void write(int n); //向文件中写入数据 int read(); //从文件中读数据 };

//************************************************* //向文件中写入数据 void Guanli::write(int n) {

fstream myfile;

myfile.open("student.txt",ios::out|ios::binary); if(!myfile) { cout

int count=n;

myfile

}

myfile.close(); }

//************************************************* //从文件中读数据 int Guanli::read() {

fstream myfile;

myfile.open("student.txt",ios::in|ios::binary); if(!myfile) { cout

int count;

myfile.seekg(0); myfile>>count;

for(int i=0;i>stu[i].stuid>>stu[i].stuname>>stu[i].sex>>stu[i].age>>stu[i].clas>>stu[i].specialty>>stu[i].couid>>stu[i].couname>>stu[i].keyword>>stu[i].technology;

cout

myfile.close(); return count; }

//************************************************* //添加学生信息 void Guanli::add() {

int n=read(); int i=0; char sign;

cout

cout>stu[i].stuid; cout

cout

cin>>stu[i].stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas; cout>stu[i].specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout>sign; //输入判断 i++; }

write(i); }

//************************************************* //查询信息

void Guanli::search() {

int n=read();

cout

cout>c; switch(c) {

case 1:

g.searchsid(); break; case 2:

g.searchsname(); break; case 3:

g.searchcid(); break; case 4:

g.searchcname(); break; default: cout

g.write(n); }

//************************************************* //按学生学号查询

void Guanli::searchsid() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

cout

cout

//************************************************* //按学生姓名查询

void Guanli::searchsname() {

int n=read(); char a[10];

cout>a;

for(int i=0;i

if(strcmp(stu[i].stuname,a)==0) { cout

cout

cout

cout

//************************************************* //按题目编号查询 void Guanli::searchcid() {

int n=read(); int b; int i=0;

cout>b;

while((stu[i].couid-b)!=0&&i

cout

cout

cout

//************************************************* //按题目名称查询

void Guanli::searchcname() {

int n=read(); char c[10];

cout

cin>>c;

for(int i=0;i

if(strcmp(stu[i].couname,c)==0) { cout

cout

cout

cout

//************************************************* //修改学生信息 void Guanli::alter() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

stu[i].clas

cout>stu[i]. stuid ;

cout

cin>>stu[i]. stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas ; cout

cin>>stu[i]. specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout>c; if(c='y') cout

//************************************************* //删除学生信息 void Guanli::del() {

int n=read(); int s; int i=0,j;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

strcpy(stu[j].specialty,stu[j+1].specialty); stu[j].couid=stu[j+1].couid;

strcpy(stu[j].couname,stu[j+1].couname); strcpy(stu[j].keyword,stu[j+1].keyword); strcpy(stu[j].technology,stu[j+1].technology); } cout

cout

cout

//************************************************* //统计信息

void Guanli::total() { { int n=read(); char c[10];

cout>c; for(int i=0;i

//************************************************* //显示学生信息 void Guanli::display() {

int n=read();

cout

stu[i].clas

" 关键词"

} }

//************************************************* //主函数

int main() {

char choice;

cout>choice; Guanli g;

if(choice=='0') { cout

else if(choice=='1') { g.add(); system("pause"); main(); } else if(choice=='2') { g.search(); system("pause"); main(); } else if(choice=='3') { g.alter(); system("pause"); main(); } else if(choice=='4') { g.del(); system("pause"); main(); } else if(choice=='5')

{ g.total(); system("pause"); main(); } else if(choice=='6') { g.display(); system("pause"); main(); } else { cout

} 输入错误,请重新输入您的选择:";

北 华 航 天 工 业 学 院

《基于C++的面向对象程序设计实例》

课程设计报告

报告题目: 课程设计选题管理系统设计 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机应用技术 作者所在班级: 作 者 姓 名 : 指导教师姓名: 斯庆巴拉 完 成 时 间 :

北华航天工业学院教务处制

课程设计任务书

摘 要

在当前的各大高校课程设计选题管理系统中,为了方便管理、查询、修改与统计相关信息,一般都会将学生、课程设计题目等信息进行编号存储,所以就必须拥有一套完善的并且适合自身特点的信息化管理系统,以实现对冗杂的课程设计题目信息与学生信息的管理目的,还可以提高效率,方便同学们选题。

本文利用Microsoft 的Visual C++ 6.0(类和函数,数组,对象等) 编写程序,实现了用户对课程设计选题的管理操作。

本系统主要有八个功能模块:包括添加、查询、显示、修改、删除、统计、保存、读取等功能。已经过全面的系统测试,能够很好的运行,达到了预期设计预想。

关键词:系统设计 类 函数 数组 文件操作

目录

摘 要 . ................................................................................................................... 1 第一章 绪论 . ....................................................................................................... 1

1.1 课程设计的目的 . .................................................................................. 1 1.2 课程设计的背景和意义 . ...................................................................... 1

1.2.1 课程设计的背景 . ..................................................................... 1 1.2.2 课程设计的意义 . ..................................................................... 1 1.3 课程设计环境 . ...................................................................................... 1 第二章 需求分析 . ............................................................................................... 2

2.1 问题描述 . .............................................................................................. 2 2.2 功能要求 . .............................................................................................. 2 2.3 问题的解决方案 . .................................................................................. 2 第三章 系统设计 . ............................................................................................... 3

3.1 数据设计 . .............................................................................................. 3

3.1.1 类设计 . ..................................................................................... 3 3.1.2 函数设计 . ................................................................................. 3 3.2 结构设计 . .............................................................................................. 3

3.2.1 系统流程图 . ............................................................................. 3 3.2.2 界面设计 . ................................................................................. 4

第四章 系统实现 . ............................................................................................... 5

4.1 类实现 . .................................................................................................. 5 4.2 函数实现 . .............................................................................................. 5 4.3 主函数实现 . ........................................................................................ 14 第五章 系统测试 . ............................................................................................. 16

5.1 模块测试 . ............................................................................................ 16 5.2 课程设计过程中遇到的问题 . ............................................................ 22 总 结 . ................................................................................................................. 22 致 谢 . ................................................................................................................. 22 参考文献 . ............................................................................................................. 23 附 录 . ................................................................................................................. 24

第一章 绪论

1.1 课程设计的目的

(1)要求学生能够熟练掌握C++语言的基本知识和技能。 (2)基本掌握面向对象程序设计的基本思路和方法。 (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

1.2 课程设计的背景和意义

1.2.1 课程设计的背景

1. 理论研究基础

(1)运用面向对象(类和对象)的机制来实现系统功能。

(2)建立清晰的类与函数之间的关系,学会对函数调用的熟练使用。 2. 技术层面的支持

Microsoft Visual C++6.0 Microsoft Visual studio2010

1.2.2 课程设计的意义

通过此次课程设计,清晰的掌握C++语言的基本知识并能熟练的应用进行编程。

1.3 课程设计环境

软件:WindowsXP 、windows7系统,

Microsoft Visual Studio 2010,

Microsoft Visual C++ 6.0编译器。

硬件:戴尔 双核处理器,2G 内存,512独立显卡,80G 硬盘。 宏基 双核处理器,2G 内存,1G 独立显卡,500G 硬盘。

第二章 需求分析

2.1 问题描述

课程设计题目包括:编号、名称、关键词、实现技术、人员数(由几个人来完成)等信息。

学生信息包括:学号、姓名、性别、年龄、班级、专业等信息。

2.2 功能要求

(1)添加功能:程序能够添加学生的记录和课程设计题目记录,提供选择界面供用户选择所要添加的类别。添加记录时,要求学号和编号要唯一。如果添加了重复记录,则提示数据添加重复并取消添加。

(2)查询功能:可根据学号、姓名、编号、名称等信息对已添加的学生和课程设计题目进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有学生的信息和课程设计题目信息,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。

(5)删除功能:主要实现对已添加的学生和课程设计题目记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能按课程设计题目名称统计出学生选择该题目的人员的信息。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。 (8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用

2.3 问题的解决方案

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

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;

(8)完成系统总结报告。

第三章 系统设计

3.1 数据设计

3.1.1 类设计

定义一个学生类Student ,类中包括学号stuid ,姓名stuname ,性别sex ,年龄age ,班级clas ,专业specialty ,及所选课程的课程编号couid ,课程名称couname ,关键词keyword, 实现技术technology ;定义一个管理类Guanli ,其成员函数包括向文件输入函数void write(int n);从文件读取函数,int read();添加学生信息函数void add(),查询信息函数void search (),按学号查询函数void searchsid(),按姓名查询函数void searchsname(),按题目编号查询函数void searchcid(),按题目名称查询函数void searchcname();修改信息函数void alter() ;删除信息函数void del();统计信息函数void total();显示函数void display()以及一个数据成员Student stu[50]。

3.1.2 函数设计

void write(int n),向文件中写入数据,打开文本文档,并将数据输入到文本文档中;int read(),向文件中写入数据从文件中读数据,打开文本文档,并将文本文档中的数据输出;void add(S),添加学生信息;void search()查询信息(可根据学生的学号、姓名、所选课程编号、课程名称进行信息查询);void alter(),修改学生信息;void del()删除学生信息,根据输入的学生学号通过调用函数实现;void total(),统计学生信息(根据学生所选课程名称进行统计);void display(),显示函数用来显示所有学生信息;int main()主函数,显示主菜单,调用各个函数实现所有功能。

3.2 结构设计

3.2.1 系统流程图

课程设计学生选课系统设计结构图:进入功能界面后,可以进行多项功能选择,如添加、查询、显示、修改、删除、统计,将数据写入文件以及从文件读取数据等;而查询功能又可以分为按学号、姓名、题目编号、题目名称等方式进行查询。如图3-1示。

图3-1课程设计学生选课系统设计结构图

3.2.2 界面设计

主界面是“欢迎使用课程设计选课系统”,下面是所要使用的功能:1. 添加新的纪录 2. 查询记录信息 3. 修改学生信息 4. 删除学生信息 5. 统计所有记录 6. 显示所有记录 0. 退出系统

其中,查询记录又可以弹出一个界面分别有以下几个功能: (1).根据学号查询 (2).根据姓名查询 (3).根据编号查询 (4).根据题目名称查询

每实现一个功能,重新弹出主界面,进行下一个的功能选择。

第四章 系统实现

4.1 类实现

class Student {

public:

int stuid; //学号

char stuname[10]; char sex[2]; int age; char clas[10]; char specialty[10]; int couid; char couname[10]; char keyword[20]; char technology[30]; }stu[50]; class Guanli {

private: Student stu[50]; public: void add(); void search(); void searchsid(); void searchsname(); void searchcid(); void searchcname(); void alter(); void del(); void total(); void display(); void write(int n); int read(); };

4.2 函数实现

void Guanli::write(int n) {

fstream myfile;

//姓名 //性别 //年龄 //班级 //专业

//题目编号 //题目名称 //关键词 //实现技术 //定义对象 //添加学生信息 //查询信息 //按学号查询信息 //按名字查询信息 //按题目编号查询信息 //按题目名称查询信息 //修改信息 //删除信息 //统计信息 //显示信息 //向文件中写入数据 //从文件中读数据

myfile.open("student.txt",ios::out|ios::binary); if(!myfile) { cout

int count=n;

myfile

}

myfile.close(); }

int Guanli::read() {

fstream myfile;

myfile.open("student.txt",ios::in|ios::binary); if(!myfile) { cout

int count;

myfile.seekg(0); myfile>>count;

for(int i=0;i>stu[i].stuid>>stu[i].stuname>>stu[i].sex>>stu[i].age>>stu[i].clas>>stu[i].specialty>>stu[i].couid>>stu[i].couname>>stu[i].keyword>>stu[i].technology;

cout

myfile.close(); return count; }

void Guanli::add() {

int n=read(); int i=0; char sign;

cout

while(sign!='N') { loop:

cout>stu[i].stuid; cout

cout

cin>>stu[i].stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas; cout>stu[i].specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout

cin>>sign; //输入判断 i++; }

write(i); }

void Guanli::search() {

int n=read();

cout

cout>c; switch(c) {

case 1:

g.searchsid(); break; case 2:

g.searchsname(); break; case 3:

g.searchcid(); break; case 4:

g.searchcname(); break; default: cout

g.write(n); }

void Guanli::searchsid() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

cout

cout

void Guanli::searchsname() {

int n=read(); char a[10];

cout>a;

for(int i=0;i

if(strcmp(stu[i].stuname,a)==0) { cout

cout

cout

void Guanli::searchcid() {

int n=read(); int b; int i=0;

cout>b;

while((stu[i].couid-b)!=0&&i

cout

cout

cout

void Guanli::searchcname() {

int n=read(); char c[10];

cout>c;

for(int i=0;i

if(strcmp(stu[i].couname,c)==0) { cout

cout

cout

cout

cout

void Guanli::alter() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

stu[i].clas

cout>stu[i]. stuid ; cout

cin>>stu[i]. stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas ; cout

cin>>stu[i]. specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout>c; if(c='y') cout

void Guanli::del() {

int n=read(); int s; int i=0,j;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

strcpy(stu[j].specialty,stu[j+1].specialty); stu[j].couid=stu[j+1].couid;

strcpy(stu[j].couname,stu[j+1].couname); strcpy(stu[j].keyword,stu[j+1].keyword); strcpy(stu[j].technology,stu[j+1].technology); } cout

cout

cout

void Guanli::total() { { int n=read(); char c[10]; cout>c; for(int i=0;i

} } }

void Guanli::display() {

int n=read();

cout

stu[i].clas

" 关键词"

} }

4.3 主函数实现

int main() {

char choice;

cout>choice; Guanli g;

if(choice=='0') { cout

else if(choice=='1') {

g.add(); system("pause"); main(); } else if(choice=='2') { g.search(); system("pause"); main(); } else if(choice=='3') { g.alter(); system("pause"); main(); } else if(choice=='4') { g.del(); system("pause"); main(); } else if(choice=='5') { g.total(); system("pause"); main(); } else if(choice=='6') { g.display(); system("pause"); main(); } else { cout

}

第五章 系统测试

5.1 模块测试

1. 添加功能

添加学生信息界面如图5-1示。

图5-1 添加学生信息

2. 查询功能

查询学生信息的界面如图5-2示。

图5-2 查询学生信息

(1)根据学生学号进行查询,界面如图5-3示。

图5-3根据学生学号查询学生信息(2)根据学生姓名进行查询,界面如图5-4示。

图5-4根据学生姓名查询学生信息

(3)根据题目编号进行查询,界面如图5-5示。

图5-5根据题目编号查询学生信息

(4)根据题目名称进行查询,界面如图5-6示。

图5-6根据题目名称查询学生信息

3. 修改功能

修改学生的相关信息,界面如图5-7示。

图5-7修改学生的相关信息

4. 删除功能

删除学生的信息,界面如图5-8示。

图5-8删除学生的信息

5. 统计功能

根据题目名称统计学生的信息,界面如图5-9示。

图5-9根据题目名称统计学生的信息6. 显示功能

显示全部学生的信息,界面如图5-10示。

图5-10显示全部学生的信息

7. 退出系统

退出使用系统,界面如图5-11示

图5-10退出使用系统

5.2 课程设计过程中遇到的问题

类的定义时要声明对象,另外,在调用类中定义的成员函数时,要通过类的对象进行调用。另外,写入文件的数据在显示时只能显示第一个数据,需要用到for 循环语句。注意数据成员的类型,字符串型或整形等,一定要注意数据类型的匹配,否则会报错,对文件的操作不熟悉,文件的读写操作不熟悉,对文件所存储的内容删除与修改不会。

总 结

经过这几天的课程设计的训练,我学到了很多知识,可以熟练的应用所学的知识,遇到不会的问题时通过与同学们交流,查找书籍,上网检索来解决问题。在做课程设计部时,首先对系统要求进行分析,根据要求设计类,设计函数,理解了面向对象的编程思想。

因为本人水平有限,在做课程设计是参考了很多资料,并在一些书籍中找到了解决问题的方法,在查阅书籍的同时进行学习,经过多次的修改与调试,最后交出了一份自己比较满意的答卷。

通过这次课设,让我进一步掌握了C++程序设计语言,更好的理解了面向对象的程序设计思想。我相信这会对以后的学习有帮助作用。在以后的学习中应当继续努力。

致 谢

首先,感谢老师给予我们这样一次机会,让我们独立完成课设,让我们学会了独立思考问题,提高了我们解决问题的能力,让我们在这学期即将结束的时候能将所学的知识应用到实践中,使我们加深了对所学知识的掌握程度。

再则我要感谢我的同学在课程设计上给予我的指导、提供给我的支持和帮助,是他们的帮助让我可以更加顺利的完成这次课设;同时也感谢学院为我提供良好的做课程设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学在这次课程设计的撰写过程中,我得到了许多人的帮助。

这次课设让我认识到自己不足,在解决问题的同时收获了友谊,在大家的帮助下完成了课设,感到很高兴。在此真挚的感谢帮助我的所有人,

参考文献

[1]安志远,贾振华. c++程序设计基础. 北京:高等教育出版社,2009 [2]谭浩强.c++面向对象程序设计. 北京:清华大学出版社,2006 [3]刘丽华.c++面向对象程序设计 .北京:人们交通出版社,2004 [4]王超,C++程序设计.-------------北京:地质出版社,2006.82 [5]王继明,C++程序设计与应用开发[M].北京:清华出版社,2008.

附 录

#include #include #include #include #include class Student {

public:

int stuid; //学号

char stuname[10]; //姓名 char sex[2]; //性别 int age; //年龄 char clas[10]; //班级 char specialty[10]; //专业

int couid; //题目编号 char couname[10]; //题目名称 char keyword[20]; //关键词 char technology[30]; //实现技术 }stu[50]; class Guanli {

private:

Student stu[50]; public:

void add(); //添加学生信息 void search(); //查询信息

void searchsid(); //按学号查询信息 void searchsname(); //按名字查询信息 void searchcid(); //按题目编号查询信息 void searchcname(); //按题目名称查询信息 void alter(); //修改信息 void del(); //删除信息 void total(); //统计信息 void display(); //显示信息

void write(int n); //向文件中写入数据 int read(); //从文件中读数据 };

//************************************************* //向文件中写入数据 void Guanli::write(int n) {

fstream myfile;

myfile.open("student.txt",ios::out|ios::binary); if(!myfile) { cout

int count=n;

myfile

}

myfile.close(); }

//************************************************* //从文件中读数据 int Guanli::read() {

fstream myfile;

myfile.open("student.txt",ios::in|ios::binary); if(!myfile) { cout

int count;

myfile.seekg(0); myfile>>count;

for(int i=0;i>stu[i].stuid>>stu[i].stuname>>stu[i].sex>>stu[i].age>>stu[i].clas>>stu[i].specialty>>stu[i].couid>>stu[i].couname>>stu[i].keyword>>stu[i].technology;

cout

myfile.close(); return count; }

//************************************************* //添加学生信息 void Guanli::add() {

int n=read(); int i=0; char sign;

cout

cout>stu[i].stuid; cout

cout

cin>>stu[i].stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas; cout>stu[i].specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout>sign; //输入判断 i++; }

write(i); }

//************************************************* //查询信息

void Guanli::search() {

int n=read();

cout

cout>c; switch(c) {

case 1:

g.searchsid(); break; case 2:

g.searchsname(); break; case 3:

g.searchcid(); break; case 4:

g.searchcname(); break; default: cout

g.write(n); }

//************************************************* //按学生学号查询

void Guanli::searchsid() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

cout

cout

//************************************************* //按学生姓名查询

void Guanli::searchsname() {

int n=read(); char a[10];

cout>a;

for(int i=0;i

if(strcmp(stu[i].stuname,a)==0) { cout

cout

cout

cout

//************************************************* //按题目编号查询 void Guanli::searchcid() {

int n=read(); int b; int i=0;

cout>b;

while((stu[i].couid-b)!=0&&i

cout

cout

cout

//************************************************* //按题目名称查询

void Guanli::searchcname() {

int n=read(); char c[10];

cout

cin>>c;

for(int i=0;i

if(strcmp(stu[i].couname,c)==0) { cout

cout

cout

cout

//************************************************* //修改学生信息 void Guanli::alter() {

int n=read(); int s; int i=0;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

stu[i].clas

cout>stu[i]. stuid ;

cout

cin>>stu[i]. stuname; cout>stu[i].sex; cout>stu[i].age; cout>stu[i].clas ; cout

cin>>stu[i]. specialty; cout

cout>stu[i].couid; cout

cout>stu[i].couname; cout>stu[i].keyword; cout

cout>stu[i].technology; cout

cout>c; if(c='y') cout

//************************************************* //删除学生信息 void Guanli::del() {

int n=read(); int s; int i=0,j;

cout

cout>s;

while((stu[i].stuid-s)!=0&&i

strcpy(stu[j].specialty,stu[j+1].specialty); stu[j].couid=stu[j+1].couid;

strcpy(stu[j].couname,stu[j+1].couname); strcpy(stu[j].keyword,stu[j+1].keyword); strcpy(stu[j].technology,stu[j+1].technology); } cout

cout

cout

//************************************************* //统计信息

void Guanli::total() { { int n=read(); char c[10];

cout>c; for(int i=0;i

//************************************************* //显示学生信息 void Guanli::display() {

int n=read();

cout

stu[i].clas

" 关键词"

} }

//************************************************* //主函数

int main() {

char choice;

cout>choice; Guanli g;

if(choice=='0') { cout

else if(choice=='1') { g.add(); system("pause"); main(); } else if(choice=='2') { g.search(); system("pause"); main(); } else if(choice=='3') { g.alter(); system("pause"); main(); } else if(choice=='4') { g.del(); system("pause"); main(); } else if(choice=='5')

{ g.total(); system("pause"); main(); } else if(choice=='6') { g.display(); system("pause"); main(); } else { cout

} 输入错误,请重新输入您的选择:";


相关内容

  • 农田水利学课程设计质量控制研究
  • 摘要 课程设计是水利工程专业实践性教学的重要组成部分,提高农田水利学课程设计质量,对培养学生综合利用农田水利专业知识分析和解决工程实际问题具有极为重要的意义.通过分析农田水利学课程设计的主要特点及设计过程中存在的主要问题,提出了有效提高农田水利学课程设计质量的对策,以供参考. 关键词 农田水利学:课 ...

  • 小学语文教学论
  • 1:[论述题] 案例分析题: 1.阅读下列两位教师的教学材料,回答后面的问题. 教师甲教<燕子>一课的实录片断: 老师:现在请大家读第四小节,这小节有几句话,主要写了什么? 学生:这一节有三句话,主要写了燕子停在电线上. 老师:对,主要写了燕子停在电线上休息,这种样子课文中说像什么? 学 ...

  • 河北大学学年论文
  • 河北大学学年论文(课程设计)管理办法(试行) 学年论文(课程设计)是人才培养方案的重要组成部分,是实现本科教学培养目标的重要实践环节.为了进一步加强和规范学年论文(课程设计)工作的管理,不断提高学年论文(课程设计)质量,特制定本办法. 一.学年论文(课程设计)的教学目的 本科学生撰写学年论文(课程设 ...

  • 中央电大教务考试题四
  • 中央电大教务考试题四 第1题:将下列不同类别.不同性质的课程与考试单位配对:(配伍题) [1]统设必修课程 [A]中央考或省考 [2]统设选修课程 [B]中央考 [3]非统设选修课程 [C]省考 正确答案为:"1B2A3C" 第2题:将下列不同类型课程与可免修免考的开放教育统设必 ...

  • 浅谈课程设计模式
  • 第20卷第4期2006年8月吉林省经济管理干部学院学报 JournalofJilinProvinceEconomicManagementCadreCollegeVol.20AugustNo.42006 浅谈课程设计模式 □王 哲,郭长侠,董 光 (吉林省经济管理干部学院,吉林 长春130012) [ ...

  • 土木工程专业综合实践实施方案
  • 山东广播电视大学开放教育 土木工程专业本科综合实践环节教学实施方案 综合实践环节是开放教育土木工程(本科)教学计划所规定的重要教学环节,是中央电大培养高级应用型人才目标的具体体现.综合实践环节包括课程设计.生产实习.毕业实习和毕业设计(土木)四部分.具体内容和要求如下: 第一部分 课程设计 一.课程 ...

  • 高等教育学_单选题
  • [单选题]从教育层次来看,高等教育的基础是( ) [A ]学前教育 [B ]初等教育 [C ]中等教育 [D ]研究生教育 [答案]C [单选题]可提供高等教育的两类院校是( ) [A ]大学和科研院所 [B ]大学和其他各类高等院校 [C ]大学和自考机构 [D ]大学和企业培训机构 [答案]B ...

  • 山东省高校教师资格证考试综合试题汇编
  • 1. 在数据的预处理部分,我们可利用()和交叉频数分析来检验异常值. [单选题] * 分值:1 您的回答为:A.频数分析 (得分:1) 2. ()是指在测量.计算或观察过程中由于某些错误或通常由于某些不可控制因素的影响而造成的偏离标准值或规定值的数量.[单选题] * 分值:1 您的回答为:B.均值 ...

  • 土木本社会实践
  • 山东广播电视大学开放教育 土木工程专业本科综合实践环节教学实施方案 综合实践环节是开放教育土木工程(本科)专业规则中所规定的重要教学环节,是中央电大培养高级应用型人才目标的具体体现.综合实践环节包括课程设计.生产实习.毕业实习和毕业设计(土木)四部分.具体内容和要求如下: 第一部分 课程设计 一.课 ...

  • 教育技术学本科毕业论文选题
  • 教育技术学本科毕业论文选题 一.电视作品的创作与实践. [内容说明] 完成电视教学片.校园DV剧等的策划.拍摄与后期编辑. [能力要求] 对电视片的制作感兴趣,熟练摄像机.非线性编辑系统的使用,对 动画,视音频编辑有一定的基础. [参考题目] ① 电视节目的品牌战略 ② 解析信息资讯节目的受众倾向 ...