宿舍信息管理系统

随便写的,没有数据结构算法的核心,是函数的拼凑。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<windows.h>
using namespace std;
#define MAX 100
int Total;
int domes[MAX][MAX];
struct edg{             //构造结构体,创建学生信息的结构体数组,其中的信息包含名字,宿舍房号以及学号 。
    string name;
	int   domenumber;
	int  number;
}student[MAX];

void menu()            //主菜单的函数包含3个功能(新建,排序,查询)。
{
     cout<<"\t\t                   ***                  "<<endl;
     cout<<"\t\t                 **   **                "<<endl;
     cout<<"\t\t              ***       ***             "<<endl;
     cout<<"\t\t           ***              ***         "<<endl;
     cout<<"\t\t        ***                    ***      "<<endl;
     cout<<"\t\t     ***                          ***   "<<endl;
     cout<<"\t\t  ***       欢迎进入宿舍管理系统     ***"<<endl;
     cout<<"\t\t  **************************************"<<endl;
     cout<<"\t\t  *     制作人:计算机1503 谢俊宏      *"<<endl;
     cout<<"\t\t  **************************************"<<endl;
     cout<<"\t\t  *        1.  新建宿舍名单            *"<<endl;
     cout<<"\t\t  *        2.  排序宿舍信息            *"<<endl;
     cout<<"\t\t  *        3.  查询宿舍信息            *"<<endl;
     cout<<"\t\t  *        4.  删除宿舍信息            *"<<endl;
     cout<<"\t\t  *        0.  退出系统                *"<<endl;
     cout<<"\t\t  **************************************"<<endl;
     cout<<endl<<endl;
     cout<<"请输入你想要进行操作的代号:";
}

void build()  //新建学生信息
{
      int i;
      string a;
      int c,b;
      system("cls");

      cout<<"请输入要录入的人数:"<<endl;     //录入的人数为Total
      cin>>Total;

      cout<<"请分别输入他们的信息:"<<endl;

      for(i=1;i<=Total;i++)                //为每个同学输入信息
      {
      	cout<<"输入第"<<i<<"个学生的姓名:" ;
        cin>>a;
      	student[i].name=a;
      	cout<<"输入第"<<i<<"个学生的学号:" ;
        cin>>b;
        student[i].number=b;
        cout<<"输入第"<<i<<"个学生的宿舍号:" ;
        cin>>c;
        student[i].domenumber=c;
        cout<<endl;
      }
      return ;
}

int  binarynum(int left,int right,int key)    // 用递归二分的方法求出学号在结构体数组中的位置
{
	if(left>right) return -1;
	int mid=(left+right)<<1;                //使用位运算<<1 让计算更有效率
	if(student[mid].number==key) return mid;
	else if(student[mid].number<key) return binarynum(mid+1,right,key);
	else return binarynum(left,mid,key);
}

void paixumenu()                                         //排序函数
{
    string choice;
    int i,m,j;
    system("cls");
     cout<<"请输入排序的方式(1:按学号排序,2:按房号排序,3:按名字排序):"<<endl;      //三个排序方法
      while(1)                                           //对输入的信息进行容错处理,防止出现输入字母的情况
	{
		m=0;
         cin>>choice;
	     if(strlen(choice.c_str())>1)
		 {
		  m=1;
	 	cout<<"输入错误,请重新输入";
	     }
	  if(choice[0]>'3'||choice[0]<'1')
	   {
	  	cout<<"输入数字没有此选项请重新输入"<<endl;
		   m=1;
	   }
	   if(m==0)
	   break;
	}

     if(choice[0]=='1')                                //进行以学号为关键字的排序
     {
     	for(i=1;i<=Total;i++)                          //用冒泡排序法进行排序
           for(j=1;j<Total-i+1; j++)
			if(student[j].number>=student[j+1].number)
			 {
			 	edg temp=student[j];
			 	student[j]=student[j+1];
			 	student[j+1]=temp;
			 }
		cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
		for(i=1;i<=Total;i++)
		{
			cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
		}
		cout<<endl;
     }

     if(choice[0]=='2')                             //以按宿舍号的关键字进行排序
     {
       	for(i=1;i<=Total;i++)                       //用冒泡排序法进行排序
           for(j=1;j<Total-i+1; j++)
			if(student[j].domenumber>=student[j+1].domenumber)
			 {
			 	edg temp=student[j];
			 	student[j]=student[j+1];
			 	student[j+1]=temp;
			 }

		cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
		for(i=1;i<=Total;i++)
		{
			cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
		}
			cout<<endl;
     }

     if(choice[0]=='3')                             //以按学生姓名的关键字进行排序
     {
       	for(i=1;i<=Total;i++)
           for(j=1;j<Total-i+1; j++)                //用冒泡排序法进行排序
			if(strcmp(student[j].name.c_str(),student[j+1].name.c_str())>=0)
			 {
			 	edg temp=student[j];
			 	student[j]=student[j+1];
			 	student[j+1]=temp;
			 }

		cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
		for(i=1;i<=Total;i++)
		{
			cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
		}
			cout<<endl;
     }

     return ;
}

