宿舍管理软件

课题任务书

设计题目

宿舍管理软件 限定人数 3
问题描述 设某宿舍有n个房间,每个房间有6个床位,学生信息包括学号、班级编号、姓名、性别,为学生宿舍管理人员编写一个宿舍管理软件。

基本要求与说明

  1. 学生的入住处理,录入学生信息,随机分配床位。要求男女不能混住,原则上同班同学优先安排在一起。保证宿舍空间充分利用,尽量避免一两个人占用一个宿舍的情况。
  2. 学生退房处理;
  3. 输出学生入住信息(按房间号和床号有序);
  4. 修改入住信息;
  5. 学生调换宿舍或床位处理;
  6. 按给定学号、姓名、房号查询;
  7. 查询房间使用情况。
  8. 要求能够管理房间不少于40个,班级不少于30个,每个班级人数不少于30人。*

一、 前言

寝室管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在寝室管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。 21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生寝室管理系统。学生寝室管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备修改功能,能够快速的查询学校所需的住宿信息。

二 、设计要求

1.要求

  1. 学生的入住处理,录入学生信息,随机分配床位。要求男女不能混住, 原则上同班同学优先安排在一起。保证宿舍空间充分利用,尽量避免一两个人占用一个宿舍的情况。
    2).学生退房处理;
    3).输出学生入住信息(按房间号和床号有序);
    4).修改入住信息;
    5).学生调换宿舍或床位处理;
    6).按给定学号、姓名、房号查询;
    7).查询房间使用情况。
    8).要求能够管理房间不少于40个,班级不少于30个,每个班级人数不少于30人。

2.任务

  1. 定义各类头文件,变量及宏定义;
  2. 设计系统各个功能模块;
  3. 画出部分模块的流程图;
  4. 改进或增加功能模块;
  5. 编写代码;
  6. 程序分析与调试。

3.运行环境

  1. WINDOWS 7系统
  2. Visual C++6.0编译环境*

4.开发工具

  1. C语言
  2. C++

三、 概要设计

  1. .系统的功能模块
    宿舍管理软件_第1张图片

  2. .函数功能及参数说明、调用关系
    此程序的运用使用了以下头文件:

#include
#include
#include
#include
#include
#include

定义了以下函数:
void stu_read()              // 从文件中读取学生信息

void stu_write()                //把学生信息写入文件中

struct node {…………
…………
……………
……..}stu[50]                  //定义学生详细信息

int Menu()                  //显示菜单栏和以及查询等操作操作

void shu_ru()                 //添加新学生学生信息

void tui_chu()                   //删除已离开学生的信息

void cha_kan()               //查看每个房间的入住情况

void xiu_gai()                //修改某位学生的信息

void tiao_huan()              //对两位学生的床位进行调换

void pai_xu()                 //按照指定方式排序

void cha_xun()               //查询宿舍中已经入住人数和姓名

3.各变量的定义和作用

struct node
{
   char name[10];
   char sex[5];
   char number[10];
   int room;
   char clas[30];
   int berth;
} stu[50];

…………………………………//定义了一个stu结构体包括学生的基本信息:学号,姓名,房间号,班级,床位号,性别;

#define dzh1 "文件位置"        
                           //对储存文件进行重命名

四、 详细设计

  1. .主函数模块

宿舍管理软件_第2张图片
五、改进或增加功能模块说明

  1. . 增加了排序显示模块
    排序模块可以对学生学号,以及根据宿舍号的不同特征进行排序,方便使用者,查看各种数据,方便对系统信息管理。此时把三个bool形函数和算法中的快速排序(sort排序)相结合运用到程序中;*
bool fjian(node a,node b)
{
    return a.roomb.room;
}
bool xing(node a,node b)
{
    if(strcmp(a.name,b.name)>=0)
        return b.name;
    return a.name;
}

六 程序测试

需要自己测试哦(嘿嘿嘿!!!);

