c++程序设计之宿舍管理系统(简单版)

程序课程设计报告

设计要求:设计一个系统能够满足对数据的增删改查操作,所以用数据库实现对数据的增删改查,有学生的姓名,性别,宿舍等相关信息。
实验所用软件:devC++,mysql数据库,SQLyog

注意:用devC++连接数据库需要下载安装一个软件,就是驱动它能够连接到本地电脑的数据库,如果不会,可以去百度一下怎么连接数据库,但是在这之前,你也要安装好数据库,如果数据库能够连接成功了,那么就可以开始写数据库建表,写代码了。

简介:我是大二上期完成的一个这么一个系统,做学校的程序设计报告的,实现的功能就是登录验证,还有对学生信息的增删改查,写的非常的简单,但是能够把这些基本的功能实现,大概有500行代码左右。

数据库我建了三张表,分别是student,token,user,他们建在一个库里面,数据就自己添加。
各自表的字段为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

c++源代码:

#include <iostream>
#include<windows.h>
#include <mysql.h>
#include<string>
#include <conio.h>
using namespace std;
MYSQL* conn;
MYSQL_RES* res;
string query;
//初始化mysql 	
MYSQL_ROW row;  

//学生类 
class student
{
private:
	string sno;            //学号 
    string name;        //姓名 
    bool sex;        //性别 
    int age;            //年龄 
    string major;     //专业 
    int building;        //楼号
    int dormitary;    //宿舍号
public:
	student()
	{
		
	}
	student(string sno,string name,bool sex,int age,string major,int build,int dor){
		this->sno=sno;
		this->name=name;
		this->sex=sex;
		this->age=age;
		this->major=major;
		this->building=build;
		this->dormitary=dor;
	}
	~student()
	{
//		cout<<"析构函数"<<endl; 
	}
	//设置学号 
	void setsno(string sno)
	{
		while(true){
		if(sno.length()==4)
		{
			this->sno=sno;
			break;
		}
		else
		{
			cout<<"学号是一个四位的数字,你的输入有误"<<endl;
			cout<<"请再次输入学号:";
			cin>>sno; 
		}
	}
	}
	//设置姓名 
	void setname(string name)
	{
		this->name=name;
	} 
	//设置性别
	void setsex(bool sex)
	{
		this->sex=sex;
	} 
	//设置年龄
	void setage(int age)
	{
		while(true)
		{
		if(age<17||age>27)
		{
			cout<<"输入年龄有误,与实际情况不符"<<endl;
			cout<<"请再次输入年龄:";
			cin>>age; 
			break;
		}
		else{
			this->age=age;
			break;
		}}
	 } 
	 //设置专业
	 void setmajor(string major)
	 {
	 	this->major=major;
	 } 
	 //设置楼号
	void setbuilding(int bulid)
	{
		while(true)
		{
		if(bulid==18||bulid==19)
		{
			this->building=bulid;
			break;
		}
		else{
			cout<<"输入楼号有误,目前只有18.19栋楼"<<endl;
			cout<<"请再次输入楼号:";
			cin>>building; 
			break;
		}}
		
	} 
	//设置宿舍号
	void setdormitary(int dor)
	{
		while(true){
		if(100<=dor<=999)
		{
			this->dormitary=dor;
			break;
		}
		else
		{
			cout<<"宿舍号是一个三位的数字,你的输入有误"<<endl;
			cout<<"请再次输入宿舍号:";
			cin>>dor; 
		}
	}
	} 
	string getsno()
	{
		return sno;
	}
	string getname()
	{
		return name;
	}
	bool getsex()
	{
		return sex;
	}
	int getage()
	{
		return age;
	}
	string getmajor()
	{
		return major;
	}
	int getbuilding()
	{
		return building;
	}
	int getdormitary()
	{
		return dormitary;
	}
};
student createobjects()
{
	string sno;            //学号 
    string name;        //姓名 
    bool sex;        //性别 
    int age;            //年龄 
    string major;     //专业 
    int building;        //楼号
    int dormitary;    //宿舍号
	student stu("0003","张四","男",21,"计算机科学与技术",19,204);
	cout<<"请输入学生的学号(形如****):";
	cin>> sno;
	stu.setsno(sno);
//	cout<<stu.getsno()<<endl;
	cout<<"请输入学生的姓名:";
	cin>> name;
	stu.setname(name);
	cout<<"*****************************"<<endl;
	cout<<"*\t0.男"<<"   "<<"1.女"<<endl;
	cout<<"*****************************"<<endl;
	cout<<"请输入学生的姓别:";
	cin>> sex;
	stu.setsex(sex);
	cout<<"请输入学生的年龄:";
	cin>> age;
	stu.setage(age);
	cout<<"*****************************"<<endl;
	cout<<"*\t1.计算机科学与技术"<<endl;
	cout<<"*\t2.软件工程"<<endl;
	cout<<"*\t3.物联网工程"<<endl;
	cout<<"*\t4.大数据管理"<<endl;
	cout<<"*\t5.区块链"<<endl; 
	cout<<"*\t6.人工智能"<<endl;
	cout<<"*****************************"<<endl; 
	cout<<"请输入学生的专业:";
	cin>> major;
	stu.setmajor(major);
	cout<<"*****************************"<<endl;
	cout<<"*\t18栋"<<"   "<<"19栋"<<endl;
	cout<<"*****************************"<<endl;
	cout<<"请输入学生的楼号:";
	cin>> building;
	stu.setbuilding(building);
	cout<<"请输入学生的宿舍号形如(***):";
	cin>> dormitary;
	stu.setdormitary(dormitary);
	return stu;
}
bool ConnectDatabase(){
	//初始化mysql 	
    MYSQL_ROW row;
    
    conn = mysql_init(NULL);
    if (!mysql_real_connect(conn, "localhost", "root", "数据库密码", "数据库", 3306, NULL, 0)) { 
		cout<<"数据库连接失败"<<endl; 
		printf("原因:%s\n", mysql_error(conn));
		return false;
	} else {
		cout<<"***\t数据库连接上了哟\t***"<<endl;
		return true;
	}  	
//    mysql_free_result(res);  //释放一个结果集合使用的内存。
//	mysql_close(conn);	 //关闭一个服务器连接。
}
//查询数据
bool QueryDatabase1()
{
	query = "SELECT * FROM student";
	mysql_query(conn, "set names GBK");
    mysql_query(conn, query.c_str());
    res = mysql_store_result(conn);//获取结果集  
//	cout<<"ssss"<<mysql_num_fields(res)<<endl;
//	cout<<"ssss"<<mysql_num_rows(res)<<endl; //返回一个结果集合中的行的数量。
	int col = mysql_num_fields(res);
	cout<<"****************************************************************************"<<endl;
	cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"年龄"<<"\t"<<"专业"<<"\t\t"<<"楼号"<<"\t"<<"宿舍号"<<endl ;
	cout<<"****************************************************************************"<<endl;
    while ((row = mysql_fetch_row(res)) != NULL)
    {
        for(int i=0;i<col;i++)
    	{ 
    		cout<< row[i]<<"\t";
		}
		cout<<endl;
    } 
} 
//查询部分数据的菜单
string showdatamenu()
{
	int choice;
	string num;
	string query;
	cout<<"\t***********************************"<<endl;
	cout<<"\t下面是可选择的条件查询"<<endl;	
	cout<<endl;
	cout<<"\t*1.根据楼号查询学生信息"<<endl;
	cout<<"\t*2.根据宿舍号查询学生信息"<<endl;
	cout<<"\t*3.根据性别查询的学生信息"<<endl;
	cout<<"\t*4.根据专业查询学生信息"<<endl;
	cout<<"\t*5.根据姓名查询学生信息"<<endl;
	cout<<"\t*6.根据学号查询学生信息"<<endl;
	cout<<"\t*其他键退出系统界面!"<<endl;
	cout<<"\t***********************************"<<endl;
	cout<<"\t请输入你的选项:";
	cin>>choice;
	switch(choice) {
	case 1:
		cout<<"\t*请输入你要查那栋楼:";
		cin>>num;	
	query="SELECT * FROM student where sbuilding="+num;break;
	case 2:
		cout<<"\t*请输入你要查询哪个宿舍:";
		cin>>num;
	query="SELECT * FROM student where sdormitary="+num;break;
	case 3:
		cout<<"\t*请输入你要查询哪个性别:";
		cin>>num;
	query="SELECT * FROM student where sex='"+num+"'";break;
	case 4:
		cout<<"\t*请输入你要查询哪个专业:";
		cin>>num;
	query="SELECT * FROM student where smajor='"+num+"'";break;
	case 5:
		cout<<"\t*请输入你要查询学生姓名:";
		cin>>num;
	query="SELECT * FROM student where sname='"+num+"'";break;
	case 6:
		cout<<"\t*请输入你要查询学生的学号:";
		cin>>num;
	query="SELECT * FROM student where sno='"+num+"'";break;
	default:
		cout<<"退出这个界面了"<<endl; 
		break;
	return query;
}
} 
//查询部分数据
bool QueryDatabase2()
{
	string query = showdatamenu();
	cout<<query<<endl;
//	query = "SELECT "+Where+ " FROM student";
	mysql_query(conn, "set names GBK");
    mysql_query(conn, query.c_str());
    res = mysql_store_result(conn);//获取结果集  
//	cout<<"ssss"<<mysql_num_fields(res)<<endl;
//	cout<<"ssss"<<mysql_num_rows(res)<<endl; //返回一个结果集合中的行的数量。
	int col = mysql_num_fields(res);
	cout<<"****************************************************************************"<<endl;
	cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"年龄"<<"\t"<<"专业"<<"\t\t"<<"楼号"<<"\t"<<"宿舍号"<<endl ;
	cout<<"****************************************************************************"<<endl;
    while ((row = mysql_fetch_row(res)) != NULL)
    {
        for(int i=0;i<col;i++)
    	{ 
    		cout<< row[i]<<"\t";
		}
		cout<<endl;
    } 
}

