资源描述
福建农林大学金山学院
课程设计报告
课程名称:
面向对象程序设计课程设计
课程设计题目:
选课管理
姓 名:
系:
信息与机电工程系
专 业:
计算机科学与技术
年 级:
09级
学 号:
0922310
指导教师:
职 称:
助教
2010年 12月 30日
福建农林大学金山学院课程设计结果评定
评语:
序号
评定标准
分值
评定结果
1
课程设计报告符合规范,条理清晰,重点突出
20%
2
程序实现设计方案,软件可靠性好
40%
3
课程设计有自己的收获、体会、感受,等等
15%
4
能够按照要求演示课程设计
15%
5
有一定的创新性,难易程度
10%
合计
成绩:
指导教师签字:
任务下达日期:2010年 月 日
评定日期:
12
目 录
1设计任务………………………………………………………………………1
2设计要求………………………………………………………………………1
3设计方案………………………………………………………………………1
4设计内容………………………………………………………………………1
4.1类层次结构图和用例图…………………………………………………………1
4.2运行结果……………………………………………………………………1
5总结……………………………………………………………………………3
参考文献……………………………………………………………………………3
附表(代码)…………………………………………………………………………4
选课管理
1.设计任务
运用C++语言描述学校类、学生类、课程类、选课类,每一个类应包含数据成员和成员函数。设计基类和派生类,并运用多态性和虚函数的知识。注重面向对象程序设计理论知识的理解与实际的动手编程能力,要求学生设计具有继承与派生以及多态性的类,理解面向对象程序设计的核心的概念。
2.设计要求
本课程设计要实现的主要功能如下:
1)建立学校类、学生类、课程类、选课类
2)学校、学生、课程、选课信息的初始化
3)学校、学生、课程、选课信息的添加、修改、删除、查找
4)学校、学生、课程、选课信息的输出
5)对选课信息按学号、课程编号排序.
3.设计方案
先建立一个学生类、课程类、老师类
4.设计内容
4.1类层次结构图和用例图
类层次结构图如下:student //学生类
course //课程类
teacher //教师类
jilei //基类
用例图如下:
teacher
course
student
jilei
数据成员:
name
数据成员:
xuehao;
major;
grade;
cursename;
成员函数:
set()
数据成员:
classnum;
teachername;
成员函数:
set()
数据成员:
jiaoshihao;
coursename;
成员函数:
set()
4.2 运行结果截图
学生信息录入及查询学生信息:
课程信息录入及查询课程信息:
5.总结
对c++语言有一定的了解和掌握。可是课程设计还是好难,好多搞不懂的。
参考文献
[1]马石安,魏文平.面向对象程序设计(c++语言描述)[T].北京:清华大学出版社,2007.8
附表:(代码)
#include<iostream>
#include<fstream>
using namespace std;
void menu()
{
cout<<"**************学生选课系统*******************"<<endl;
cout<<"1.信息录入"<<endl;
cout<<"2.信息查询"<<endl;
cout<<"3.修改信息"<<endl;
cout<<"4.退出程序"<<endl;
cout<<"请输入选项序号(1~4):"<<endl;
}
class jilei
{
public: char name[10];
} ;
class student:public jilei //学生类
{
public:
int xuehao;
char major[10];
char grade[10];
char coursename[10];
void set()
{
student s;
cout<<"请输入学生学号:";
cin>>s.xuehao;
cout<<"请输入学生姓名:";
cin>>s.name;
cout<<"请输入学生专业:";
cin>>s.major;
cout<<"请输入学生年级:";
cin>>s.grade;
cout<<"请输入学生所选课程名:";
cin>>s.coursename;
ofstream os("学生.txt",ios_base::binary|ios_base::app);
os.write(reinterpret_cast< char *>(& s),sizeof(s));
os.close();
menu();
}
};
class course:public jilei //课程类
{
public:
int classnum;
char teachername[10];
void set() //函数体
{
course s;
cout<<"请输入课程名:";
cin>>s.name;
cout<<"请输入课程号:";
cin>>s.classnum;
cout<<"请输入任课教师姓名:";
cin>>s.teachername;
ofstream os("课程.txt",ios_base::binary|ios_base::app);
os.write(reinterpret_cast<char *>(& s),sizeof(s));
os.close();
menu();
};
};
class teacher:public jilei //教师类
{
public:
int jiaoshihao;
char coursename[10];
void set()
{
teacher s;
cout<<"请输入教师名:";
cin>>s.name;
cout<<"请输入教师号:";
cin>>s.jiaoshihao;
cout<<"请输入所授课程";
cin>>s.coursename;
ofstream os("老师.txt",ios_base::binary|ios_base::app);
os.write(reinterpret_cast<char*>(& s),sizeof(s));
os.close();
menu();
};
};
void checkstu() //查询学生信息
{
student s;
cout<<"请输入学生学号:";
int xuehao;
cin>>xuehao;
ifstream is("学生.txt",ios_base::binary);
for(int i=0;!is.eof();i++)
{
is.seekg(48*i);
is.read(reinterpret_cast< char *>(& s),sizeof(s));
if(s.xuehao==xuehao)
{
cout<<"该生姓名为"<<s.name<<endl;
cout<<"专业是"<<s.major<<endl;
cout<<"年级是"<<s.grade<<endl;
cout<<"所选课程名是"<<s.coursename<<endl;
menu();
break;
}
}
is.close();
if(s.xuehao!=xuehao)
cout<<"没有这个学生"<<endl;
}
void checkcor()//查询课程信息
{
course s;
cout<<"请输入课程号:";
int classnum;
cin>>classnum;
ifstream is("课程.txt",ios_base::binary);
for(int i=0;!is.eof();i++)
{
is.seekg(28*i);
is.read(reinterpret_cast<char * >(& s),sizeof(s));
if(s.classnum==classnum )
{
cout<<"课程名是"<<s.name<<endl;
cout<<"课程号是"<<s.classnum<<endl;
cout<<"任课老师姓名"<<s.teachername<<endl;
menu();
break;
}
}
is.close();
if(s.classnum!=classnum)
cout<<"没有这个课程"<<endl;
}
void checktea()//查询教师信息
{
teacher s;
cout<<"请输入教师号"<<endl;
int jiaoshihao;
cin>>jiaoshihao;
ifstream is("老师.txt",ios_base::binary);
for(int i=0;!is.eof();i++)
{
is.seekg(28*i);
is.read(reinterpret_cast<char*>(& s),sizeof(s));
if(s.jiaoshihao==jiaoshihao)
{
cout<<"教师名是"<<s.name<<endl;
cout<<"教师号是"<<s.jiaoshihao<<endl;
cout<<"所授课程"<<s.coursename<<endl;
menu();
break;
}
}
is.close();
if(s.jiaoshihao!=jiaoshihao)
cout<<"没有这个教师"<<endl;
}
void check()//查询主菜单
{
int chose;
cout<<"1.查询学生信息"<<endl;
cout<<"2.查询课程信息"<<endl;
cout<<"3.查询授课教师信息"<<endl;
cout<<"4.还回主菜单"<<endl;
cout<<"请输入选项序号(1~4):"<<endl;
cin>>chose;
switch(chose)
{
case 1:
checkstu();break;
case 2:
checkcor();break;
case 3:
checktea();break;
case 4:
menu();break;
default :
cout<<"error"<<endl;
}
}
void changestu()//修改学生信息
{
student s;
int mark;
cout<<"请输入需要修改信息的学生学号"<<endl;
int xuehao;
cin>>xuehao;
ifstream is("学生.txt",ios_base::binary);
for(int i=0;!is.eof();i++)
{
is.seekg(48*i);
is.read(reinterpret_cast<char*>(& s),sizeof(s));
if(s.xuehao==xuehao)
{
cout<<"请输入要修改的学生姓名"<<endl;
cin>>s.name ;
cout<<"请输入要修改的学生年级"<<endl;
cin>>s.grade;
cout<<"请输入要修改的学生专业"<<endl;
cin>>s.major;
cout<<"请输入要修改的学生所选课程"<<endl;
cin>>s.coursename;
menu();
mark=48*i;
break;
}
}
is.close();
if(s.xuehao!=xuehao)
cout<<"没有这个学生"<<endl;
else
{
ofstream os("学生.txt",ios_base::in|ios_base::binary);
os.seekp(mark);
os.write(reinterpret_cast<char*>(& s),sizeof(s));
os.close();
}
}
void changecour()//修改课程信息
{
int mark;
course s;
cout<<"请输入要修改课程信息的课程号"<<endl;
int classnum;
cin>>classnum;
ifstream is("课程.txt",ios_base::binary);
for(int i=0;!is.eof();i++)
{
is.seekg(28*i);
is.read(reinterpret_cast<char*>(& s),sizeof(s));
if(s.classnum==classnum)
{
cout<<"请输入要修改的课程名"<<endl;
cin>>s.name;
cout<<"请输入要修改的任课老师"<<endl;
cin>>s.teachername;
cout<<"修改完毕"<<endl;
mark=28*i;
menu();
break;
}
}
is.close();
if(s.classnum!=classnum)
cout<<"没有这个课程"<<endl;
else
{
ofstream os("课程.txt",ios_base::binary|ios_base::in);
os.seekp(mark);
os.write(reinterpret_cast<char*>(& s),sizeof(s));
os.close();
}
}
void changetea() //修改教师信息
{
teacher s;
int mark;
cout<<"请输入教师号"<<endl;
int jiaoshihao;
cin>>jiaoshihao;
ifstream is("老师.txt",ios_base::binary);
for(int i=0;!is.eof();i++)
{
is.seekg(28*i);
is.read(reinterpret_cast<char*>(& s),sizeof(s));
if(s.jiaoshihao==jiaoshihao)
{
cout<<"你要修改的教师名是"<<s.name<<endl;
cin>>s.name;
cout<<"你要修改的课程名"<<endl;
cin>>s.coursename;
cout<<"修改完毕"<<endl;
mark=28*i;
menu();
break;
}
}
is.close();
if(s.jiaoshihao!=jiaoshihao)
cout<<"没有这个课程"<<endl;
else
{
ofstream os("老师.txt",ios_base::binary|ios_base::in);
os.seekp(mark);
os.write(reinterpret_cast< char*>(& s),sizeof(s));
os.close();
}
}
void change()//修改
{
cout<<"1.修改学生信息"<<endl;
cout<<"2.修改课程信息"<<endl;
cout<<"3.修改授课教师信息"<<endl;
cout<<"4.还回主菜单"<<endl;
cout<<"请输入选项序号(1~4):"<<endl;
int chose;
cin>>chose;
switch(chose)
{
case 1:
changestu();break;
case 2:
changecour();break;
case 3:
changetea();break;
case 4:
menu();break;
default :
cout<<"error"<<endl;
}
}
void setstu()//输入学生信息
{
student s1;
s1.set();
}
void setcour()//输入课程信息
{
course s2;
s2.set();
}
void settea()//输入老师信息
{
teacher s1;
s1.set();
}
void set()//输入函数
{
int chose;
cout<<"1.录入学生信息"<<endl;
cout<<"2.录入课程信息"<<endl;
cout<<"3.录入授课教师信息"<<endl;
cout<<"4.还回主菜单"<<endl;
cout<<"请输入选项序号(1~4):"<<endl;
cin>>chose;
switch (chose)
{
case 1 :setstu(); break;
case 2: setcour(); break;
case 3 :settea();break;
case 4 :menu();break;
default :cout<<"error"<<endl;
}
}
int main()
{
menu();
while(1)
{
int chose;
cin>>chose;
switch (chose)
{
case 1 :set();break;
case 2 :check();break;
case 3 :change();break;
case 4: return 0;
}
}
return 0;
}
展开阅读全文