void query()                              //查询函数
{
    string choice;
    int m,i,j;
    string a,choice1;
    string b,c;
    system("cls");
     cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl;  //三个关键字进行查找
     while(1)
    {
    	while(1)                       //对输入的信息进行容错处理,防止出现输入字母的情况
	{
		m=0;
         cin>>choice;
	     if(strlen(choice.c_str())>1)
		 {
		  m=1;
	 	cout<<"输入错误,请重新输入";
	     }
	  if(choice[0]>'3'||choice[0]<'1')
	   {
	  	cout<<"输入数字没有此选项请重新输入"<<endl;
		   m=1;
	   }
	   if(m==0)
	   break;
	}

	 if(choice[0]=='1')                      //以 名字为关键字进行查询
     {
     	cout<<"输入你想要查找学生的名字:";
     	cin>>a;

     	for(i=1;i<=Total;i++)
     	 {
     		if(strcmp(student[i].name.c_str(),a.c_str())==0)        //使用strcmp及.c_str进行比较
     		break;
		 }

		 if(i!=Total+1)
		 {
		 	cout<<"目标学生的学号为:"<<student[i].number<<"  宿舍号为"<<student[i].domenumber<<endl;
		 	cout<<"是否继续进行此操作(是为y,不是为n):";
		    cin>>choice1;
		    if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; continue;}
		    else break;
		 }
		 else
		 {cout<<"你想要查找的学生没有记录入系统中,是否继续进行此操作(是为y,不是为n):";
		 cin>>choice1;
			if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
		 else break;
	     }
	 }

	 if(choice[0]=='2')                          //以按照学号的关键字进行查询
     {
     	cout<<"输入你想要查找学生的学号:";
     	cin>>b;
     	int sss=0,k=1;                           //对输入的信息进行容错处理,防止出现输入字母的情况
         int len=b.size();
         for(int j=len-1;j>=0;j--)
         {
         		sss+=((int)b[j]-48)*k;
         	k*=10;
		 }
     	if(binarynum(1,Total,sss)!=-1)           //使用二分的方法来找到位置,若return结果为-1则表示学号没有录入系统中
     	{
     		cout<<"目标学生姓名为:"<<student[binarynum(1,Total,sss)].name
		    <<"学号为:"<<student[binarynum(1,Total,sss)].number<<"  宿舍号为"<<student[binarynum(1,Total,sss)].domenumber<<endl<<endl;
		 	cout<<"是否继续进行此操作(是为y,不是为n):";
		    cin>>choice1;
		    		 if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
		    else break;
		 }
		  else
		 {cout<<"你想要查找的学号没有记录入系统中,是否继续进行此查询操作(是为y,不是为n):";
		 cin>>choice1;
		 if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
		 else break;
	     }
	 }
	 int flag=0;
	if(choice[0]=='3')                               //以按 宿舍号为关键字进行查找
	{
	 cout<<"输入你要查询的宿舍号:";
	 cin>>c;
     	 int sss=0,k=1;                               //对输入的信息进行容错处理,防止出现输入字母的情况
          int len=c.size();
         for(int j=len-1;j>=0;j--)
         {
         		sss+=((int)c[j]-48)*k;
         	k*=10;
		 }
	 for(i=1;i<=Total;i++)
	 {
	 		if(sss==student[i].domenumber&&flag==1)
	 	{
	 		cout<<student[i].name<<"\t"<<student[i].number<<"\t"<<student[i].domenumber<<endl;
		}
	 	if(sss==student[i].domenumber&&flag==0)
	 	{
	 		flag=1;
	 		cout<<"姓名\t学号\t房号"<<endl;
	 		cout<<student[i].name<<"\t"<<student[i].number<<"\t"<<student[i].domenumber<<endl;
		}
		cout<<endl;
		cout<<"是否继续进行此查询操作(是为y,不是为n):";
		cin>>choice1;
		 	 if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
		else break;
	 }
	 if(flag==0)
	 {
	 	cout<<"你想要查找宿舍没有记录入系统中或者宿舍没有人进行登记,是否继续进行此查询操作(是为y,不是为n):";
		 cin>>choice1;
		 if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; continue;}
		 else break;
	 }
    }
    }
      return ;
}
void Delete()                  //删除函数
{
	  string choice;
      int m,i,j;
      string a,choice1;
      string b,c;
      system("cls");
      cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl;  //三个关键字进行删除
      while(1)
    {
    	while(1)                       //对输入的信息进行容错处理,防止出现输入字母的情况
	{
		m=0;
         cin>>choice;
	     if(strlen(choice.c_str())>1)
		 {
		  m=1;
	 	cout<<"输入错误,请重新输入";
	     }
	  if(choice[0]>'3'||choice[0]<'1')
	   {
	  	cout<<"输入数字没有此选项请重新输入"<<endl;
		   m=1;
	   }
	   if(m==0)
	   break;
	}

	 if(choice[0]=='1')                      //以名字为关键字进行查询 并删除
     {
     	cout<<"输入你想要删除学生的名字:";
     	cin>>a;

     	for(i=1;i<=Total;i++)
     	 {
     		if(strcmp(student[i].name.c_str(),a.c_str())==0)        //使用strcmp及.c_str进行比较
     		break;
		 }

		 if(i!=Total+1)
		 {
		    for(j=i;j<Total;j++)
		  {
			student[j]=student[j+1];
		  }
           Total--;
           cout<<"删除成功"<<endl<<endl;
		 	cout<<"是否继续进行此删除操作(是为y,不是为n):";
		    cin>>choice1;
		    if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; continue;}
		    else break;
		 }
		 else
		 {cout<<"你想要删除的学生没有记录入系统中,是否继续进行此操作(是为y,不是为n):";
		 cin>>choice1;
			if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
		 else break;
	     }
	 }

	 if(choice[0]=='2')                          //以按照学号的关键字进行删除
     {
     	cout<<"输入你想要删除学生的学号:";
     	cin>>b;
     	int sss=0,k=1;                           //对输入的信息进行容错处理,防止出现输入字母的情况
         int len=b.size();
         for(int j=len-1;j>=0;j--)
         {
         		sss+=((int)b[j]-48)*k;
         	k*=10;
		 }
     	if(binarynum(1,Total,sss)!=-1)           //使用二分的方法来找到位置,若return结果为-1则表示学号没有录入系统中
     	{
     		int ii= binarynum(1,Total,sss);
		    for(j=ii;j<Total;j++)
		  {
			student[j]=student[j+1];
		  }
           Total--;
           cout<<"删除成功"<<endl<<endl;
		 	cout<<"是否继续进行此删除操作(是为y,不是为n):";
		    cin>>choice1;
		    		 if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
		    else break;
		 }
		  else
		 {cout<<"你想要删除的学号没有记录入系统中,是否继续进行此查询操作(是为y,不是为n):";
		 cin>>choice1;
		 if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
		 else break;
	     }
	 }
	 int flag=0;
	if(choice[0]=='3')                               //以按 宿舍号为关键字进行删除
	{
	 cout<<"输入你要删除的宿舍号:";
	 cin>>c;
     	 int sss=0,k=1;                               //对输入的信息进行容错处理,防止出现输入字母的情况
          int len=c.size();
         for(int j=len-1;j>=0;j--)
         {
         		sss+=((int)c[j]-48)*k;
         	k*=10;
		 }
	 for(i=1;i<=Total;i++)
	 {
	 	if(sss==student[i].domenumber&&flag==0)
	 	{
	 		flag=1;
	 		for(j=i;j<Total;j++)
		  {
		student[j]=student[j+1];
		  }
           Total--;
		}
	}
		cout<<"删除成功!"<<endl;
		cout<<endl;
		cout<<"是否继续进行此删除操作(是为y,不是为n):";
		cin>>choice1;
		if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
		else break;

	 if(flag==0)
	 {
	 	cout<<"你想要查找宿舍没有记录入系统中或者宿舍没有人进行登记,是否继续进行此删除操作(继续为y,不继续进行操作为n):";
		 cin>>choice1;
		 if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; continue;}
		 else break;
	 }
    }
    }
    return ;
}
int main()
{
    menu();
    int j,k,n,m;
    memset(domes,0,sizeof(domes));
    string choice,i;
    while(1)
  {
      while(1)
	{
		m=0;
         cin>>choice;
	     if(strlen(choice.c_str())>1)
		 {
		  m=1;
	 	cout<<"输入错误,请重新输入";
	     }
	  if(choice[0]>'4'||choice[0]<'1')
	   {
	  	cout<<"输入数字没有此选项请重新输入"<<endl;
		   m=1;
	   }
	   if(m==0)
	   break;
	}

        if(choice[0]=='1')
        {
            build();
            cout<<"新建完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
            cin>>choice;
            if(choice[0]=='y')
			{
				system("cls");
			menu();
		    }
			else break;
        }

        else if(choice[0]=='2')
        {
            paixumenu();
           cout<<"排序完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
            cin>>choice;
            if(choice[0]=='y')
			{
				system("cls");
			menu();
		    }
			else break;
        }

        else if(choice[0]=='3')
        {
            query();
             cout<<"排序完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
            cin>>choice;
            if(choice[0]=='y')
			{
				system("cls");
			menu();
		    }
			else break;
        }

        else if(choice[0]=='4')
        {
            Delete();
             cout<<"删除完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
            cin>>choice;
            if(choice[0]=='y')
			{
				system("cls");
			menu();
		    }
			else break;
        }

        else if(choice[0]=='0')  break;
      }
       cout<<"退出系统"<<endl;
        system("pause");

  return 0;
}
时间: 2024-10-12 19:12:23