//插入数据  
bool InsertData()
{
//	mysql_query(conn,"insert into teacher values ('115','张三','男',21,'cs')");

	string sex,major;
	student stu = createobjects();
	if(stu.getsex())
	{
		sex="女"; 
	}
	else{
		sex="男";
	}
	if(stu.getmajor()=="1"||stu.getmajor()=="计算机科学与技术")
	{
		major="计科技术";
	}
	else if(stu.getmajor()=="2"||stu.getmajor()=="软件工程")
	{
		major="软件工程";
	}
	else if(stu.getmajor()=="3"||stu.getmajor()=="物联网工程")
	{
		major="物联网工程";
	}
	else if(stu.getmajor()=="4"||stu.getmajor()=="大数据管理")
	{
		major="大数据管理";
	}
	else if(stu.getmajor()=="5"||stu.getmajor()=="区块链")
	{
		major="区块链技术";
	}
	else if(stu.getmajor()=="6"||stu.getmajor()=="人工智能")
	{
		major="人工智能";
	}
	string insertdata = "insert into student values ('"+stu.getsno()+"','"+stu.getname()+"','"+sex+"','"+to_string(stu.getage())+"','"+major+"','"+to_string(stu.getbuilding())+"','"+to_string(stu.getdormitary())+"')";
	cout<<insertdata<<endl;
	mysql_query(conn, "set names GBK");
	if (mysql_query(conn,insertdata.c_str()))        //执行SQL语句  
	{
		printf("Insert failed (%s)\n", mysql_error(conn));
		return false;
	}
	else
	{
		printf("Insert success\n");
		return true;
	}
}
//修改学生信息
bool changedata()
{
	int building,choice,dor;
	string query,sno,major;
	cout<<"\t请输入你要修改学生信息的学号:";
	cin>>sno;
	query = "select * from student where sno='"+sno+"'";
	mysql_query(conn, "set names GBK");
    mysql_query(conn, query.c_str());
    res = mysql_store_result(conn);//获取结果集  
	int col = mysql_num_fields(res);
	cout<<"****************************************************************************"<<endl;
	cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<"\t"<<"年龄"<<"\t"<<"专业"<<"\t\t"<<"楼号"<<"\t"<<"宿舍号"<<endl ;
	cout<<"****************************************************************************"<<endl;
    while ((row = mysql_fetch_row(res)) != NULL)
    {
        for(int i=0;i<col;i++)
    	{ 
    		cout<< row[i]<<"\t";
		}
		cout<<endl;
    } 
	cout<<"\t修改信息菜单栏"<<endl;
	cout<<"\t*1.宿舍号     2.楼号      3.专业 "<<endl;
	cout<<"\t请输入你的选择:";
	cin>>choice;
	student stu;
	if(choice==1)
	{
		cout<<"请输入你要修改的新宿舍号:";
		cin>>dor;
		stu.setdormitary(dor);
		dor = stu.getdormitary();
		query="update student set sdormitary="+to_string(dor)+" where sno='"+sno+"'";
	}
	else if(choice==2)
	{
		cout<<"请输入你要修改的新楼号:";
		cin>>dor;
		stu.setbuilding(dor);
		dor = stu.getbuilding();
		query="update student set sbuilding= "+to_string(dor)+" where sno='"+sno+"'";
	}
	else if(choice==3)
	{
		cout<<"****************************************"<<endl;
		cout<<"\t1.计科技术        2.软件工程"<<endl;
		cout<<"\t3.物联网工程      4.大数据管理"<<endl;
		cout<<"\t5.区块链技术      6.人工智能"<<endl; 
		cout<<"****************************************"<<endl;
		cout<<"\t请输入你要修改的专业:";
		cin>>major;
		query="update student set sdormitary='"+major+"' where sno='"+sno+"'";
	}
	cout<<query<<endl;
	mysql_query(conn, "set names GBK");
	if (mysql_query(conn,query.c_str()))        //执行SQL语句  
	{
		printf("change failed (%s)\n", mysql_error(conn));
		return false;
	}
	else
	{
		printf("change success\n");
		return true;
	}
} 
//隐藏密码处理 
string PasswordSecret() {
    int index = 0,maxlen=20;
    char pswd[20];
    char buff = '\0';
    while ((buff = getch()) != '\r') {
        if (buff == '\b' && index != 0) {
            index--;
            printf("\b \b");
        } else if (index < maxlen - 1 && buff != '\b') {
            pswd[index++] = buff;
            putchar('*');
        }
    }
    pswd[index] = '\0';
    return pswd;
}
//删除学生信息 
bool DeleteData()
{
	string name,queryuser;
	cout<<"\t**********************************************"<<endl;
	cout<<"\t*注意:删除信息操作非常危险,如果要进行操作"<<endl;
	cout<<"\t**********************************************"<<endl;
	cout<<"\t*请输入boss的名字来验证你的身份:";
	//cin>>name;
	name = PasswordSecret();
	queryuser = "SELECT user FROM user";
	mysql_query(conn, "set names GBK");
    mysql_query(conn, queryuser.c_str());
    res = mysql_store_result(conn);//获取结果集
    row = mysql_fetch_row(res);
    if(row[0]==name)
    {
    	cout<<endl;
    	cout<<"\t你的身份通过了,你可以进行删除操作"<<endl; 
    	cout<<endl;
	}
	else{
		cout<<endl;
		cout<<"\tboss的名字都不清楚,还想操作?"<<endl;
		cout<<endl;
		return 0;
	}
	string sno;
	cout<<"请输入要删除学生的学号:";
	cin>>sno;
	query = "delete FROM student where sno='"+sno+"'";
	cout<<query<<endl;
	if (mysql_query(conn, query.c_str()))        //执行SQL语句  
	{
		printf("delete failed (%s)\n", mysql_error(conn));
		return false;
	}
	else
	{
		printf("delete success\n");
		return true;
	}
}
//shifan
void FreeConnect()
{
	mysql_free_result(res);  //释放一个结果集合使用的内存。
	mysql_close(conn);	 //关闭一个服务器连接。
}
//密码验证登录 
bool mytoken()
{
	string user,password;
	string querytoken;
	cout<<endl;
	cout<<endl;
	cout<<endl;
	cout<<" 请输入账号: ";
	cin>>user;
	cout<<" 请输入密码: ";
	password = PasswordSecret();
	cout<<endl;
	querytoken = "SELECT user,password FROM token";
	mysql_query(conn, "set names GBK");
    mysql_query(conn, querytoken.c_str());
    res = mysql_store_result(conn);//获取结果集
    row = mysql_fetch_row(res);
    if(row[0] == user&&row[1]==password) 
	{
		cout<<"---正在登录---"<<endl; 
		Sleep(3*1000); 
		cout<<"---登录成功---"<<endl;
		return true;
	}
	else{
		cout<<"---密码或者账号错误,登录失败---"<<endl;
		return false;
	}
}
int main() {
	int choice;
	//连接数据库,没有连上不让操作 
	if(!ConnectDatabase())
	{
		return 0;
	}
	//做密码验证登录选项,密码错误直接退出 
	if(!mytoken())
	{
		return 0;
	}
      do{
      	system("pause");
      	system("cls");
		printf("\n\n");
		printf("%*s%s",10," ","********** 学 生 宿 舍 管 理 系 统 **********\n\n");
		printf("%*s%s",25," ","1.查看学生信息\n\n");
		printf("%*s%s",25," ","2.查看部分信息\n\n");
	   	printf("%*s%s",25," ","3.添加学生信息\n\n");
	   	printf("%*s%s",25," ","4.删除学生信息\n\n");
	   	printf("%*s%s",25," ","5.修改学生信息\n\n");
	   	printf("%*s%s",25," ","0.退出系统\n\n");
	   	printf("%*s%s",10," ","*********************************************\n\n");
	   	printf("%*s%s",10," ","请选择0-4之间任意整数:");
		scanf("%d",&choice); 
		printf("\n");
       switch(choice)
       {
         case 1:QueryDatabase1();break;
         case 2:QueryDatabase2();break;
         case 3:InsertData();break;
         case 4:DeleteData();break;
         case 5:changedata();break;
         case 0:break;
       }
       
     }while(choice!=0);
	FreeConnect();
	return 0;
	
}
	
	

