课程信息管理系统
课程信息包括:记录编号、课程编号、课程名、学时(讲课学时、实践学时)、学分、开课学期,考核方式(考试/报告)
功能要求:
A、 从课程信息文件中读取已有的课程信息,并实现屏幕显示。
B、 能通过课程编号对已有的课程信息进行修改,要求编号不能修改,其他信息内容都可改,修改的结果保存至课程信息文件。
C、 实现对课程信息的统计(分学期统计课程数量及开课总学分数)。
D、 实现对课程信息的查询显示(查询条件分为课程编号、课程学分、开课学期),对有多条记录的查询结果按照课程开课学期进行排序显示。
E、 新课程信息的添加并保存至课程信息文件。
F、 数据约束关系:学时=讲课学时+时间学时;学分=学时/16。
G、 课程信息的删除,根据课程编号,删除指定课程信息,并将结果写入文件。
本程序主要用到了类以及链表的知识。
后面代码中单链表及其功能的实现额解释在这个文章中
https://blog.csdn.net/xuese_luochen/article/details/104374323
头文件——Class.h
//头文件,用来定义类,并定义其成员函数
#ifndef CLASS_H_
#define CLASS_H_
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Date //类Date有数据成员,是课程的各种数据和一个类指针
{
public:
string name;
string exam_method;
int semester;
double time,number,credit;
Date *Classnext;
};
class Class //类Class有成员函数——类指针(用来临时储存各个数据),和成员函数(用来实现程序的各种功能)
{
public:
Date *ClassHead;
~Class(); //析构函数
Class (); //构造函数
void class_set (); //输入课程信息
void show (); //输出课程信息
void class_keep (); //将课程信息写入文档
void class_insert(double N,string n,double t,int s,string e); //将文档中的课程信息插入到链表中
void class_Read(); //从文档中读取课程信息
void class_delete(); //删除课程信息
void class_revise(); //修改课程信息
void class_sort();
void class_find(); //按照一定条件寻找课程
void class_renew(); //更新课程信息,并保持在文档中
void class_census(); //按学期统计课程数量和学分总数
};
Class::Class() //构造函数
{
ClassHead=new Date; //创建链表的链头
ClassHead->Classnext=NULL;
}
Class::~Class() //析构函数
{
Date *p;
while (ClassHead) //将链表清除
{
p=ClassHead;
ClassHead=ClassHead->Classnext;
delete p;
}
ClassHead=NULL;
}
void Class::class_set () //输入课程信息
{
class_sort();
Date *p;
Date *a;
int class_num;
a=ClassHead;
cout << "您要输入几个课程的信息" << endl;
cin >> class_num ;
cout << "请依次输入课程编号,课程名字,课程学时,课程开课学期,课程测试方式" << endl;
for(int k=0;k<class_num;k++)
{
p= new Date;
cin >> p->number >> p->name >> p->time >> p->semester >> p->exam_method ;
p->credit=p->time/16; //下面三步实现将新的课程数据存放到链表中
p->Classnext=a->Classnext;
a->Classnext=p;
a=a->Classnext;
}
}
void Class::show () //输出课程信息
{
Date *p;
cout << "课程编号" << '\t' << "课程名字" << '\t' << "课程学时" << '\t' << "课程学分" << '\t' << "课程学期" << '\t' << "课程考核方式" << endl;
for(p=ClassHead->Classnext;p!=NULL;p =p->Classnext) //将链表各节点的数据全部输出
{
cout << p->number << '\t' << '\t' << p->name <<'\t' << p->time <<'\t' << '\t' << p->credit <<'\t' << '\t' << p->semester << '\t' << '\t' << p->exam_method << endl;
}
class_sort(); //排序函数--方便程序排列
}
void