宿舍信息管理系统的相关文章

学生宿舍信息管理系统

#include"stdio.h" #include"stdlib.h" #include"string.h" #include"conio.h" #define PAGE 3 #define MAX 1000 #define N 5 int k=0; /*结构体类型*/ typedef struct {   int num;/*宿舍号*/ char name[20];/*姓名*/ char sex[5];/*性别*/ int

学生信息管理系统改编

老师给的代码: #include"stdio.h" #include"stdlib.h" #include"string.h" #include"conio.h" #define PAGE 3 #define MAX 1000 #define N 5 int k=0; /*结构体类型*/ typedef struct {   int num;/*学号*/ char name[20];/*姓名*/ char sex[5];/*性

学生宿舍信息查询

#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#define PAGE 3#define MAX 1000#define N 5int k=0;  /*结构体类型*/typedef struct  {   int num;/*宿舍号*/    char name[20];/*姓名*/ char sex[5];/*性别*/ int ag

图书信息管理系统编程学习与体会

#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#define PAGE 3#define MAX 1000#define N 5int k=0;  /*结构体类型*/typedef struct  {   int num;/*图书编号*/    char name[20];/*书名*/ char sex[5];/*图书类型*/ int

java课程设计(学生信息管理系统)

1.需求分析 功能要求: 1)需要管理的学生信息有:学号.姓名.性别.出生日期.政治面貌.家庭住址.电话.宿舍号. 2)实现查询.增.删.改等功能. 数据存储:数据库或文件. 2.本组课题及本人任务 本组的课题是学生信息管理系统,我负责的任务是完成学生信息管理系统的图形界面. 3.总体设计(概要设计) 本组完成的是学生信息管理系统,主要的功能有增,删,查,改,管理的学生信息有学号.姓名.性别.出生日期.政治面貌.家庭住址.电话.宿舍号.并且使用数据库来储存学生信息. 小组成员 翁华辉:负责完成学