七、源程序如下:

#include
#include
#include
#include
#include
#include
#define dzh1 "C:\\Users\\Desktop\\新建文本文档.txt"//文件地址
using namespace std;
mapmp;
mapmp1;
mapbpl;
mapbp2;
bool book[1001][1010];
int num=0;
struct node
{
    char name[10];
    char sex[5];
    char number[10];
    int room;
    char clas[30];
    int berth;
} stu[50];
bool cmp(node a,node b)
{
    if(a.room==b.room)
        return a.berth>>");
        a=getchar();
    }
    while(a<'0'||a>'9');
    return a-'0';
}
void shu_ru()
{
    char t='Y';
    while(t=='Y'||t!='N')
    {
        system("cls");
        printf("\t\t请输入学生姓名:");
        scanf("%s",stu[num].name);
        printf("\t\t性别:");
        scanf("%s",stu[num].sex);
        printf("\t\t学号:");
        {
            scanf("%s",stu[num].number);
            if(bpl[stu[num].number])
            {
                printf("\t\t此学生已经入住,请重新输入信息\n\t\t");
                system("pause");
                continue;
            }
            bpl[stu[num].number]++;
        }
        printf("\t\t班级:");
        scanf("%s",stu[num].clas);
        printf("\n");
        printf("\t\t请输入所要安排的房间号:");
        scanf("%d",&stu[num].room);
        while(mp1[stu[num].room]>=6)
        {
            printf("\n\t\t此宿舍人数已满,请换个房间:");
            scanf("%d",&stu[num].room);
            printf("\n");
        }
        mp1[stu[num].room]++;
        while(mp[stu[num].room]!=stu[num].sex&&mp[stu[num].room]!="")
        {
            printf("\n\t\t男女不能混寝,折磨简单的道理都不懂?\n");
            printf("\t\t请重新输入房间号:");
            scanf("%d",&stu[num].room);
        }
        mp[stu[num].room]=stu[num].sex;
        printf("\t\t床位号:");
        scanf("%d",&stu[num].berth);
        if(book[stu[num].room][stu[num].berth])
        {
            while(book[stu[num].room][stu[num].berth])
            {
                printf("\t\t此床位已经有人居住,请换一个床位试试\n\t\t");
                scanf("%d",&stu[num].berth);
            }
        }
        while(stu[num].berth>6||stu[num].berth<1)
        {
            printf("\t\t床位号只能从1到6,重新输入\n\t\t");
            scanf("%d",&stu[num].berth);
        }
        book[stu[num].room][stu[num].berth]=1;
        printf("\n");
        printf("\t\t是否继续输入(Y/N):");
        num++;
        getchar();
        scanf("%c",&t);
    }
}
void tui_chu()
{
    char id[20];
    char t='Y';
    if(!num)
    {
        printf("\t\t您的宿舍楼还没有人来住,请先收集一些人才吧!\n\t\t");
        system("pause");
        return;
    }
    while(t=='Y'||t!='N')
    {
        system("cls");
        printf("\t\t请输入退出学生的姓名或者是学生的学号:");
        scanf("%s",id);
        printf("\n");
        int flag=0;
        for(int i=0; i>宿舍楼内没有这位同学<<\n");
        printf("\t\t是否继续执行操作(Y/N):");
        getchar();
        scanf("%c",&t);
        printf("\n");
    }
}
void cha_kan()
{
    int t=0;
    if(num==0)
    {
        printf("\t\t您的宿舍楼还没有人来住,请先收集一些人才吧!\n");
        printf("\t\t");
        system("pause");
        return;
    }
    sort(stu,stu+num,cmp);
    printf("\t\t房间号    姓名    学号     床号   性别\n");
    for(int i=0; i'6');
    return z-'0';
}
void xiu_gai()
{
    int t='Y';
    if(num==0)
    {
        printf("\t\t您的宿舍楼还没有人来住,请先收集一些人才吧!\n");
        printf("\t\t");
        system("pause");
        return;
    }
    char a[10];
    while(t=='Y'||t!='N')
    {
        system("cls");
        printf("\t\t请输入修改学生的名字:\n\t\t");
        scanf("%s",a);
        printf("\n");
        int flag=0;
        for(int i=0; i>");
                    getchar();
                    scanf("%c",&T);
                }
                break;
            }
        if(!flag)
            printf("\t\t>>宿舍楼内没有这位同学<<\n");
        printf("\t\t是否继续执行操作(Y/N)\n\t\t>>");
        getchar();
        scanf("%s",&t);
    }

}
void swp(char a[],char b[])
{
    char x[20];
    strcpy(x,a);
    strcpy(a,b);
    strcpy(b,x);
}
void tiao_huan()
{
    char a[110],b[110];
    char t='Y';
    if(!num)
    {
        printf("\t\t您的宿舍楼还没有人来住,请先收集一些人才吧!\n\t\t");
        system("pause");
        return;
    }
    while(t=='Y'||t!='N')
    {
        system("cls");
        printf("\t\t请输入所要调换床位的两位的姓名或学号\n");
        printf("\t\t输入成员1:\n\t\t");
        scanf("%s",a);
        printf("\t\t输入成员2:\n\t\t");
        scanf("%s",b);
        int x=0,y=0;
        for(int i=0; i'3'||ch<'0');
    return ch-'0';
}
bool fjian(node a,node b)
{
    return a.roomb.room;
}
bool xing(node a,node b)
{
    if(strcmp(a.name,b.name)>=0)
        return b.name;
    return a.name;
}
bool xing1(node a,node b)
{
    if(strcmp(a.name,b.name)>=0)
        return a.name;
    return b.name;
}
void pai_xu()
{
    if(!num)
    {
        printf("\t\t你还没有存入学生信息,请存入一些信息\n\t\t");
        system("pause");
        return;
    }
    char t='Y';
    while(t=='Y'||t!='N')
    {
        switch(xun_hu())
        {
        case 1:
            sort(stu,stu+num,fjian);
            break;
        case 2:
            sort(stu,stu+num,fjia);
            break;
        case 3:
            sort(stu,stu+num,xing);
            break;
        case 4:
            sort(stu,stu+num,xing1);
            break;
        }
        printf("\t\t房间号    姓名    学号     床号   性别\n");
        for(int i=0; i

八、 致谢:

  1. 为期两周的课程设计即将结束,在开始设计的时候我们也参考了许多具体的实例,但是真正做起来却是非常难得的。在本次课程设计的过程中,我遇到了很多的困难的,但是在老师和同学的帮助之下,我完成了此次课程设计。我首先要感谢任课老师,是他让我们第一次接触了这门课程,虽然这次我并没有应用太多课上的知识,但从其他同学的课程设计中,我还是感觉到这门课的巨大用处。通过这次课程设计,使我得到了一次泳专业知识、专业技能分析和解决问题的全面系统的锻炼。
  2. 在指导老师以及同学的帮助下,基本完成了课程设计要求设计任务,在软件的设计方面也有了一定的提高,熟练掌握了c++命令和编程技巧。无论在理论上还是在实践中,都给与我们很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有很大的帮助,在此感谢他们耐心的辅导。

九、参考文献

[1] 张福祥. C语言程序设计[M]. 辽宁大学出版社,2008.1
[2] 张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:辽宁大学出版社,2008.
[3] 牛莉,刘远军等.计算机等级考试辅导教程[M].北京:中国铁道出版社,2008.
[4] 陈志泊.ASP.NET数据库应用程序开发.北京:人民邮电出版社,2005
[5] 万科,覃剑.Visual C#.NET程序设计基础. 北京:清华大学出版社,2007

你可能感兴趣的:(第一次设计程序设计留下一个回忆,程序应用)