精华内容
下载资源
问答
  • 一个简单的学生宿舍信息管理系统 基本功能都有
  • 数据库课程设计——学生宿舍信息管理系统

    万次阅读 多人点赞 2018-09-17 23:33:00
    数据库课程设计——学生宿舍信息管理系统 目录  1.设计目的... 2 2、任务与要求... 2 3、学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1....

    数据库课程设计——学生宿舍信息管理系统

    目录                                                                                             

    1.设计目的... 2

    2、任务与要求... 2

    3、学生宿舍管理系统课程设计... 2

    3.1 引言... 2

    3.2需求分析... 2

    3.2.1. 2

    3.2.2. 3

    3.3概念设计... 6

    3.4逻辑设计... 10

    3.5物理结构设计... 12

    3.6数据库实施... 14

    3.6.1数据库表的定义... 14

    3.6.2视图的定义:... 15

    3.6.3索引:... 16

    3.6.4触发器的定义:... 17

    3.6.5用户的定义:... 18

    3.6.6 对数据的管理:... 18

    3.7系统调试和测试... 19

    4.系统评价... 20

    4.1我的系统特色:... 20

    4.2 系统不足及改进... 21

    5.设计心得... 21

     

    1.设计目的

    《数据库系统原理》课程设计是软件工程和计算机科学与技术专业集中实践性环节之一,旨在让我们自身加深对数据库基础理论和基本知识的理解,掌握设计数据库管理系统的基本方法,锻炼运用知识解决实际问题的动手能力。

    2、任务与要求

    要求学生们从给定的设计题目中进行选择,进行需求分析,概念设计、逻辑设计,数据库的设计过程,表结构、表之间的关联,给出视图的定义、触发器的定义、索引,安全性的实现,用SQL语句等在SQL Server 2008系统中实现数据库的数据输入,查询,更新和输出;给出实现效果截图及部分测试结果。

     

    3、学生宿舍管理系统课程设计

    3.1 引言

     

    随着社会的发展以及教育水平的提高,当今社会在校生的数量越来越庞大。与此同时,使用曾经的手工的方式对学生的信息进行管理效率非常低下。在互联网技术高度发达的今天 ,使用数据库技术队对学生的住信息进行管理能够使学校对学生信息的管理更加的高效,检索迅速,查找方便,可靠性高存储量大。使用数据库技术的这些优点可以使得学生信息出错的发生。同时使用数据库技术可以使学生住宿信息长时间稳定地保存,也不容易丢失。开发出这样的一个数据库迫在眉睫。

    3.2需求分析

    3.2.1

     系统需求调查的方法为访谈法,通过对多个学校的宿舍管理人员进行交谈,从而得出系统的主要任务和特定的要求。系统的主要任务是能够对宿舍信息,学生信息,管理员信息,住宿信息进行登记,调整,并能进行各种查询以及信息的备份。

     

    完整性要求:防止不符合语义的数据进入数据库。

    安全性要求:需要防止客户对数据进行未经授权的访问。

    性能要求:最好能够实现并发访问,允许多个用户同时对数据库中的数据进行访问。

    一致性要求:防止数据库进入不一致状态。

    数据库要求:各种各样的故障都可能发生,出现意外时,,尽可能的确保任何数据在任何情况下都不会丢失。

    3.2.2

    系统的业务流程:

    学生入住和退宿时通过管理员进行登记;

    住宿产生的各种费用以及使用的各项物品由管理员进行登记;

    管理员将登记的各项信息上报给教务处;

    教务处将各项住宿信息进行统一管理;

    储存的所有数据供不同权限的客户进行访问;

     

     

    数据字典:

    学生基本信息

    编号

    属性名

    类型

    解释

    备注

    0001

    学号

    Varchar(15)

    0002

    姓名

    Varchar(10)

    0003

    性别

    Varchar(2)

    男、女

    0004

    年龄

    Int

    0……100之间

    0005

    手机号

    Varchar(15)

    手机号码

    0006

    专业

    Varchar(20)

     

    住宿费用信息:

     

     

    编号

    属性名

    类型

    解释

    备注

    0008

    表单编号

    Varchar(15)

    0009

    学号

    Varchar(15)

    0010

    宿舍号

    Varchar(6)

    不是门牌号

    0011

    水费

    Double(6)

    大于0

    0012

    电费

    Double(6)

    大于0

    0013

    维修费

    Double(6)

    大于0

    0014

    住宿费

    Double(6)

    大于0

    0015

    日期

    Date(8)

    0016

    合计

    Double(6)

    大于0

     

     

     

    物品管理信息:

     

    编号

    属性名

    类型

    解释

    备注

    0017

    员工号

    Varchar(15)

    0018

    宿舍号

    Varchar(15)

    0019

    桌子

    Int

    大于0

    0020

    椅子

    Int

    大于0

    0021

    Int

    大于0

    0022

    电扇

    Int

    大于0

    0023

    Int

    大于0

    0024

    窗户

    Int

    大于0

     

     

     

    宿舍信息

     

    编号

    属性名

    类型

    解释

    备注

    0025

    宿舍编号

    Varchar(15)

    0026

    楼号

    Varchar(15)

    0027

    区域

    Varchar(15)

    校园内

    ABCDEFG

    0028

    人数

    Int

    0……8

    0029

    房间类型

    Varchar(15)

    按人数分

    1(四人)2(六人)3(八人)

     

     

    管理员信息

     

    编号

    属性名

    类型

    解释

    备注

    0030

    员工号

    Varchar(15)

    0031

    姓名

    Varchar(10)

    0032

    性别

    Varchar(2)

    男,女

    0033

    年龄

    Int

    0……100

    0034

    手机号

    Varchar(15)

    11位

    0035

    楼号

    int

    0036

    区域

    int

    ABCDEFG

    0037

    职位

    Varchar(2)

    1(高级员工)2(普通员工)

     

     

    3.2.2 系统功能描述:

    对学生的信息进行管理;

    对宿舍信息进行管理;

    对管理员信息进行管理;

    对宿舍物品进行登记和管理;

    对住宿产生的各项费用进行登记和管理;

    对已经更改的学生和管理员信息进行保存

     

    在这幅图中,其中各项从左往右前5部分功能都包括各自信息的增删改查,第六项功能为学生和教师信息的备份,也就是已修改信息储存。

    3.3概念设计

    (说明使用数据库概念设计的基本思想和原理方法,设计出系统E-R图)

    基本思想:将需求分析得到的用户需求抽象为信息结构,分析数据字典中数据字典间内在语义关联,并将其抽象表示为数据的概念模式,从而能真实,充分地反应真实世界,包括事物和事物之间的联系,能满足用户对数据的处理需求,是现实世界的一个真实模型,易于理解,从而可以用它和不熟悉计算机的人交换意见,且易于更改。方法:首先分析整个系统中涉及到的实体,得到局部的ER图。然后分析这些实体之间的关系,进行连接从而得到

     

     

     

     

     

     

    3.4逻辑设计

    基本思想:首先整个系统一共可以划分出三个实体,分别是学生,管理员和宿舍,三者之间构成一个三角关系。同时,学生和宿舍之间的住宿关系衍生出一系列的住宿产生的费用,管理员和宿舍的管理关系衍生出一系列需要管理的物品,因此五张表相互关联生成完整的数据库系统。

    数据库关系图:

    学生的个人信息:学号,姓名,性别,年龄,手机号码,专业,管理员号

    student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,manager_num)

     

    宿舍费用信息:表单编号,水费,电费,维修费,住宿费,总费用,日期

    live(list_num,stu_num,dor_num,water,electric,service,lodge,total,date)

     

    宿舍物品信息:桌子,椅子,床,灯,

    tool(mana_num,dor_num,table,chair,bed,light)

     

    宿舍信息:宿舍编号,人数,房间类型,楼号,区域

    dormitory(dor_num ,prople_total,size, build_num,zone)

     

    宿舍管理人员信息:员工号,姓名,性别,年龄,手机号

    manager(mana_num,mana_name,mana_gender,mana_age,mana_tele)

      

      

    3.5物理结构设计

     

    物理设计的基本思想:根据逻辑设计出的逻辑模式,DBMS及计算机系统所提供的手段和施加的限制,设计数据库的内模式,即文件结构,各种路径,控件分配,记录的存取方式等,为逻辑数据结构选取一个最合适的应用环境的物理结构。

    学生基本信息表:

     

    属性名

    类型

    长度

    备注

    Stu_num

    varchar

    15

    Stu_name

    varchar

    10

    Stu_gender

    varchar

    2

    男、女

    Stu_age

    int

    4

    0……100之间

    Stu_tele

    varchar

    15

    Stu_spe

    varchar

    20

    住宿费用信息表:

     

    属性名

    类型

    长度

    备注

    List_num

    Varchar

    15

       Stu_num

    Varchar

    15

       Dor_num

    Varchar

    15

    water

    double

    6

    大于0

    Elect

    double

    6

    大于0

        Repaire

    double

    6

    大于0

    live

    double

    6

    大于0

    date

    date

    8

    指的是具体一年

    物品管理信息表:

     

    属性名

    类型

    长度

    备注

    Mana_num

    Varchar

    15

        Dor_num

    Varchar

    15

    Desk

    Int

    2

    大于0

    Chair

    Int

    2

    大于0

    Bed

    Int

    2

    大于0

    fan

    Int

    2

    大于0

    lighr

    Int

    2

    大于0

    window

    Int

    2

    大于0

    宿舍信息表:

    属性名

    类型

    长度

    备注

    Dor_num

    Varchar

    15

    Build_num

    Varchar

    2

    Zone

    Varchar

    2

    ABCDEFG

    People_total

    Int

    2

    0……8

    size

    varchar

    2

    1(四人)2(六人)3(八人)

    管理员信息表:

    属性名

    类型

    长度

    备注

       Mana_num

    Varchar

    15

    Mana_name

    Varchar

    10

    Mana_gender

    Varchar

    2

    男,女

    Mana_age

    Int

    4

    0……100

    Mana_tele

    varchar

    15

    11位

    Build_num

    int

    2

    zone

    varchar

    2

    ABCDEFG

    3.6数据库实施

    数据库的实施:数据库设计完成后,设计人员要用DBMS提供的数据定义语言和其他的使用程序将数据库逻辑结构设计和物理结构设计的结构用DDL严格描绘出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。最后将数据装入数据库。

     

    3.6.1数据库表的定义

    创建学生信息表:

     Create table student

    (stu_num  varchar(15),

    Stu_name  varchar(10),

    Stu_gender  varchar(2)  check(stu_gender=’男’ or stu_gender=’女’),

    Stu_age  int  check(stu_age>0 and stu_age<100),

    Stu_tele  varchar(15),

    Stu_spe  varchar(20),

    Primary key (stu_num),

    );

     

    创建费用信息表:

     Create  table  live

    ( list_num  varchar(15),

    Stu_num  varchar(15),

    Dor_num  varchar(15),

    Water  float check(water>=0),

    Elect  float  check(elect>=0),

    Repair  float  check(repair>=0),

    Living  float  check(living>=0),

    statu  int default(1), 

    Date  date,

    Primary key(list_num),

    Foreign key (stu_num ) references  student(stu_num)

    on update cascade,

    Foreign key (dor_num ) references  dormitory(dor_num)

    on update cascade

    );

     

     

    创建物品信息管理表:

    Create  table tool

    ( mana_num  varchar(15),

    Dor_num  varchar(15),

    desk  int  check(desk>=0),

    Chair  int  check(chair>=0),

    Bed  int  check(bed>=0),

    Light  int  check(light>=0),

    Primary key (dor_num),

    Foreign key (mana_num ) references  manager(mana_num)

    on update cascade on delete set null

    );

     

    创建宿舍信息管理表:

     Create table dormitory

    (dor_num varchar(15),

    People_total  int  check(people_total>=0 and people_total<=8),

    Size   int check(size=1 or size=2  or size=3)

    );

     

    创建管理员信息表:

     Create table manager

    (mana_num  varchar(15),

    mana_name  varchar(10),

    mana_gender  varchar(2)  check(stu_gender='男' or stu_gender='女'),

    mana_age  int  check(stu_age>0 and stu_age<100),

    mana_tele  varchar(15),

    Primary key (mana_num)

    );

     

    3.6.2视图的定义:

    所有的信息汇总在一起:

    Create view allmass

    (stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dor_num,water,elect,repair,living,live_status,Date,people_total,size,dor_status,mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu)

    as select student.stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dormitory.dor_num,water,elect,repair,living,live_statu,Date,people_total,size,dor_statu,manager.mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu

    from student,lives,dormitory,tool,manager

    where student.stu_num=lives.stu_num

    and lives.dor_num=dormitory.dor_num

    and dormitory.dor_num=tool.dor_num

    and tool.mana_num= manager.mana_num ;

    学生信息视图:

    Select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,mana_name

    from allmass

    where stu_statu=1;

     

    管理员信息:

    create view manager_view

    as

    select manager.mana_num,mana_name,mana_age,mana_gender,mana_tele

    from manager

    where  mana_statu=1;

    宿舍信息:

    create view dormitory_view

    as

    select tool.dor_num,build_num,zone,people_total,size

    from tool,dormitory

    where tool.dor_num=dormitory.dor_num and dor_statu=1;

    物品信息:

    create view tool_view

    as

    select dor_num,mana_num, desk,chair,bed,light

    from tool

    where tool_statu=1;

    账单信息:

    create view lives_view

    as

    select list_num,stu_name,dor_num,water,elect,date,repair,living

    from lives,student

    where live_statu=1 and lives.stu_num=student.stu_num;

     

    3.6.3索引:

    每一张表通过主键的列产生索引,从而加快查询时的进度。

    拿学生信息表进行举例:

    Create index stu_index on student(stu_num);

    当然可以通过数据库自动生成。

     

    3.6.4触发器的定义:

    在学生表上建立触发器,记录被修改的信息。在原表中通过一个状态属性标示是否被删除,因此数据并不会真正被删除,只需要记录被修改的信息。

    create trigger on_pre_stu

    on student

    for update

    as

    begin

    declare @stu_num varchar(15)

    declare @pre_stu_name varchar(10)

    declare @pre_stu_gender varchar(2)

    declare @pre_stu_age int

    declare @pre_stu_tele varchar(15)

    declare @pre_stu_spe  varchar(20)

    select  @stu_num = stu_num from deleted

    select @pre_stu_name =stu_name from deleted

    select @pre_stu_gender =stu_gender from deleted

    select @pre_stu_age = stu_age from deleted

    select @pre_stu_tele =stu_tele from deleted

    select @pre_stu_spe = stu_spe from deleted

    insert into pre_stu(stu_num,pre_stu_name,pre_stu_gender,pre_stu_age,pre_stu_tele,pre_stu_spe )

    values(@stu_num,@pre_stu_name,@pre_stu_gender,@pre_stu_age,@pre_stu_tele,@pre_stu_spe)

    end

     

    在管理员上建立触发器,记录被修改的信息。在原表中通过一个状态属性标示是否被删除,因此数据并不会真正被删除,只需要记录被修改的信息。

     

    create trigger on_pre_mana

    on manager

    for update

    as

    begin

    declare @mana_num varchar(15)

    declare @pre_mana_name varchar(10)

    declare @pre_mana_gender varchar(2)

    declare @pre_mana_age int

    declare @pre_mana_tele varchar(15)

    select  @mana_num = mana_num from deleted

    select @pre_mana_name =mana_name from deleted

    select @pre_mana_gender =mana_gender from deleted

    select @pre_mana_age = mana_age from deleted

    select @pre_mana_tele =mana_tele from deleted

    insert

    into pre_mana(mana_num,pre_mana_name,pre_mana_gender,pre_mana_age,pre_mana_tele)values(@mana_num,@pre_mana_name,@pre_mana_gender,@pre_mana_age,@pre_mana_tele)

        end

    3.6.5用户的定义:

    create user dba for login dba with default_schema=dbo

    exec sp_addrolemember 'db_owner' ,'dba'

     

    3.6.6 对数据的管理:

    对数据的管理主要是由增删改查组成,以学生信息的管理为例,

    增加:

    insert into

    student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu)

    values('201677H0555','刘飞达','男',19,14646646465,'软工',1);

     

    删除:值得注意的是我删除信息用的是更新信息语句,只需要更改状态值即可标示数据是否被删除,数据不会真的被删除,做好了别分工作。

    update student set stu_status=0 where stu_num=’201677H0522’;

    修改:

    update student set stu_name='刘豪' where stu_num='201677H0522';

     

    查询:值得注意的是查询的条件是数据行的状态值是1,也就是被标示未被删除。

    select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe from student where stu_statu=1;

     

    分别查询每一个宿舍的总费用,并且按照宿舍号进行排序(使用的是分组求和的思想):

    select dor_num , sum(w   ater+elect + repair +living) from lives group by dor_num order by dor_num ;

    在sql代码执行的过程中,会自动生成存储过程,将有价值的存储过程进行储存。

     

    3.7系统调试和测试

     

    在对数据库的备份功能进行测试的过程中,我在原表中对数据进行修改,从而触动触发器将被删除的信息储存在备份表中。执行语句update student set stu_name='刘豪' where stu_num='201677H0522'; 然后查看备份表中的信息,验证之后正确。

     

    把数据库总所有的信息联合起来,形成一张非常大的表,生成一个视图,测试之后,可以成功生成,满足要求。

    在安全性方面,我创建了用户并且进行了授权:

    create login dba with password='123456', default_database=stu_dor_manage;

    create user dba for login dba with default_schema=dbo

    exec sp_addrolemember 'db_owner' ,'dba'

    执行以后,成功生成了一个用户:测试成功!

    4.系统评价

    4.1我的系统特色:
    A、数据结构化 ,数据之间具有联系,面向整个系统。
    B、数据的共享性高,冗余度低,易扩充 。
    C、数据独立性高 。
    D、数据由DBMS统一管理和控制。

    4.2 系统不足及改进

    在对数据库进行设计的过程中,结构比较简单,不能够应对是否能复杂的情况,只能对学生住宿的简单信息进行操作。另外,在安全性方面做得也不够完善,主要原因在于设计的重点是功能的正常执行,而不是在每一个细节做到完美。另外,执行虚度方面没有做出专门的优化。因此,这个数据库系统需要我在以后相信的去完成每一个细节。

    5.设计心得

    在设计数据库的过程中我遇到过非常多的问题:

    首先,在设计阶段有非常多的数据项,当时觉得不好分类和处理,而且有很多的数据项和许多实体都有关系。最后通过查看课本例题,问同学等方式将各个数据项进行归类,对于和多个实体之间都有关系的数据项可以建立一个关系表,从而完成归类。

    接着,在添加数据的过程中,我忽略掉了数据的参照完整性,导致许多数据不能够正常加入。后来经过同学的提示,我将数据进行了统一分析,保持所有的数据一致,最后数据可以正常输入。

    最后,每个表中的数据更改完成之后,更改后的数据会丢失找不到了。对于这个问题就解决办法为加入触发器,记录表中信息的修改前的值,成功解决问题。

    收获:对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据的不一致。为了解决这些问题。在数据库设计之初就要考虑这些问题。减少后期系统维护量。

     

     

     

     

    展开全文
  • 学生宿舍信息管理系统包括:创建文本文件 读取文本文件 按照姓名 房号 学号 等进行查询 增加 删除 修改等记录。
  • 《C语言程序设计课程设计--学生宿舍信息管理系统》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计--学生宿舍信息管理系统(27页珍藏版)》请在人人文库网上搜索。1、课 程 设 计课程名称C语言程序设计课程...

    《C语言程序设计课程设计--学生宿舍信息管理系统》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计--学生宿舍信息管理系统(27页珍藏版)》请在人人文库网上搜索。

    1、课 程 设 计课程名称C语言程序设计课程设计题目名称宿舍学生信息管理系统二一五年6月20日计算机科学与技术系课程设计任务书课 程C语言程序设计班级指导教师题 目学生宿舍信息管理系统完成时间2015年6月1日至2015年6月20日主要内容要求: 1 能实现基本数据的输入、输出、查询、统计等操作;2 用文件的方式等操作。3需求由设计者自己分析。设计报告要求1封面:(格式附后)2课程设计任务书3课程设计报告: 系统总体方案 设计思路和主要步骤 各功能模块和流程图 设计代码 心得体会和参考资料说明:学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字迹工整(也可用以打印),文字不少于5000 。

    2、字,并装订成册。版面要求1 题目用黑体三号,段后距18磅(或1行),居中对齐;2 标题用黑体四号,段前、段后距6磅(或0.3行);3 正文用小四号宋体,行距为1.25倍行距;4 标题按“一”、“”、“1”、“”顺序编号。上机时间安排星期周次一二三四五六日第2周-第5周2014级智慧城市班,3-4节2014级智慧城市班,1-2节指导时间地点上机时间,多媒体技术实验室(A503)学生宿舍信息管理系统一、 系统总体方案:(一)总体功能设计学生宿舍管理系统存放了每个学生的学号、姓名、性别、年龄、寝室号、电话号码每个人的信息定义在一个结构体变量中。其结构如下:系统通过录入程序、浏览程序、查询程序、删除程。

    3、序、添加程序、修改程序及退出实现学生信息管理系统的录入、浏览、查询、删除、添加、修改各个功能的调用通过主函数中的switch语句来实现。switch(n)case 1:printf(1.录入学生信息n);printf(n);input();break;case 2:printf(2.浏览学生信息n);printf(n);display();break;case 3:printf(3.按学号查询n);printf(n);search();break;case 4:printf(4.删除学生信息n);printf(n);del();break;case 5:printf(5.添加学生信息n);pr。

    4、intf(n);add();break;case 6:printf(6.修改学生信息n);printf(n);modify();break;case 7:exit(0);break;default :break;(二)各模块功能设计:(1)录入模块通过设计一个模块,来实现学生信息的录入。(2)浏览模块通过设计一个模块,实现学生信息的显示,以便以便用户更好的浏览学生信息。(3)查询模块通过设计一个模块,这个模块可以按学生的学号、姓名来查询学生所有的信息,并显示学生的所有信息,以便用户阅读。(4)删除模块通过设计一个模块,通过程序实现找到学生信息,在通过程序将学生的信息文件中删除。(5)添加模块通。

    5、过设计一个模块,当要添加新的学生的信息的时候,来实现新学生的信息录入。(6)修改模块通过设计一个模块,当某个学生的信息要发生改变时,通过程序找到要修改的的学生信息,根据需要修改的内容去修改学生信息,在通过浏览模块来显示修改后的学生信息。(三)设计思路和主要步骤:(1).设计思路:学生宿舍管理系统是对学生住宿信息的录入、浏览、查询、删除、添加、修改等,方便宿管员对学生的管理;首先设计进入系统的界面,以方便用户与计算机之间的交互,然后通过编语句实现系统各个模块的功能,实现系统的功能。(2).主要步骤:(一)了解学生宿舍信息的内容(二)通过课本例题了解主要步骤(三)查阅课本所需要的编程语句(四)通过。

    6、用c+编语句,用c+语句的格式及要求完成系统的设计及实现(五)最后调试程序,查看运行结果,写报告。二、 系统总体模块设计图主函数录入模块浏览模块查询模块删除模块添加模块修改模块退出退出三、 系统总流程图及各模块流程图(一)总流程图:开始进入系统输入数字nn=?n=1 录入模块n=2 浏览模块n=3 查询模块n=4 删除模块n=5 添加模块n=6 修改模块n=7 退出显示结果输出退出结束(二)各模块流程图(1)录入信息流程图:输入姓名输入性别输入年龄输入寝室号输入电话是否继续录入结束是否(2)浏览信息流程图:(3)查询信息流程图:进入输入选项按学号查找按电话号码查找查找学生Flag=?输出学生信。

    7、息查无此人!是否继续查询退出Num=2Num=3flag=1flag=0是否(4)删除信息流程图:查无此人Flag=0开 始输入要查找的信息查找删除信息Flag=?删除学生信息输出要删除信息是否继续删除结 束否是(5)添加信息流程图:(6)修改信息流程图:(7)退出流程图四、 程序代码#include #include #include #include #define N 100struct studentint num; /*学号*/char name10; /*姓名*/char sex; /*性别*/ int age; /*年龄*/int qsh; /*寝室号*/char tel12; 。

    8、/*电话号码*/stu100; /*定义一个结构体*/void menu(); /*菜单函数*/void input(); /*录入函数*/void save(int); /*保存函数*/void display(); /*浏览函数*/void del(); /*删除函数*/void add(); /*增加函数*/void search(); /*查询函数*/void search_num();void search_xueli();void search_tel();void modify(); /*修改函数*/void menu() /*菜单函数*/printf(n);printf(*宿舍。

    9、学生信息管理系统*nnn);printf(1.录入学生信息2.浏览学生信息nnn );printf(3.查询学生信息4.删除学生信息nnn);printf(5.添加学生信息6.修改学生信息nnn );printf(7.退出nn ); printf(*欢迎下次进入!*nnn);printf(n);printf(n);void main()int n,flag;char a;menu(); /*调用菜单函数*/doprintf(请选择你需要操作的步骤(1-7):n);scanf(%d,&n);if(n=1&n=1&t8|c1) printf(n选择错误,请重新选择!n); flag=0;if(fl。

    10、ag=1)printf(n对不起,查无此人!n); do switch(c) /*因为当找到第i个学生时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/case 1:printf(学号改为: scanf(%d,&num);stui-1.num=num;break; case 2:printf(姓名改为: );scanf(%s,name);strcpy(stui-1.name,name); break; case 3:printf(性别改为: );getchar();scanf(%c,&sex);stui-1.sex=sex; break; case 4:printf(。

    11、年龄改为: );scanf(%d,&age);stui-1.age=age; break; case 5:printf(寝室号改为: );scanf(%d,&qsh);break; case 6:printf(电话改为: );scanf(%s,tel);strcpy(stui-1.tel,tel); break; printf(n);printf(n是否确定所修改的信息?n 是 请按1 ; 不,重新修改 请按2: n); scanf(%d,&b); while(b=2);printf(n浏览修改后的所有学生信息:n);printf(n);save(m);display();printf(n继续。

    12、修改请按1,不再修改请按0n);scanf(%d,&t);switch(t)case 1:modify();break;case 0:break;default :break;(五)心得体会及考资料c语言要想学好它,必须要通过不断的上机操作才能更好地学习它,通过实践,我们也发现我们的好多不足之处,首先是我们在指法上还不行,经常按错字母,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了我们的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,我们在这几个方面的认识有所提高。C语言中程序编译过程中有错误,往往有很多错误都不知道错在其处,处理问题很棘手,在学习并运行c语言过程中,基本了解错误的含义。通过实践的学习,我们认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我们会更加注视实践操作,更好地学好计算机。参考资料:高等学校计算机教材c语言程序设计高等数学计算机教材c语言程序设计实验指导书与课程设计。

    展开全文
  • 软件项目管理期末大作业-学生宿舍信息管理系统-软件项目管理文档,带甘特图
  • 软件项目管理期末大作业——学生宿舍信息管理系统 压缩包里面包含:直接可用的PPT、甘特图、里程碑图,直接可用。 今天刚讲完,在班级所有小组展示 里面,被老师认为是最好的。
  • sql高校学生宿舍信息管理系统 数据库 通过测试了 大家看看吧~
  • 论文将设计一个高校学生宿舍信息管理系统的应用解决方案并予以实现。高校学生宿舍信息管理系统是一个安全和高效的专用系统。这个系统使用了很多技术,比如VB,ADO.NET 服务等。专用系统使用的数据库是SQL Server 2000...
  • 学生宿舍信息管理系统详尽的开发代码,包含功能有了宿舍信息管理、学生入住手续办理、卫生检查情况、水电收费、房屋报修和外来人员登记溜达功能模块,里面几乎涵盖我们学校宿舍管理的所有功能。
  • 数 据 库 课 程 设 计 题 班 目 级 宿舍信息管理系统 09 级计科 3 班 指导教师 李必云 2012 年 10 月 吉首大学信息科学与工程学院 项目分工 摘要 宿舍系统对于一个学校来说是必不可少的组成部分目前好多学校还停留在...
  • 功能描述该学生宿舍信息管理系统主要实现的功能有:创建学生宿舍信息,显示学生宿舍信息,查询学生宿舍信息,修改学生宿舍信息,删除学生宿舍信息,保存学生宿舍信息,读取学生宿舍信息。其系统功能模块图如下: ...

    功能描述

    该学生宿舍信息管理系统主要实现的功能有:创建学生宿舍信息,显示学生宿舍信息,查询学生宿舍信息,修改学生宿舍信息,删除学生宿舍信息,保存学生宿舍信息,读取学生宿舍信息。其系统功能模块图如下:

    07903c5d068cf8903180d03f0beca08c.png

    完整代码如下:

    #include#include#include#include#include#define MAX 1000

    int k=0;

    //结构体类型

    typedef struct

    {

    char name[20]; //姓名

    char sex[5]; //性别

    char classs[20]; //班级

    int number; //学号

    int age; //年龄

    int dorm; //宿舍号

    int year; //年份

    int month; //月份

    }students;

    //创建学生宿舍信息

    int establish(students stu[])

    { int i,x;

    for(i=0;i<1000;i++)

    {

    system("cls");

    printf("\n\n 录入学生信息 (最多%d个)\n",MAX);

    printf(" ----------------------------\n");

    printf("\n 第%d个学生",k+1);

    printf("\n 请输入学生的学号:");

    scanf("%d",&stu[k].number);

    printf("\n 请输入学生的姓名:");

    scanf("%s",stu[k].name);

    printf("\n 请输入学生的性别:");

    scanf("%s",stu[k].sex);

    printf("\n 请输入学生的年龄:");

    scanf("%d",&stu[k].age);

    printf("\n 请输入学生的班级:");

    scanf("%s",stu[k].classs);

    printf("\n 请输入学生入住时间(如:2017 9):");

    while((scanf("%d %d",&stu[k].year,&stu[k].month))!=EOF)

    {

    if(stu[k].year<1000||stu[k].year>9999||stu[k].month>12||stu[k].month<1)//限定输入范围

    {

    printf("对不起,输入错误,请重新输入:");

    }

    else

    break;

    }

    printf("\n 请输入学生的宿舍号:");

    scanf("%d",&stu[k++].dorm);

    printf("\n 请按 1 键返回主菜单或按 0 键继续创建:");

    scanf("%d",&x);

    if(x!=0) break;

    }

    return k;

    }

    //显示学生宿舍信息

    void display(students stu[])

    {

    int i;

    for(i=0;i7)

    {

    printf("对不起,输入错误,请重新输入:");

    }

    else

    {

    switch(choose)

    {

    case 1:

    {

    printf("\n 请输入你改的新学号:");

    scanf("%d",&stu[i].number);

    break;

    }

    case 2:

    {

    printf("\n 请输入你改的新姓名:");

    scanf("%s",stu[i].name);

    break;

    }

    case 3:

    {

    printf("\n 请输入你改的新性别:");

    scanf("%s",stu[i].sex);

    break;

    }

    case 4:

    {

    printf("\n 请输入你改的新年龄:");

    scanf("%d",&stu[i].age);

    break;

    }

    case 5:

    {

    printf("\n 请输入你改的新班级:");

    scanf("%s",stu[i].classs);

    break;

    }

    case 6:

    {

    printf("\n 请输入你改的新宿舍:");

    scanf("%d",&stu[i].dorm);

    break;

    }

    case 7:

    {

    printf("\n 请输入你改的新入住时间:");

    scanf("%d %d",&stu[i].year,&stu[i].month);

    break;

    }

    }

    printf("修改成功!");

    Sleep(500);

    printf("\n\n学号:%d 姓名:%s 性别:%s 年龄:%d 班级:%s 宿舍号: %d 入住时间:%d/%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age,stu[i].classs,stu[i].dorm,stu[i].year,stu[i].month);

    m=1;

    break;

    }

    }

    }

    }

    if(m==0)

    {

    printf("对不起,此学生信息不存在!\n");

    }

    printf("按任意键返回主菜单!");

    getch();

    return ;

    }

    //删除学生信息

    void deletee(students stu[])

    {

    char name1[20];

    int i,j,m=0;

    printf("请输入学生姓名:");

    scanf("%s",name1);

    printf("\n");

    printf("正在查找是否存在此学生信息.....\n");

    Sleep(1000);

    for(i=0;i7)

    {

    printf("对不起,输入错误,请重新输入:");

    }

    else

    {

    switch(choose)

    {

    case 1: k=establish(stu); break;//创建学生宿舍信息

    case 2: display( stu) ; break;//显示学生宿舍信息

    case 3: query(stu); break;//查询学生宿舍信息

    case 4: modify(stu); break;//修改学生宿舍信息

    case 5: deletee(stu); break;//删除学生宿舍信息

    case 6: preservation(stu); break;//保存学生宿舍信息

    case 7: read(stu);break;//读取学生宿舍信息

    case 0: break;

    }

    break;

    }

    }

    }

    }

    int main()

    {

    title();

    start();

    return 0;

    }

    展开全文
  • 数据结构课程设计之学生宿舍信息管理系统

    千次阅读 多人点赞 2020-06-21 10:14:38
    数据结构课程设计之学生宿舍信息管理系统,宿舍对于大学生在校生活来说相当于家的存在,而宿舍管理又是学校后勤管理的重要环节,如何直观的了解宿舍的入住情况和每位同学的住宿位置是提高工作效率的重要课题,根据...

    一、问题陈述

    宿舍对于大学生在校生活来说相当于家的存在,而宿舍管理又是学校后勤管理的重要环节,如何直观的了解宿舍的入住情况和每位同学的住宿位置是提高工作效率的重要课题,根据我们所学的C语言和数据结构课程中有关链表的内容,为宿舍管理人员编写宿舍管理查询软件,就可以轻松满足实现上述需求。
    任务:

    1. 为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:
      • 采用交互工作方式
      • 可按关键字(姓名、学号、房号)进行排序
    2. 查询菜单: (用二分查找实现以下操作)
      • 按姓名查询
      • 按学号查询
      • 按房号查询
    3. 打印任一查询结果(可以连续操作)

    二、概要设计

    2.1 概要简述

    根据系统要求,即本系统具有信息的录入,显示,排序显示、查找,插入、删除、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。
    程序总体分10个项目:输入记录、显示记录、按姓名排序并显示、按房间号排序并显示 、按学号排序并显示 、按姓名查找并显示 、按房间号查找并显示 、按学号查找并显示、插入一条记录按学号排序并显示以及结束程序。

    2.2 线性表存储结构表示

    typedef struct {
    	char name[20];
    	int num;            //学号和房号都为整型
    	int room;
    } stu;
    
    typedef struct {
    	int length; //当前长度
    	stu *elem;  //存储空间基址
    	int listsize;  //当前分配的存储容量
    } linklist;
    

    2.3 详细设计

    2.3.1 系统流程图

    在这里插入图片描述

    2.3.2 三种排序方法及二分查找法
    2.3.2.1 冒泡排序(按姓名排序)
    //按姓名排序(采用冒泡排序)
    void sort1(linklist &L) { 
    	int i, j;
    	stu temp;
    	for (i = 0; i<L.length - 1; i++)
    		for (j = 0; j<L.length-1-i; j++)
    			if (strcmp(L.elem[j].name, L.elem[j+1].name)>0) {
    				temp = L.elem[j];
    				L.elem[j] = L.elem[j+1];
    				L.elem[j+1] = temp;
    			}
    }
    
    2.3.2.2 折半插入排序(按学号排序)
    //按学号排序(采用折半插入排序)
    void sort2(linklist &L) { 
    	int i, j, mid, low, high;
    	stu temp;
    	for (i = 1; i < L.length; i++) {
    		if(L.elem[i].num<L.elem[i-1].num) {
    			temp = L.elem[i];
    			low = 0;
    			high = i-1;
    			while (low <= high) {
    				mid = (low + high) / 2;
    				if (temp.num < L.elem[mid].num)
    					high = mid - 1;
    				else
    					low = mid + 1;
    			}
    			for (j = i - 1; j >= high+1; j--)
    				L.elem[j+1]=L.elem[j];
    			L.elem[high+1]=temp;
    		}
    	}
    }
    
    2.3.2.3 简单选择排序(按房号排序)
    //按房号排序(采用简单选择排序)
    void sort3(linklist &L) { 
    	int i,j,k;
    	stu temp;
    	for(i=0; i<L.length-1; i++) {
    		k=i;
    		for(j=i+1; j<L.length; j++)
    			if(L.elem[j].room<L.elem[k].room)
    				k=j;
    		if(k!=i){
    			temp = L.elem[i];
    			L.elem[i] = L.elem[k];
    			L.elem[k] = temp;
    		}
    	}
    }
    
    2.3.2.4 二分查找法(以按姓名查找为例)
    //按姓名从小到大查找(采用二分查找)
    void search1(linklist &L) { 
    	if (L.length == 0) {
    		printf("已无学生记录!\n");
    		Ret();
    		Menu();
    	} else {
    		int low = 0, high = L.length, mid, flag = 0;
    		printf("\n");
    		printf("按姓名查找-->请输入要查找的姓名:");
    		char a[15], ch;
    		scanf("%s", a);
    		while (low <= high) {
    			mid = (low + high) / 2;
    			if (strcmp(a, L.elem[mid].name) == 0) {
    				flag = 1;
    				break;
    			} else if (strcmp(a, L.elem[mid].name)>0)
    				low = mid + 1;
    			else
    				high = mid - 1;
    		}
    		if (flag == 1) {
    			printf("查找成功-->该学生信息为:\n");
    			printf("姓名       学号    房号\n");
    			printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
    			if (Select())
    				search1(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		} else {
    			printf("该学生不存在!");
    			if (Select())    search1(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		}
    	}
    }
    

    三、测试与运行

    3.1 系统界面

    在这里插入图片描述

    3.2 新建宿舍名单

    在这里插入图片描述

    3.3 排序(以姓名排序为例)

    在这里插入图片描述

    3.4 查询(以学号查询为例)

    在这里插入图片描述

    3.5 插入学生信息

    在这里插入图片描述 在这里插入图片描述

    3.6 删除学生信息

    在这里插入图片描述 在这里插入图片描述

    四、代码实现

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<windows.h>
    #define N 40 //线性表存储空间的初始分配量
    #define increase 10 //线性表存储空间的分配量增量
    int choice;  //定义全局变量
    typedef struct {
    	char name[20];
    	int num;            //学号和房号都为整型
    	int room;
    } stu;
    stu stud;
    typedef struct {
    	int length; //当前长度
    	stu *elem;  //存储空间基址
    	int listsize;  //当前分配的存储容量
    } linklist;
    
    //线性表初始化
    void Init(linklist &L) { 
    	L.length = 0;
    	L.elem = (stu *)malloc(N * sizeof(stu));
    	L.listsize = N;
    }
    
    //操作菜单
    void Menu() { 
    	printf( "**************************************\n" );
    	printf( "***       欢迎进入宿舍管理系统     ***\n" );
    	printf( "**************************************\n" );
    	printf( "*        1.  新建宿舍名单            *\n" );
    	printf( "*        2.  排序宿舍信息            *\n" );
    	printf( "*        3.  查询宿舍信息            *\n" );
    	printf( "*        4.  插入宿舍信息            *\n" );
    	printf( "*        5.  删除宿舍信息            *\n" );
    	printf( "*        0.  退出系统                *\n" );
    	printf( "**************************************\n" );
    	printf("请输入菜单(0-5):");
    	scanf("%d", &choice);
    	if (choice<0 || choice>5) {
    		system("cls");
    		printf("输入数字不对,请重新!\n");
    		printf("\n");
    		Menu();
    	}
    
    }
    
    //打印学生信息
    void Display(linklist &L) { 
    	int i;
    	printf("姓名       学号    房号\n");
    	for (i = 0; i<L.length; i++)
    		printf("%-10s %-2d %5d\n", L.elem[i].name, L.elem[i].num, L.elem[i].room);
    }
    
    //返回主界面
    void Ret() {    
    	char c;
    	fflush(stdin);
    	printf("\n");
    	printf("请按任意键进入主界面:");
    	scanf("%c", &c);
    	system("cls");
    }
    
    //创建学生信息表
    void Create(linklist &L) { 
    	if (L.length >= L.listsize) { //判断学生的人数是否超过初值,如果超过,则重新分配
    		stu *newbase;
    		newbase = (stu*)realloc(L.elem, (N + increase) * sizeof(stu));
    		L.elem = newbase;
    		L.listsize += increase;
    	}
    	int i = 2;
    	char ch;
    	printf("********开始创建学生信息**********\n");
    	printf("\n");
    	printf("请输入第1个学生的信息\n");
    	printf("请输入姓名:");
    	fflush(stdin);      // 清空输入缓冲区,得到正确的输入数据
    	gets(stud.name);    //输入一行字符串(姓名)
    	printf("请输入学号:");
    	scanf("%d", &stud.num);
    	printf("请输入房号:");
    	scanf("%d", &stud.room);
    	ch = getchar();
    	strcpy(L.elem[L.length].name, stud.name);
    	L.elem[L.length].num = stud.num;
    	L.elem[L.length].room = stud.room;
    	L.length++;
    	printf("\n");
    	printf("是否继续输入?<y/n>:");
    	scanf("%c", &ch);
    	printf("\n");
    	while (ch == 'y') {
    		printf("请输入第%d个学生的信息\n", i);
    		printf("请输入姓名:");
    		fflush(stdin);      // 清空输入缓冲区,得到正确的输入数据
    		gets(stud.name);    //输入一行字符串(姓名)
    		printf("请输入学号:");
    		scanf("%d", &stud.num);
    		printf("请输入房号:");
    		scanf("%d", &stud.room);
    		strcpy(L.elem[L.length].name, stud.name);
    		L.elem[L.length].num = stud.num;
    		L.elem[L.length].room = stud.room;
    		i++;
    		L.length=i-1;
    		ch = getchar();
    		printf("\n");
    		printf("是否继续输入?<y/n>:");
    		scanf("%c", &ch);
    		printf("\n");
    	}
    	if (ch == 'n')
    		system("cls");
    }
    
    //按姓名排序(采用冒泡排序)
    void sort1(linklist &L) { 
    	int i, j;
    	stu temp;
    	for (i = 0; i<L.length - 1; i++)
    		for (j = 0; j<L.length-1-i; j++)
    			if (strcmp(L.elem[j].name, L.elem[j+1].name)>0) {
    				temp = L.elem[j];
    				L.elem[j] = L.elem[j+1];
    				L.elem[j+1] = temp;
    			}
    }
    
    //按学号排序(采用折半插入排序)
    void sort2(linklist &L) { 
    	int i, j, mid, low, high;
    	stu temp;
    	for (i = 1; i < L.length; i++) {
    		if(L.elem[i].num<L.elem[i-1].num) {
    			temp = L.elem[i];
    			low = 0;
    			high = i-1;
    			while (low <= high) {
    				mid = (low + high) / 2;
    				if (temp.num < L.elem[mid].num)
    					high = mid - 1;
    				else
    					low = mid + 1;
    			}
    			for (j = i - 1; j >= high+1; j--)
    				L.elem[j+1]=L.elem[j];
    			L.elem[high+1]=temp;
    		}
    	}
    }
    
    //按房号排序(采用简单选择排序)
    void sort3(linklist &L) { 
    	int i,j,k;
    	stu temp;
    	for(i=0; i<L.length-1; i++) {
    		k=i;
    		for(j=i+1; j<L.length; j++)
    			if(L.elem[j].room<L.elem[k].room)
    				k=j;
    		if(k!=i){
    			temp = L.elem[i];
    			L.elem[i] = L.elem[k];
    			L.elem[k] = temp;
    		}
    	}
    }
    //排序函数
    void Sort(linklist &L) { 
    	int c;
    	printf("请输入排序的方式(1:按名字排序,2:按学号排序,3:按房号排序):");
    	scanf("%d", &c);
    	switch (c) {
    		case 1:
    			sort1(L);
    			if (L.length == 0) {
    				printf("已无学生记录!\n");
    				Ret();
    				Menu();
    			} else {
    				printf("按姓名排序:\n");
    				Display(L);
    				Ret();  //调用返回主界面
    				Menu();
    			}
    			break;
    		case 2:
    			sort2(L);
    			if (L.length == 0) {
    				printf("已无学生记录!\n");
    				Ret();
    				Menu();
    			} else {
    				printf("按学号排序:\n");
    				Display(L);
    				Ret();  //调用返回主界面
    				Menu();
    			}
    			break;
    		case 3:
    			sort3(L);
    			if (L.length == 0) {
    				printf("已无学生记录!\n");
    				Ret();
    				Menu();
    			} else {
    				printf("按房号排序:\n");
    				Display(L);
    				Ret();  //调用返回主界面
    				Menu();
    			}
    			break;
    		default:
    			break;
    	}
    }
    
    //选择是否继续查找
    int Select() { 
    	char ch;
    	scanf("%c", &ch);
    	printf("是否继续查找?<y/n>:");
    	fflush(stdin);
    	scanf("%c", &ch);
    	if (ch == 'y') {
    		system("cls");
    		return 1;
    	} else
    		return 0;
    }
    
    //按姓名从小到大查找(采用二分查找)
    void search1(linklist &L) { 
    	if (L.length == 0) {
    		printf("已无学生记录!\n");
    		Ret();
    		Menu();
    	} else {
    		int low = 0, high = L.length, mid, flag = 0;
    		printf("\n");
    		printf("按姓名查找-->请输入要查找的姓名:");
    		char a[15], ch;
    		scanf("%s", a);
    		while (low <= high) {
    			mid = (low + high) / 2;
    			if (strcmp(a, L.elem[mid].name) == 0) {
    				flag = 1;
    				break;
    			} else if (strcmp(a, L.elem[mid].name)>0)
    				low = mid + 1;
    			else
    				high = mid - 1;
    		}
    		if (flag == 1) {
    			printf("查找成功-->该学生信息为:\n");
    			printf("姓名       学号    房号\n");
    			printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
    			if (Select())
    				search1(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		} else {
    			printf("该学生不存在!");
    			if (Select())    search1(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		}
    	}
    }
    
    //按学号从小到大查找(采用二分查找)
    void search2(linklist &L) { 
    	if (L.length == 0) {
    		printf("\n");
    		printf("已无学生记录!\n");
    		Ret();
    		Menu();
    	} else {
    		int low = 0, high = L.length, mid, flag = 0;
    		int n;
    		char ch;
    		printf("\n");
    		printf("按学号查找-->请输入要查找的学号:");
    		scanf("%d", &n);
    		while (low <= high) {
    			mid = (low + high) / 2;
    			if (n == L.elem[mid].num) {
    				flag = 1;
    				break;
    			} else if (n>L.elem[mid].num)
    				low = mid + 1;
    			else
    				high = mid - 1;
    		}
    		if (flag == 1) {
    			printf("查找成功----->该学生信息为:\n");
    			printf("姓名       学号    房号\n");
    			printf("%-1s0 %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
    			if (Select())
    				search2(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		} else {
    			printf("该学生不存在!");
    			if (Select())
    				search2(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		}
    	}
    }
    
    //按房号从小到大查找(采用二分查找)
    void search3(linklist &L) { 
    	if (L.length == 0) { //此函数功能为:返回主界面
    		printf("\n");
    		printf("已无学生记录!\n");
    		Ret();
    		Menu();
    	} else {
    		int low = 0, high = L.length, mid, flag = 0;//flag作为标志符,为1则表示查找成功,否则没有所要查找的学生
    		int m;
    		char ch;
    		printf("\n");
    		printf("按房号查找-->请输入要查找的房号:");
    		scanf("%d", &m);
    		while (low <= high) {
    			mid = (low + high) / 2;
    			if (m == L.elem[mid].room) {
    				flag = 1;
    				break;
    			} else if (m>L.elem[mid].room)
    				low = mid + 1;
    			else
    				high = mid - 1;
    		}
    		if (flag == 1) {
    			printf("查找成功-->该学生信息为:\n");
    			printf("姓名       学号    房号\n");
    			printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
    			if (Select())    //调用判断函数1
    				search3(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		} else {
    			printf("该学生不存在!");
    			if (Select())  //调用判断函数2
    				search3(L);
    			else {
    				system("cls");
    				Menu();
    			}
    		}
    	}
    }
    
    //查找函数
    void Search(linklist &L) { 
    	int c;
    	printf("请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):");
    	scanf("%d", &c);
    	switch (c) {
    		case 1:
    			sort1(L);
    			search1(L);
    			break;//先进行二分查找排序
    		case 2:
    			sort2(L);
    			search2(L);
    			break;
    		case 3:
    			sort3(L);
    			search3(L);
    			break;
    		default:
    			break;
    	}
    }
    
    //按学号从小到大插入该学生
    void Insert(linklist &L) { 
    	int i, j, k;
    	char ch;
    	printf("\n");
    	printf("插入的学生信息为:\n");
    	printf("姓名:");
    	fflush(stdin);// 清空输入缓冲区,得到正确的输入数据
    	gets(stud.name);
    	printf("学号:");
    	scanf("%d", &stud.num);
    	printf("房号:");
    	scanf("%d", &stud.room);
    	if (L.length == 0) {
    		strcpy(L.elem[L.length].name, stud.name);
    		L.elem[L.length].num = stud.num;
    		L.elem[L.length].room = stud.room;
    	}
    	for (i = 0; i<L.length; i++) {
    		if (stud.num<L.elem[i].num) {
    			k = i;
    			for (j = L.length; j>k; j--)
    				L.elem[j] = L.elem[j - 1];
    			strcpy(L.elem[k].name, stud.name);
    			L.elem[k].num = stud.num;
    			L.elem[k].room = stud.room;
    			break;
    		} else {
    			strcpy(L.elem[L.length].name, stud.name);
    			L.elem[L.length].num = stud.num;
    			L.elem[L.length].room = stud.room;
    		}
    	}
    	L.length++;
    	fflush(stdin);
    	printf("\n");
    	printf("是否继续插入?<y/n>:");
    	scanf("%c", &ch);
    	if (ch == 'y') Insert(L);
    	else system("cls");
    }
    
    //按学号删除该学生
    void Delete(linklist &L) { 
    	int i, j, k = -1;
    	char ch;
    	printf("\n");
    	printf("\n");
    	printf("请输入要删除学生的学号:");
    	scanf("%d", &stud.num);
    	for (i = 0; i<L.length; i++) {
    		if (stud.num == L.elem[i].num) {
    			printf("该学生的信息为:\n");
    			printf("姓名:%s \n学号:%d \n房号:%d\n", L.elem[i].name, L.elem[i].num, L.elem[i].room);
    			k = i;
    			for (j = k; j<L.length - 1; j++)
    				L.elem[j] = L.elem[j + 1];
    			printf("已成功删除\n");
    
    			break;
    		}
    	}
    	if (i >= L.length) printf("该学生不存在\n");
    	if (k >= 0)L.length--;
    	fflush(stdin);
    	printf("\n");
    	printf("是否继续删除操作?<y/n>:");
    	scanf("%c", &ch);
    	system("cls");
    	if (ch == 'y') Delete(L);
    	else system("cls");
    }
    
    //主函数
    int main() {  
    	linklist L;    //定义线性表 L
    	Init(L);
    	Menu();        //调用主菜单函数
    	while (choice != 0) {
    		system("cls");
    		switch (choice) {
    			case 1:
    				Create(L);    //调用线性表创建函数
    				Menu();
    				break;
    			case 2:
    				Sort(L);
    				break;//调用排序函数
    			case 3:
    				Search(L);
    				break;//调用查找函数进行(二分)查找
    			case 4:
    				sort2(L);      //调用学号排序函数
    				Insert(L);        //按学号序列插入
    				system("cls");
    				printf("插入后的学生信息:\n");
    				Display(L);
    				Ret();
    				Menu();
    				break;
    			case 5:
    				Delete(L);    //调用删除函数
    				if (L.length == 0) {
    					printf("\n");
    					printf("学生记录已被删除完!\n");
    					Ret();
    					Menu();
    				} else {
    					printf("显示删除后的学生信息:\n");
    					Display(L);
    					Ret();
    					Menu();
    				}
    				break;
    		}
    	}
    }
    
    
    展开全文
  • 学生宿舍信息管理系统 项目计划书

    热门讨论 2011-12-14 13:10:41
    学生宿舍信息管理系统 项目计划书 目录 第一章 前言---------------------------------------------------------2 1.1项目开发背景-------------------------------------------------2 1.2项目开发目的----------...
  • C语言实训报告——学生宿舍信息管理系统

    千次阅读 多人点赞 2018-11-09 22:43:45
    学生宿舍信息管理系统主要实现的功能有:创建学生宿舍信息,显示学生宿舍信息,查询学生宿舍信息,修改学生宿舍信息,删除学生宿舍信息,保存学生宿舍信息,读取学生宿舍信息。其系统功能模块图如下: 完整代码...
  • 高校学生宿舍信息管理系统[使用说明] 1. 对软件配置、硬件环境的要求  支持的操作系统: Windows XP Service Pack 2或更高级  内存:512MB以上  运行时环境:.NET Framework 3.5 或以上  编程开发环境:...
  • 4.宿舍信息的增删改查 5.管理员信息的增删改查 6.学生对宿舍物品的报修与核实 7.学生提交请假与销假 8.管理员对保修的审批 9.管理员对请假的审批 技术 1.采用C#\Winform开发的C\S系统 2.采用MD5对数据加密 3.数据库...
  • jsp学生宿舍信息管理系统

    热门讨论 2013-02-27 23:29:48
    系统管理的实体信息: (1)用户帐号信息:序号,登陆名,创建时间,状态,登录次数 (2)楼层信息: 序号,楼层,添加时间 (3)房间信息: 序号,所属楼层,房间信息,容纳人数 (4)预定信息: 序号,所属楼层,房间信息,...
  • 采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...
  • 学生宿舍管理系统正是在学校全面提高学校信息化能力的背景下提出的。本系统在访问方式方面采用的是B/S模式,开发语言选择的为Java,后台数据库使用的是MYSQL。首先,用户分为管理员、宿舍管理员和学生。其次,又根据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,236
精华内容 2,494
关键字:

学生宿舍信息管理系统