自写信息管理系统——C实现

信息管理系统 简介: 该管理系统分为三个权限:学生,老师,管理员 用双向链表实现,文件储存,有账号密码功能. 密码实现MD5加密,较难破解 实现了链表添加,查找,排序,删除等基本操作 共分为6个文件 5个.cpp文件  1个.h文件 下面上代码 : mian.cpp: #include<stdio.h> #include<math.h> #include<string.h> #include<conio.h> #include<stdlib.h>

学生信息管理系统修改

北京工业大学耿丹学院 c语言设计课程报告   课程设计名称:高级语言程序设计 专业班级:计算机科学与技术1 姓名:吴双 学号:150809201   2016年5月10日 一 对c语言指针链表的体会 ------------------------ 二 修改学生信息管理系统 ------------------------ 三 体会 ------------------------ 一 对c语言指针链表的体会 1.指针 简单来说,指针是一个存储计算机内存地址的变量. 用 int *ptr 这种形

Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis)视频教程

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)视频教程下载   联系QQ:1026270010 Extjs作为一款优秀的JS前端开发框架以其良好的架构.丰富的UI组件库.完善的文档和社区支持等诸多优点拥有广泛的市场应用空间,开发人员无需过多的关注HTML.CSS甚至各种常用JS算法,只需把精力放在业务逻辑上,利用各种组件的相互组合调用便可轻松而高效的开发出系统的前端页面. Extjs5在之前版本的基础上又推出

用基本数据结构修改后的学生信息管理系统(增删改查)

package com.xt.student.system; //创建学生类存放信息 public class Student {//声明变量private String stuNo; private String stuName; private String gender; private int age; private int score; //对变量进行封装 public String getStuNo() {return stuNo;} public void setStuNo(St