部分演示图片:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 宿舍管理系统c程序设计是指使用C语言编写宿舍管理系统的程序。宿舍管理系统是一种用于管理学生宿舍信息、维护宿舍安全和方便学生生活的软件系统。 宿舍管理系统的设计可以包括以下功能: 1. 学生信息管理:包括学生基本信息、入住时间、离开时间等。可以通过学生的学号或姓名查找、修改和删除学生信息。 2. 宿舍信息管理:包括宿舍号、宿舍楼层、宿舍类型等信息。可以查找、修改和删除宿舍信息。 3. 入住登记:当有新的学生入住时,可以在系统中登记新生的入住信息,包括学生信息和宿舍信息。 4. 退宿管理:当学生离开宿舍时,可以在系统中登记学生的离开信息,并进行相应的处理,如归还电器设备等。 5. 宿舍楼层管理:可以根据宿舍楼层查询和展示该楼层所有宿舍的入住情况,方便管理员进行楼层管理。 6. 宿舍安全管理:可以对宿舍内的电器设备、烟雾报警器等进行检查和维护,保障宿舍安全。 7. 系统管理员管理:设置管理员账号和权限,确保只有授权的管理员可以进行系统管理操作。 在C程序设计中,需要使用合适的数据结构和算法来实现宿舍管理系统的各项功能。可以使用链表、数组、结构体等数据结构来存储学生和宿舍的信息,使用循环和条件判断等算法来实现各种功能的实现逻辑。 总之,宿舍管理系统C程序设计可以通过使用C语言实现学生和宿舍信息的管理、入住退宿的登记和查询,以及宿舍安全管理等功能。 ### 回答2: 宿舍管理系统C程序设计是为了实现对大学宿舍的信息管理和学生入住情况的监控。该系统主要包括以下功能: 1. 学生信息管理:系统可以实现学生信息的录入、修改和删除等功能,包括学生的基本信息、宿舍分配情况等。 2. 宿舍信息管理:系统可以记录宿舍的基本信息,包括宿舍编号、可用床位等。 3. 入住管理:系统能够对学生入住情况进行管理,包括学生的入住时间、入住期限等信息的录入和查询等。 4. 预定管理:系统可以实现学生对宿舍的预定操作,包括选择宿舍、预定时间、申请理由等。 5. 报修管理:系统可以记录学生报修信息,包括报修类型、报修时间、报修进度等,并能够追踪维修情况。 6. 统计分析:系统能够对宿舍入住情况和报修情况进行统计和分析,生成相关报表和图表,提供给管理员参考。 在C程序设计中,我们可以使用结构体来表示学生信息和宿舍信息,并使用文件读写来实现数据的保存和读取。可以使用链表或数组等数据结构来管理学生和宿舍信息,以便于对数据进行增删改查操作。可以使用条件判断和循环等控制结构来实现各个功能的实现和用户交互。 此外,为了增加程序的健壮性和安全性,可以对用户输入进行合法性校验,比如判断输入是否为空、是否符合规定格式等。同时,还可以添加用户权限管理,限制不同用户对系统的操作权限,保证系统的安全性。 综上所述,宿舍管理系统C程序设计需要实现学生和宿舍信息的录入、修改和删除,入住和预定管理,报修管理,统计分析等功能,并应考虑程序的健壮性和安全性,确保系统的正常运行和数据的安全性。 ### 回答3: 宿舍管理系统是一个用于学生宿舍管理的计算机程序设计。这个系统的目的是为了提高宿舍管理的效率和便利性,让学生和管理人员能够更好地管理宿舍生活。 宿舍管理系统包括以下几个主要功能模块: 1. 学生信息管理:该模块用于记录学生的基本信息,包括学号、姓名、班级等,方便管理人员进行学生宿舍信息的查询和管理。 2. 宿舍信息管理:该模块用于记录宿舍的基本信息,包括宿舍号、楼栋信息、床位数量等,以便管理人员进行宿舍分配和宿舍容量的控制。 3. 宿舍分配管理:该模块用于实现宿舍的分配功能,可以根据学生的需求和宿舍的空余床位情况进行宿舍分配,同时更新学生和宿舍的信息。 4. 宿舍报修管理:该模块用于学生报修宿舍设施的处理,包括记录报修内容、指派维修人员、维修进度追踪等,方便管理人员及时处理和跟踪宿舍设施的维修工作。 5. 宿舍卫生管理:该模块用于记录宿舍卫生情况,包括卫生检查的时间、得分情况等,可以帮助管理人员对宿舍卫生情况进行评估和管理。 6. 宿舍活动管理:该模块用于记录宿舍内的活动信息,包括活动内容、参与人员等,可以方便管理人员了解宿舍生活的状况,并安排相关的宿舍活动。 通过宿舍管理系统的使用,可以提高宿舍管理的效率和准确性,减少管理人员的工作量,方便学生和管理人员进行宿舍信息的查询和管理,提升了宿舍管理的质量和效果。同时,该系统也可以提供数据的统计和分析功能,为后续宿舍管理的决策提供参考依据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值