c++课设作业之课程信息管理系统

课程信息管理系统

课程信息包括:记录编号、课程编号、课程名、学时(讲课学时、实践学时)、学分、开课学期,考核方式(考试/报告)
功能要求:
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
  • 20
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值