学生住宿管理系统(小系统C++)

功能(1)学生信息包括:姓名、学号、年龄、性别、学院、年级等(2)宿舍信息包括:宿舍编号、宿舍楼名、楼层号、宿舍类型(二人间、四人间、六 人间、八人间) 、收费标准等。(3)住宿信息包括:学生、宿舍、入住时间、是否欠费等。(4)完成以下的操作:学生信息和宿舍信息的添加、修改、浏览、删除和查询。 (5)完成以下的操作:学生入住、缴费;住宿信息浏览、学生住宿信息查询、宿舍住 宿信息浏览与查询。 2、提示: (1)增加必要的数据成员、成员函数或类; (2)对象指针(住宿信息类的对象指针成员可以指向
摘要由CSDN通过智能技术生成

功能

(1)学生信息包括:姓名、学号、年龄、性别、学院、年级等

(2)宿舍信息包括:宿舍编号、宿舍楼名、楼层号、宿舍类型(二人间、四人间、六 人间、八人间) 、收费标准等。

(3)住宿信息包括:学生、宿舍、入住时间、是否欠费等。

(4)完成以下的操作:学生信息和宿舍信息的添加、修改、浏览、删除和查询。 (5)完成以下的操作:学生入住、缴费;住宿信息浏览、学生住宿信息查询、宿舍住 宿信息浏览与查询。 2、提示: (1)增加必要的数据成员、成员函数或类; (2)对象指针(住宿信息类的对象指针成员可以指向相关的宿舍、对象指针数组成员可 以表示该宿舍的学生们)

代码:

#include <iostream>
#include <string>
using namespace std;

//定义学生和宿舍的最大数量
#define MAXSTU 50
#define MAXDOR 20

//定义学生类
class Student
{
private:
	int mXuehao;    //学号
	char* mName;    //名字
	int mAge;       //年龄
	char mSex;      //性别
	char* mPartment;//学院
	int mGrade;     //年级
public:
	Student(){mName = 0;mPartment = 0;}
	Student(int id,const char* name,int age,char sex,const char* par,int grade)
	{
		mXuehao = id;
		mName = new char[strlen(name)+1];
		memcpy(mName,name,strlen(name));
		mName[strlen(name)] = '\0';
		mAge = age;
		mSex = toupper(sex);
		mPartment = new char[strlen(par)+1];
		memcpy(mPartment,par,strlen(par));
		mPartment[strlen(par)] = '\0';
		mGrade = grade;
	}
	~Student()
	{
		if (mName)
		{
			delete[] mName;
			mName = 0;
		}
		if (mPartment)
		{
			delete[] mPartment;
			mPartment = 0;
		}
	}
	//设置类属性
	void setId(int id){mXuehao = id;}
	void setName(const char* name)
	{
		if (mName != 0)
		{
			delete[] mName;
			mName = 0;
		}
		mName = new char[strlen(name)+1];
		memcpy(mName,name,strlen(name));
		mName[strlen(name)] = '\0';
	}
	void setSex(char sex){mSex = toupper(sex);}
	void setAge(int age){mAge = age;}
	void setPartment(const char* par)
	{
		if(mPartment)
			delete []mPartment;
		mPartment = new char[strlen(par)+1];
		memcpy(mPartment,par,strlen(par));
		mPartment[strlen(par)] = '\0';
	}
	void setGrade(int g){mGrade = g;}
	//获取类属性
	int getId(){return mXuehao;}
	char* getName(){return mName;}
	char getSex(){return mSex;}
	int getAge(){return mAge;}
	char* getPartment(){return mPartment;}
	int getGrade(){return mGrade;}
	void display()
	{
		cout.setf(ios::left);//设置左对齐
		cout << mXuehao << " " ;
		cout.fill(' ');  //设置不足位填充方式
		cout.width(10);  //设置宽度,只对下一条有作用
		cout << mName ;
		cout << " " << mSex << " ";
		cout << mAge << " " ;
		cout.fill(' ');
		cout.width(20);
		cout<< mPartment ;
		cout<< " " << mGrade << endl;
		cout.unsetf(ios::left); //取消左对齐
	}
};

//定义宿舍类型
enum EDomType
{
	e_dorm_two=1,
	e_dorm_four,
	e_dorm_six,
	e_dorm_eight
};

//定义宿舍类
class Dormatory
{
private:
	int mSusheId;   //宿舍号
	char* mDorName; //宿舍楼名
	int mLayer;     //楼层号
	EDomType mEtype;//类型
	int mPrice;     //价格
public:
	Dormatory(){mDorName = 0;}
	Dormatory(int id,const char* name,int layer,EDomType e,int price)
	{
		mSusheId = id;
		mDorName = new char[strlen(name)+1];
		memcpy(mDorName,name,strlen(name));
		mDorName[strlen(name)] = '\0';
		mLayer = layer;
		mEtype = e;
		mPrice = price;
	}

	~Dormatory()
	{
		if(mDorName)
		{
			delete[] mDorName;
			mDorName = 0;
		}
	}
	//设置类属性
	void setId(int id){mSusheId = id;}
	void setName(const char* name)
	{
		if(mDorName) delete[] mDorName;
		mDorName = new char[strlen(name)+1];
		memcpy(mDorName,name,strlen(name));
		mDorName[strlen(name)] = '\0';
	}
	void setLayer(int layer){mLayer = layer;}
	void setDormType(EDomType e){mEtype = e;}
	void setPrice(int p){mPrice = p;}
	
	//获取类属性
	int getId(){return mSusheId;}
	char* getName(){return mDorName;}
	int getLayer(){return mLayer;}
	EDomType getType(){return mEtype;}
	int getPrice(){return mPrice;}
	void display()
	{
		cout.setf(ios::left);
		cout<< mSusheId << " ";
		cout.fill(' ');
		cout.width(10);  //名字最多5个汉子或者10个英文字符
		cout << mDorName;
		cout << " " << mLayer << " ";
		if(e_dorm_two == mEtype)
			cout << "二人间" ;
		else if(e_dorm_four == mEtype)
			cout << "四人间" ;
		else if(e_dorm_six == mEtype)
			cout << "六人间" ;
		else
			cout << "八人间" ;
		cout << " " << mPrice << endl;
		cout.unsetf(ios::left);
	}
};
//定义时间类
struct Date 
{
	int year;
	int month;
	int day;
};
//住宿信息
class HomeInfo
{
private:
	Dormatory* mDormatory;   //宿舍对象指针
	Student* mStu[8];        //学生指针数组
	bool mbqf[8];            //是否欠费,true欠费,否则不欠费
	Date mHomeDate[8];       //入住时间

	int mCurrentNmb;//当前已入住人数
	char mDormSex;  //当前宿舍的性别
public:
	HomeInfo()
	{
		for (int i =0;i< 8;i++)
		{
			mStu[i] = 0;
			mbqf[i] = true;
		}
		mDormatory = 0;
		mCurrentNmb = 0;
		mDormSex = 'n';  //表示该宿舍尚未分配
	}
	
	void setDormatory(Dormatory* p){mDormatory = p;}
	void setSex(char sex){mDormSex = sex;}
	Dormatory* getDormatory(){return mDormatory;}
	char getSex(){return mDormSex;}
	int getCurrentNmb(){return mCurrentNmb;}
	//查看某个学生是否在该房间
	bool isIn(Student* stu)
	{
		for (int i=0;i<mCurrentNmb;i++)
		{
			if(mStu[i] == stu)
				return true;
		}
		return false;
	}

	//是否已经注满
	bool isFull()
	{
		if(e_dorm_eight == mDormatory->getType() && mCurrentNmb == 8)
			return true;
		else if(e_dorm_six == mDormatory->getType() && mCurrentNmb == 6)
			return true;
		else if(e_dorm_four == mDormatory->getType() && mCurrentNmb == 4)
			return true;
		else if(e_dorm_two == mDormatory->getType() && mCurrentNmb == 2)
			return true;
		return false;
	}
	//办理入住
	bool Home(Student *stu
  • 26
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论
好的,学生宿舍管理系统是一个比较复杂的系统,需要考虑到很多方面,包括学生信息管理、宿舍信息管理、住宿管理、宿舍卫生管理等等。下面我将给你一些实现的思路和建议: 1. 设计数据库结构 在设计数据库结构时,你需要考虑哪些表格是必要的。一般情况下,至少需要学生表格和宿舍表格。学生表格中可以存储学生的基本信息,如姓名、学号、性别、民族等;宿舍表格中可以存储宿舍的基本信息,如宿舍号、所在楼层、床位数等。除此之外,你还可以设计住宿表格、宿舍卫生表格等。 2. 创建类 在C++中,你可以使用类来实现对应的管理操作。例如,你可以创建学生类、宿舍类等。学生类中可以包含学生的基本信息和操作函数,如添加学生、删除学生、修改学生信息等;宿舍类中可以包含宿舍的基本信息和操作函数,如添加宿舍、删除宿舍、修改宿舍信息等。 3. 考虑数据的输入输出方式 在实现学生宿舍管理系统时,你还需要考虑数据的输入输出方式。可以使用控制台输入输出、文件读写等方式。例如,可以使用文件读写方式将学生信息和宿舍信息保存到文件中,以便下次使用时可以直接读取。 4. 添加异常处理机制 在编写学生宿舍管理系统时,你还需要添加异常处理机制,以保证程序的稳定性和可靠性。例如,当用户输入的数据不符合要求时,程序可以输出错误信息并提示用户重新输入。 5. 测试和调试 最后,你需要进行测试和调试,确保系统的各个功能模块都能正常运行。可以通过模拟用户操作的方式,测试系统的各个功能是否能够正常实现。 希望上述建议对你有所帮助,祝你成功实现学生宿舍管理系统

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qfl_sdu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值