数据结构课程设计报告宿舍管理系统
数据结构课程设计之宿舍管理系统
##大学数据结构课程设计报告题目:宿舍管理查询软件院(系):学生姓名:班级:学号:起迄日期: 2011.6.20--2011.7.1指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:程序设计要求:为宿舍管理人员编写一个宿舍管理查询软件(1)采用交互工作方式(2)建立数据文件,数据文件按关键字(姓名、学号、放号)进行排序(冒泡、选择、插入排序等任选一种)(3) 查询菜单:(用二分查找实现以下操作)①按姓名查询②按学号查询③按放号查询(4)打印任一查询结果(可以连续操作)程序分析:(1)程序采用交互工作方式,也就是说要有一个人性化的操作界面。
将每一种操作赋给一个数字,通过输入不同的数字来实现不同的操作。
这样使人一看就能明白如何实现不同的操作。
全部使用提示选择方式,只需要输入你要使用方式的代号即可。
(2)本系统无数据信息,在使用的时候首先创建一个数据文件,开发一个录入数据的功能,使得所需要的数据存储到软件中,并暂时存在内存中,以便使用。
(3)录入和修改函数:建立相应的函数,在主函数中得到调用,以便于对学生信息的增加和修改。
(4)查询:以不同的关键字分别使用二分查找实现。
(5)为了使用方便和安全,增加了密码登录、密码锁定、退出、删除、全部删除、修改、存储为文本文档信息等功能。
2.基本功能(1)录入学生信息(2)显示学生信息(分别按学号、宿舍号、姓名进行排序后显示并在磁盘上以“.txt”格式保存显示的信息)(3)查询学生信息(分别按学号、宿舍号、姓名进行查询并显示)(4)修改学生信息(可进行单个删除、全部删除和修改学生信息)(5)存储学生信息(存储到磁盘上,保存为“.txt”格式)(6)锁定管理系统(进入密码登录界面,以确保安全)(7)退出管理系统3.输入输出各种功能之间的选择采用了数字提示方式,只需要根据提示进行选择相应的数字,在录入学生信息功能中姓名为长度30以内的任意字符,学生学号和宿舍号控制住15个数字以内。
数据结构课程设计报告-学生宿舍管理系统
数据结构课程设计报告-学生宿舍管理系统徐州工程学院课程设计报告课程名称数据结构课程设计专业计算机科学与技术班级 09计单学生姓名黄晨学号 ***********设计题目宿舍查询管理系统指导教师 ****** 设计起止时间:2011 年 6 月20日至2011年6月21日一.课程设计的背景:为学生提供了一个既动手又动脑,独立实践的机会,通过课程设计的综合训练,旨在帮助学生进一步系统的掌握数据结构这门课的主要内容,并进一步培养学生分析问题和解决问题的能力,主要体现在能够让学生针对实际问题有效地组织数据,选择合适的数据结构,并进行正确和高效的算法设计,并用程序实现算法。
该课的课程设计是一个良好的程序设计技能训练的过程。
二. 课程设计的内容和要求:1、基本内容任务:为宿舍管理人员编写一个宿舍管理查询软体。
2、基本要求1、建立数据文件,数据文件按关键字(房号、学号、姓名)查询。
2、主菜单(1)新建班级宿舍信息(2)查找已有班级宿舍信息(3)输出已有班级宿舍信息(4)插入已有班级学生信息(0)退出3、查询菜单(1)按宿舍号查找(2)按学号查找(3)按姓名查找(0)退出4、可以连续操作。
5、新建班级宿舍信息在磁盘上新文件并写入数据。
查找已有班级宿舍信息读入磁盘文件数据使用插入排序建立双向链表存储数据,分别使用索引表查找,折半查找,哈稀表查找对链表进行查询同时选择是否删除。
输出已有班级宿舍信息读入磁盘文件数据,排序后输出。
插入已有班级学生信息对磁盘文件进行追加写入。
三.主要参考文献:1.《数据结构课程设计》,苏仕华等编著,机械工业出版社, 2005.5.第一版;2.《算法与数据结构》,范策等编著,机械工业出版社 2004,第一版。
3.《数据结构(C语言版)》,严蔚敏等编著,清华大学出版社 2004 4.《数据结构实用教程(第二版)》,徐孝凯编著,清华大学出版社20065.《数据结构》,谢楚屏等编著,人民邮电出版社6.《数据结构与算法导论》,徐绪松等著,电子工业出版社四. 课程设计进度计划(以天为单位):double minnum,maxnum;}index_hc;typedef struct{char key[7];int count;stu_hc *stu;}hashtable_hc[MAXSIZE];六、源程序在运行文件目录下新建学生宿舍信息文件夹。
数据库系统及应用课程学生宿舍管理系统课程设计
数据库系统及应用课程学生宿舍管理系统课程设计一、概述在当今社会,随着高校学生数量的不断增加,学生宿舍管理工作变得越来越繁重。
为了提高学生宿舍管理工作的效率和质量,本课程设计旨在利用数据库系统及应用知识,设计并实现一套学生宿舍管理系统,以满足学生宿舍管理的需求。
二、需求分析1. 整体需求(1)系统应该具有良好的用户界面,方便用户进行操作。
(2)系统应该能够实现对学生宿舍信息的录入、修改、查询和删除等基本功能。
(3)系统应该能够对学生宿舍进行信息统计和报表生成等功能。
(4)系统应该能够实现对学生宿舍人员的管理,包括入住、退房、换房等操作。
(5)系统应该能够实现对学生宿舍设备的管理,包括设备的维护、报废、购置等操作。
2. 功能需求(1)学生宿舍信息管理- 学生宿舍基本信息的录入、修改、查询和删除- 学生宿舍信息的统计分析和报表生成(2)学生宿舍人员管理- 学生宿舍人员的入住、退房、换房等操作- 学生宿舍人员信息的录入、修改、查询和删除(3)学生宿舍设备管理- 学生宿舍设备的维护、报废、购置等操作- 学生宿舍设备信息的录入、修改、查询和删除三、系统设计1. 数据库设计(1)学生宿舍信息表- 宿舍编号- 宿舍名称- 宿舍类型- 宿舍价格- 入住情况(2)学生宿舍人员信息表- 学生尊称- 学号- 宿舍编号- 入住时间- 退房时间(3)学生宿舍设备信息表- 设备编号- 设备名称- 设备型号- 设备数量- 设备状态2. 系统界面设计(1)登入界面:用户输入用户名和密码进行登入(2)主界面:包括学生宿舍信息管理、学生宿舍人员管理、学生宿舍设备管理等功能模块(3)子界面:每个功能模块包括录入、修改、查询和删除等操作3. 系统功能设计(1)学生宿舍信息管理功能- 提供录入、修改、查询和删除学生宿舍信息的功能- 提供学生宿舍信息统计分析和报表生成的功能(2)学生宿舍人员管理功能- 提供入住、退房、换房等操作功能- 提供录入、修改、查询和删除学生宿舍人员信息的功能(3)学生宿舍设备管理功能- 提供设备维护、报废、购置等操作功能- 提供录入、修改、查询和删除学生宿舍设备信息的功能四、系统实现1. 开发工具(1)数据库:MySQL(2)编程语言:Java(3)界面设计:JavaFX(4)开发工具:IntelliJ IDEA2. 系统架构(1)前端:使用JavaFX实现用户界面(2)后端:使用Java编写业务逻辑,通过JDBC连接MySQL数据库(3)数据库:使用MySQL存储学生宿舍相关信息3. 系统测试(1)功能测试:对系统各项功能进行测试,确保功能能够正常运行(2)性能测试:对系统进行压力测试,评估系统性能是否满足需求(3)兼容性测试:测试系统在不同操作系统和浏览器上的兼容性五、系统部署和使用1. 系统部署(1)环境准备:安装MySQL数据库、配置Java开发环境(2)部署步骤:将系统部署到预先准备好的服务器上(3)系统配置:对系统进行相关配置,确保系统能够正常运行2. 系统使用(1)注册登入:用户进行注册并登入系统(2)操作指南:系统提供操作指南,介绍各项功能的使用方法(3)使用反馈:用户对系统使用过程中遇到的问题进行反馈六、总结与展望本课程设计基于数据库系统及应用的知识,设计并实现了一套学生宿舍管理系统。
数据库课程设计学生宿舍管理系统
易用性
系统需要提供简洁明了的 操作界面和流程,方便用 户快速上手和使用。
可维护性
系统需要具备良好的可维 护性,方便后续的功能扩 展和bug修复。
用户群体分析
学生
学生是宿舍管理系统的主要用户群体 ,他们需要使用系统查询和修改个人 信息、申请入住宿舍、缴纳住宿费用 等。
宿舍管理员
学校管理部门
学校管理部门需要使用系统了解学生 宿舍的整体情况,进行数据统计和分 析,以便做出更好的管理决策。
03 促进学校信息化建设
推动学校信息化建设进程,提高学校管理水平和 服务质量。
系统概述
01 系统功能
学生宿舍管理系统主要包括学生信息管理、宿舍 信息管理、住宿费用管理、报表统计等功能模块 。
02 系统用户
系统用户包括学校管理员、宿舍管理员、学生和 教师等。
03 系统特点
采用B/S架构,易于维护和升级;界面友好,操作 简单;支持多用户并发访问;具有良好的安全性 和稳定性。
费用等操作,最后生成报表供管理员查看。
数据库设计
数据库选型
选择适合课程设计的数据库管理系统,如MySQL 、Oracle等。
数据表设计
设计学生信息表、宿舍信息表、入住记录表、费 用记录表等数据表,并定义表之间的关系。
数据字典
定义数据表中每个字段的名称、类型、长度、约 束等信息,确保数据的准确性和一致性。
界面设计
界面风格
采用简洁、清晰的界面风格,符合学生宿舍管理系统 的特点。
界面布局
合理安排界面元素的位置和大小,使界面更加美观和 易用。
交互设计
设计友好的交互方式,如按钮、链接、表单等,方便 用户进行操作和输入。
04
系统实现
自-数据结构课设报告-宿舍管理系统
宿舍管理系统一目的根据所学知识,编写指定题目的C语言程序,并规范地完成课程设计报告。
通过课程设计,加深对《程序设计语言》和《软件技术基础》课程所学知识的理解,熟练掌握和巩固C 语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
二需求分析1、要求1)采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。
学生也可根据自己对题目的理解增加新的功能模块(视情况可另外加分)。
2)系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。
3)程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)。
4)编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等)。
2、详细功能宿舍信息包括:宿舍号、性别、容纳人数、住宿费用、住宿学生姓名。
试设计一宿舍信息管理系统,使之能提供以下功能:1.宿舍基本信息(包含宿舍号、性别、容纳人数、住宿费用)录入;2.将学生分配到指定宿舍号的宿舍;3.已住宿的学生退宿舍;4.查询宿舍信息,包括宿舍号、性别、容纳人数、住宿费用、已住宿的人数、已住宿学生姓名。
5.系统以菜单方式工作。
三概要设计流程图相关叙述:用户运行程序时便正式进行了通讯录的使用,该通讯录分为五个功能,“1”选项对应的是“宿舍信息录入”功能;“2”选项对应的是“将学生分配到宿舍”功能;“3”选项对应的是“已住宿学生退宿”功能;“4”选项对应的是“删宿舍信息查询”功能;“5”选项对应的是“退出系统”功能。
数据结构课程设计宿舍
数据结构课程设计宿舍一、课程目标知识目标:1. 让学生掌握数据结构中线性表的基本概念,特别是链式存储结构的特点与应用。
2. 能理解并运用链表解决实际问题,如设计宿舍管理系统中的宿舍信息存储与查询。
3. 学会分析不同数据结构在解决实际问题时的效率,对比数组与链表的优缺点。
技能目标:1. 培养学生运用C/C++等编程语言实现链表数据结构的能力。
2. 能够设计并编写简单的宿舍管理系统,实现宿舍信息的添加、删除、修改和查询等功能。
3. 提高学生分析问题、解决问题的能力,通过小组讨论和实际操作,培养学生的团队合作精神和沟通能力。
情感态度价值观目标:1. 激发学生对数据结构学习的兴趣,培养良好的学习习惯和探究精神。
2. 培养学生面对复杂问题时保持耐心、细心的态度,树立克服困难的信心。
3. 引导学生关注现实生活中数据结构的应用,认识到数据结构对计算机科学的重要性,增强学生的专业认同感。
课程性质:本课程为高二年级信息技术课程,以数据结构为基础,结合实际应用,培养学生的编程能力和解决实际问题的能力。
学生特点:高二年级学生对编程语言有一定的了解,具备基本编程能力,对数据结构有一定认识,但实际应用能力有待提高。
教学要求:结合学生特点和课程性质,以宿舍管理系统为背景,引导学生通过动手实践,掌握链表数据结构的应用,提高编程能力和解决实际问题的能力。
在教学过程中,注重培养学生的团队合作精神和情感态度价值观。
通过课程目标的实现,为后续学习更复杂的数据结构打下坚实基础。
二、教学内容1. 理论知识:- 线性表的基本概念与性质- 链式存储结构(单链表、双向链表、循环链表)- 链表的插入、删除、查找操作2. 实践操作:- 编程实现单链表的创建、插入、删除和查找功能- 基于链表的宿舍管理系统设计与实现- 宿舍信息的数据结构设计- 宿舍信息的添加、删除、修改和查询功能实现3. 教学大纲:- 第一课时:线性表基本概念,链式存储结构引入,单链表结构定义- 第二课时:单链表插入、删除操作原理与实现- 第三课时:单链表查找操作,以及在实际宿舍管理系统中的应用- 第四课时:双向链表、循环链表介绍,分析优缺点- 第五课时:基于链表的宿舍管理系统设计与编程实践- 第六课时:课程总结,学生作品展示与评价教材章节关联:- 《数据结构》第二章 线性表- 2.1 线性表的定义及基本运算- 2.2 线性表的顺序存储结构- 2.3 线性表的链式存储结构教学内容安排和进度:本章节共计6课时,按照教学大纲逐步进行,确保学生充分理解并掌握链表相关知识,同时在实践中运用所学知识设计和实现宿舍管理系统。
数据库课程设计报告——宿舍管理系统
《数据库原理》课程设计报告专业:计算机科学与技术班级:学号:姓名:合作伙伴:题目名称:.寝室智能管理系统完成日期:重庆邮电大学计算机学院实验中心目录一系统定义 (2)二需求分析 (2)三系统设计 (5)3.1 数据字典 (5)3.2 E-R图 (6)3.3 数据流图 (8)四系统实现 (9)4.1 用户管理 (9)4.2 费用管理 (10)4.3 日常管理 (11)4.4 人员管理 (13)4.5 物品管理 (14)4.6 系统设置 (15)五详细设计 (18)六设计总结 (20)一系统定义本寝室智能管理系统为寝室管理员实现电子化管理寝室的数据库系统,其具体涉及的内容包括:1.寝室信息2.学生信息管理3.物品出入及外来人员信息4.登记信息5.水电费信息6.清洁分信息7.重要事务及奖惩措施公告用户包括公寓管理员、协管人员、学生。
各自的权限有所不同:管理员:一切权限;协管人员:学生的一切权限,信息预览中添加删除更改公告栏内容;学生:信息查询,信息提交。
二需求分析一、目的与任务:寝室智能管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统(Management Information System)。
它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。
能有效的帮助学校和老师掌握学生的情况,方便校方管理及学生的日常寝室生活。
通过该系统,管理员用户可以查看学生的基本资料寝室信息等各方面的资料,能够方便的了解学生寝室生活情况。
该管理系统为用户提供了信息录入,数据查询、输出各种信息等。
学生用户可查询寝室一些相关事宜。
另外,协管人员用户还可以对公告栏信息进行添加,更新和删除。
寝室智能管理系统力求给用户方便快捷的途径去管理这些繁琐的数据。
二、系统功能需求分析用户的需求具体体现在各种信息的输入、修改和查询,并能够提供一定的安全保障。
数据库课程设计——学生宿舍管理系统
数据库课程设计——学生宿舍管理系统学生宿舍管理系统是一个在宿舍内运用一套计算机数据库系统来管理宿舍资源的一种系统,其主要有宿舍的床位的记录,宿舍进出情况的记录,以及在宿舍内的电信费用的结算等。
这套系统主要是管理宿舍的资源,是学生在校期间居住环境良好、安全稳定的基础。
该系统主要包括宿舍人员信息,电子证件信息,维修管理,安全管理,电信费用,违规登记,公共活动安排,探访记录等几个主要的模块组成。
宿舍人员信息模块是指向学生宿舍中所有入住学生提供宿舍床位资源申请,记录个人信息,转移床位,离开宿舍等服务。
电子证件信息模块指的是在宿舍内每一位学生进入前,需要出示身份证件如学生证,及其他权威机构发放的个人有效证件,以及学生图书馆的借还书情况等信息的收集。
维修管理模块此模块是收集宿舍内的维修及疏导信息,对宿舍内设备信息的查询,及采购、使用过程的记录;安全管理模块是指在学生入住前及整个住期内宿管部门对宿舍的环境、安全状况及情况的收集记录;电信费用模块此模块是指宿舍内每位学生使用电话费用时必须进行记录;违规登记模块此模块是指对宿舍违反宿管部门要求及学校规章制度情况的记录;公共活动安排模块此模块是指在宿舍内举办的公共活动的记录;探访记录模块是指宿舍内朋友及亲人探访等情况的记录等。
总之,学生宿舍管理系统是一种在宿舍内运用一套计算机数据库系统来对宿舍的人员信息、电子证件信息、维修管理、安全管理、电信费用、违规登记、公共活动安排、探访记录等有效记录及管理的系统。
由于数据库技术的发展,学生宿舍管理系统可以实现快速可靠的资料记录,使资料的维护和查询变得更加便捷和安全。
数据库技术的发展对于学生宿舍管理系统的构建起着至关重要的作用,其实现的高效记录、安全稳定的基本功能,为学生在校期间的居住环境提供了良好的保障。
学生宿舍管理系统数据库课程设计
备份和恢复: 定期备份数 据,确保数 据丢失或损 坏时能够快 速恢复
审计和日志: 记录所有操 作和访问日 志,便于审 计和追踪问 题。
06
学生宿舍管理系统 数据库物理设计
存储结构的设计
存储介质:选择合适的存储介质,如硬 盘、SSD等
数据库类型:选择合适的数据库类型, 如MySQL、SQL Server等
备份和恢复:确保 数据安全,防止数 据丢失或损坏
04
学生宿舍管理系统 数据库概念设计
概念模型设计
实体:学生、宿舍、管理员
属性:学生的姓名、学号、宿舍号、 床位号等;宿舍的楼号、房间号、 床位数等;管理员的姓名、工号等
添加标题
添加标题
添加标题
添加标题
关系:学生与宿舍的关系、宿舍与 管理员的关系
约束:学生与宿舍的关系必须是一 对一或一对多;宿舍与管理员的关 系必须是一对一或多对一。
单击此处添加副标题
学生宿舍管理系统 数据库课程设计
汇报人:
目 录 CATALOG
01
单击此处 添加目录标题
02
数据库设计概述
03
04
学生宿舍管理系统 学生宿舍管理系统
需求分析
数据库概念设计
05
06
07
学生宿舍管理系统 学生宿舍管理系统 学生宿舍管理系统
数据库逻辑设计
数据库物理设计
数据库实施和维护
01
宿舍管理表:存储宿 舍管理人员信息,如 宿舍管理员姓名、联 系方式等
添加标题
宿舍设施表:存储宿 舍设施信息,如设施 名称、数量、状态等
添加标题
宿舍维修表:存储宿 舍维修信息,如维修 时间、维修内容、维 修人员等
添加标题
《Web课程设计报告》宿舍信息管理系统
《Web课程设计报告》宿舍信息管理系统目录1课程设计任务 (2)1.1 宿舍信息管理系统的任务分析 (2)1.2 开发环境 (2)1.3 进度计划 (2)2需求分析 (3)2.1 项目功能分析 (3)2.2 总体功能结构图 (4)3系统设计 (4)3.1 数据的持久化设计 (4)3.2 类/接口设计 (7)3.2.1 类图............................................ 错误!未定义书签。
3.2.2 程序处理流程 (7)4系统实现 (10)4.1 系统文件规划 (10)4.2 主程序 (11)5程序测试 (17)5.1 测试方法............................................ 错误!未定义书签。
5.2 测试用例 (17)6设计总结 (17)1课程设计任务1.1宿舍信息管理系统的任务分析总体功能描述该系统拥有三种角色:1. 系统管理员查看当前宿舍学生人数、住宿人数、报修数量、空舍数量、查看学生信息、宿管信息、查看楼宇信息、查看公告信息、查看房间信息、查看报修信息、查看调寝信息、访客管理、查看所有用户信息1. 宿舍管理员查看当前宿舍学生人数、住宿人数、报修数量、空舍数量、查看学生信息、查看楼宇信息、查看公告信息、查看房间信息、查看报修信息、查看调寝信息、访客管理、查看个人信息1. 学生查看当前宿舍学生人数、住宿人数、报修数量、空舍数量、查看我的宿舍、申请调宿、申请报修、查看个人信息1.2开发环境jdk11、Maven、Node、Mysql、tomcat、Vue、SpingBoot、MybatisPlus、ElementUI、JavaScript、axios1.3进度计划1第一周:在第一周的时候完成前端Vue内容的完成。
第一天完成登录页面,在登录页面添加人物跟随鼠标动画,并将登录页面的背景设置为渐变色背景实时发生动态变色。
数据结构宿舍管理系统
数据结构宿舍管理系统一、引言1.1 目的本文档描述了数据结构宿舍管理系统的设计和功能,旨在提供一个完整的指南,帮助开发人员了解系统的结构和使用方式。
1.2 范围本系统主要包括宿舍信息管理、学生信息管理、入住登记管理、维修申报管理等模块,涵盖了对宿舍信息和学生信息的录入、查询、更新等操作。
1.3 定义、首字母缩写词- 数据结构宿舍管理系统:简称为宿管系统,用于管理大学宿舍的信息和相关操作的软件系统。
- 宿舍信息管理模块:负责录入、更新和查询宿舍的相关信息。
- 学生信息管理模块:负责录入、更新和查询学生的相关信息。
- 入住登记管理模块:负责记录学生入住宿舍的信息。
- 维修申报管理模块:负责学生对宿舍的维修申报和处理。
二、总体设计2.1 系统架构该系统采用了三层架构,分别是表示层、业务逻辑层和数据访问层。
表示层负责用户界面的展示和用户输入的接收,业务逻辑层负责处理前台的业务逻辑,数据访问层负责与数据库的交互。
2.2 数据流程该系统的数据流程包括学生信息录入、宿舍信息录入、入住登记和维修申报处理等。
通过各个模块之间的数据传递和处理,实现对宿舍信息和学生信息的管理和操作。
三、模块设计3.1 宿舍信息管理模块3.1.1 宿舍信息录入在该模块中,管理员可以录入宿舍的基本信息,包括宿舍编号、宿舍楼栋、楼层、可容纳人数等。
3.1.2 宿舍信息更新在该模块中,管理员可以根据需要更新宿舍的相关信息,如修改宿舍楼层、增加宿舍容纳人数等。
3.1.3 宿舍信息查询据宿舍编号查询宿舍信息。
3.2 学生信息管理模块3.2.1 学生信息录入在该模块中,管理员可以录入学生的基本信息,包括学生学号、姓名、性别、所在宿舍等。
3.2.2 学生信息更新在该模块中,管理员可以根据需要更新学生的相关信息,如修改学生宿舍、变更学生姓名等。
3.2.3 学生信息查询在该模块中,管理员可以根据指定条件对学生进行查询,如根据学生学号查询学生信息。
3.3 入住登记管理模块3.3.1 学生入住登记在该模块中,管理员可以记录学生的入住信息,包括学生学号、宿舍编号、入住日期等。
数据结构课程设计报告宿舍管理系统完整版
数据结构课程设计报告宿舍管理系统HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】数据结构课程设计报告设计题目:学生宿舍管理系统学院:年级专业:姓名:学号:指导老师:1.设计目的宿舍对于大学生在校生活来说相当于家的存在,而宿舍管理又是学校后勤管理的重要环节,如何直观的了解宿舍的入住情况和每位同学的住宿位置是提高工作效率的重要课题,根据我们所学的C语言和数据结构课程中有关链表及外部文件的内容,为后勤管理人员编写宿舍管理查询软件, 就可以轻松满足实现上述需求。
通过实际课题设计,可以对我们加深书本知识理解,了解并掌握数据结构与算法的设计方法,培养独立分析和设计能力,掌握软件开发过程的基本方法和技能,对我们的个人素质提高大有脾益。
2.需求分析性能分析宿舍一般由若干学生入驻,每个宿舍都有独立唯一的编号,入住学生也有唯一的学号,另外添加学生的姓名和班级,使用这些关键字就可以方便的查询和管理宿舍入住情况。
程序设计应采用交互工作方式,并建立数据文件。
程序应通过建立子函数实现创建、保存与载入数据文件,查找、添加、删除、更改、显示等功能,可以自动保存修改。
应具有友好的界面和较强的容错能力。
能够迅速准确地完成各种学生信息的统计和查询,以方便管理员对学生信息的统一管理。
功能分析为方便管理员对系统进行操作,程序应具有以下功能:(1)创建宿舍数据文件,并提示管理员输入学生姓名、学号、宿舍号、班级等信息,并在本地保存数据文件(2)打开宿舍数据文件:输入文件名打开保存过的数据文件(3)查询住宿信息:提供学号、姓名、宿舍号三种查询方式(4)添加住宿信息:在数据文件中添加新的住宿信息(5)删除住宿信息:提示管理员输入要删除的学生姓名,验证后删除(6)修改住宿信息:提示管理员输入要修改的学生姓名,验证后修改(7)输出数据文件:将住宿信息按学号的大小排序全部输出(8)退出系统3.程序结构及流程设计系统流程图4.系统详细设计数据结构设计修改界面删除界面添加界面输出界面本地数据文件系统分析经过测试,该宿舍管理系统结构清晰,运行时测试也相对简单。
学生宿舍管理系统设计报告
学生宿舍管理系统设计报告一、引言随着高校学生规模的日益扩大,学生宿舍管理工作变得愈发繁杂。
为了提高宿舍管理效率,优化管理流程,降低管理成本,我们设计了一套学生宿舍管理系统。
本系统致力于提供便捷的宿舍入住、退房流程,规范宿舍管理并提供便捷的数据统计及查询功能,同时便于实现对宿舍安全及设施管理的全面监控。
二、设计目标1. 简化宿舍入住、退房流程,提高管理效率;2. 实现宿舍信息管理、学生信息管理、宿舍设备设施管理;3. 提供宿舍安全监控功能,确保学生居住环境的安全;4. 提供便捷的数据统计及查询功能,为宿舍管理提供决策支持。
三、系统功能需求1. 宿舍入住管理- 学生入住信息登记;- 房间信息管理;- 入住流程审批。
2. 退房管理- 学生退房信息登记;- 退房流程审批;- 房间状态更新。
3. 宿舍信息管理- 宿舍基本信息维护;- 宿舍设施设备管理。
4. 学生信息管理- 学生基本信息录入;- 学生信息查询。
5. 安全监控- 宿舍安全巡查记录;- 安全隐患整改流程;- 紧急事件处理记录。
6. 统计与查询- 宿舍入住率、退房率统计;- 学生入住情况查询;- 设备设施维护记录查询。
四、系统实现方案1. 技术选型- 前端:使用HTML、CSS、JavaScript实现网页前端功能;- 后端:采用Java语言开发,使用Spring框架支持业务逻辑;- 数据库:选择MySQL作为数据存储。
2. 系统架构- 采用B/S架构,用户通过浏览器访问系统,服务器端负责处理业务逻辑并与数据库交互。
3. 安全设计- 用户身份验证及权限管理;- 数据传输加密;- 安全日志记录。
四、系统实现方案1. 技术选型- 前端:使用HTML、CSS、JavaScript实现网页前端功能;- 后端:采用Java语言开发,使用Spring框架支持业务逻辑;- 数据库:选择MySQL作为数据存储。
2. 系统架构- 采用B/S架构,用户通过浏览器访问系统,服务器端负责处理业务逻辑并与数据库交互。
数据结构宿舍管理系统
数据结构宿舍管理系统在当今的高校和企业宿舍管理中,一个高效、准确且易于操作的数据结构宿舍管理系统是至关重要的。
它不仅能够提升管理效率,还能为住宿人员提供更好的服务和保障。
首先,让我们来了解一下这个系统的基本需求和功能。
宿舍管理系统需要涵盖宿舍信息的录入与维护,包括宿舍的编号、位置、容纳人数等。
同时,还要有住宿人员的信息管理,如姓名、学号或工号、所在班级或部门等。
系统还应该具备住宿分配功能,能够根据预设的规则和条件,合理地为新入住人员安排宿舍。
在数据结构方面,我们可以采用链表、数组、树等结构来存储和管理这些信息。
例如,使用链表来存储住宿人员的信息,可以方便地进行插入、删除和查找操作。
对于宿舍信息,可以使用数组来存储,因为宿舍的数量相对固定,数组的随机访问特性能够提高查询效率。
为了实现宿舍分配功能,我们需要设计一套合理的算法。
比如,可以按照班级或部门进行集中分配,优先将同一班级或部门的人员安排在相邻的宿舍。
在分配过程中,要考虑宿舍的剩余容量,避免出现超额分配的情况。
这就需要在算法中不断检查宿舍的可用床位,并进行合理的选择。
系统的用户界面也非常重要。
它应该简洁明了,易于操作。
对于管理员来说,能够方便地进行各种管理操作,如信息录入、修改、查询和统计等。
对于住宿人员,应该提供个人信息查询、报修申请等功能。
在设计用户界面时,要充分考虑用户的使用习惯和需求,提高用户体验。
另外,系统的安全性也是不容忽视的。
要设置不同的用户权限,管理员拥有最高权限,可以进行全面的操作;住宿人员只能查看和修改自己的相关信息。
同时,要对系统的数据进行加密存储,防止数据泄露。
在系统的开发过程中,还需要进行充分的测试。
包括功能测试、性能测试、安全测试等。
功能测试要确保系统的各项功能都能正常运行,没有漏洞和错误。
性能测试要检测系统在大数据量和高并发情况下的响应速度和稳定性。
安全测试则要检查系统是否能够有效抵御各种攻击和非法访问。
系统的维护和升级也是长期的工作。
数据结构课程设计-宿舍管理系统
#include<stdio.h>#include<string.h>struct DBNode//数据结点{char Name[20];//姓名int StdID;//学号int RoomID;//房号};//插入排序void InsertSort_Name(DBNode a[], int n)//n是数据的数量{int i, j;//循环变量for (i = 1; i < n; i++)//n个数据n-1次排序if (strcmp(a[i].Name,a[i - 1].Name)<0)//如果待排序的数据比排好序的部分最后一个数小,就进行排序{DBNode temp = a[i];//因为数据要向后移动,暂存待排序的数据for (j = i - 1; j >= 0 && strcmp(a[j].Name,)>0; j--)//找到插入的位置a[j + 1] = a[j];a[j + 1] = temp;//把数据写到相应位置}}void InsertSort_StdID(DBNode a[], int n){int i, j;for (i = 1; i < n; i++)if (a[i].StdID < a[i - 1].StdID){DBNode temp = a[i];for (j = i - 1; j >= 0 && a[j].StdID > temp.StdID; j--)a[j + 1] = a[j];a[j + 1] = temp;}}void InsertSort_RoomID(DBNode a[], int n){int i, j;for (i = 1; i < n; i++)if (a[i].RoomID < a[i - 1].RoomID){DBNode temp = a[i];for (j = i - 1; j >= 0 && a[j].RoomID > temp.RoomID; j--)a[j + 1] = a[j];a[j + 1] = temp;}}//二分查找,返回数组下标int Binsch_Name(DBNode A[], int low, int high, char *K){if (low <= high)//当low小于high时查找{int mid = (low + high) / 2;//算出中间位置if (strcmp(A[mid].Name,K)==0)//中间位置是待查找的数据,直接返回return mid;else if (strcmp(A[mid].Name, K)>0)//中间位置大于待查找的数据,在[low,mid-1]处查找return Binsch_Name(A, low, mid - 1, K);else//中间位置小于待查找的数据,在[mid+1,high]处查找return Binsch_Name(A, mid + 1, high, K);}else return -1;//-1不可能在数组中出现,表未找到查找的数据}int Binsch_StdID(DBNode A[], int low, int high, int K){if (low <= high){int mid = (low + high) / 2;if (A[mid].StdID == K)return mid;else if (A[mid].StdID>K)return Binsch_StdID(A, low, mid - 1, K);elsereturn Binsch_StdID(A, mid + 1, high, K);}else return -1;}int Binsch_RoomID(DBNode A[], int low, int high, int K){if (low <= high){int mid = (low + high) / 2;if (A[mid].RoomID == K)return mid;else if (A[mid].RoomID>K)return Binsch_RoomID(A, low, mid - 1, K);elsereturn Binsch_RoomID(A, mid + 1, high, K);}else return -1;}//建立数据文件void BuildDB(){printf("您想要输入的数据数量:");//输出提示int n;//n为要输入的数据量scanf("%d", &n);printf("请输入数据:(例:张三01 312)\n");FILE *fp = fopen("DB.txt", "a");//fp为文件指针,fopen为打开文件的函数,"DB.txt"为文件名,"a"为追加模式DBNode *std=new DBNode;//new 是C++的函数for (int i = 0; i < n; ++i)//把数据循环地写到文件中去{scanf("%s %d %d", std->Name, &std->StdID, &std->RoomID);//从外面输入数据到内存fprintf(fp, "%s %d %d\n", std->Name, std->StdID, std->RoomID);//从内存写到文件去}fclose(fp);//关掉文件}//查询void Find(){FILE *fp = fopen("DB.txt", "r");//fp为文件指针,fopen为打开文件的函数,"DB.txt"为文件名,"r"为只读模式if (fp == NULL)//文件不存在时输出提示,并直接返回{printf("无相关数据文件!\n");return;}DBNode db[100];//定义从文件接受数据的数组int i;//i为循环变量for (i = 0; (i < 100) && (!feof(fp)); ++i)//从文件逐行输入数据,退出循环式i为读入数据的数量,feof()函数判断文件是否结束fscanf(fp,"%s %d %d", db[i].Name, &db[i].StdID, &db[i].RoomID);printf("1.按姓名查找;2.按学号查找;3.按房号查找:");int o;//o是保持操作标志的变量scanf("%d", &o);char K1[20];//K1保存查找的名字int K2;//K2保存查找的学号或房号int index;//index保存二分查找返回的下标switch (o){case 1:printf("请输入要查找的姓名:");//输出提示scanf("%s", K1);//输入查找的名字InsertSort_Name(db, i);//按名字排序index=Binsch_Name(db, 0, i - 1, K1);//按名字查找if (index != -1)//index不等于-1,表找到要查找的数据//输出查找到的数据printf("查找结果如下:\n姓名:%s 学号:%d 房号:%d\n", db[index].Name, db[index].StdID, db[index].RoomID);else//index等于-1,表未找到要查找的数据printf("无所查信息!\n");break;case 2:printf("请输入要查找的学号:");scanf("%d", &K2);InsertSort_StdID(db, i);index = Binsch_StdID(db, 0, i - 1, K2);if (index != -1)printf("查找结果如下:\n姓名:%s 学号:%d 房号:%d\n", db[index].Name, db[index].StdID, db[index].RoomID);elseprintf("无所查信息!\n");break;case 3:printf("请输入要查找的房号:");scanf("%d", &K2);InsertSort_RoomID(db, i);index = Binsch_RoomID(db, 0, i - 1, K2);if (index != -1)printf("查找结果如下:\n姓名:%s 学号:%d 房号:%d\n", db[index].Name, db[index].StdID, db[index].RoomID);elseprintf("无所查信息!\n");break;default:printf("无效操作!/n");break;}fclose(fp);//关掉文件}void main(){printf("宿舍管理查询系统\n");//输出提示while (1)//大循环,保存一直对这个系统的操作{printf("选择操作:1.输入数据库;2.查询:");//提示int o;//o保存要操作的标志scanf("%d", &o);if (o == 1)//o为1时,建立数据库BuildDB();if (o == 2)//o为2时,查找数据Find();}}。
数据库课程设计宿舍管理系统
数据库课程设计宿舍管理系统宿舍管理系统是一种基于数据库技术的信息管理系统,主要用于管理学校或公寓宿舍的信息,包括学生信息、宿舍信息、楼层信息、寝室信息、维修信息等。
该系统可以帮助学校或公寓管理人员更好地管理学生宿舍,提高宿舍管理效率,加强对学生宿舍的监管力度。
宿舍管理系统的设计需要考虑以下几个方面:一、系统需求分析在设计宿舍管理系统之前,我们需要进行系统需求分析,了解学校或公寓管理人员的需求和要求,确定系统的功能和性能指标。
系统需求分析包括以下几个方面:1、功能需求分析宿舍管理系统需要实现的功能包括:学生信息管理、宿舍信息管理、楼层信息管理、寝室信息管理、维修信息管理、统计报表查询等。
2、性能需求分析宿舍管理系统需要满足的性能要求包括:系统响应速度快、数据可靠性高、数据安全性强、易于维护等。
二、数据库设计在进行数据库设计时,需要根据需求分析结果确定数据库的结构和关系。
宿舍管理系统需要设计的数据库包括:学生信息表、宿舍信息表、楼层信息表、寝室信息表、维修信息表等。
1、学生信息表学生信息表包括学生的基本信息,如学号、姓名、性别、班级、联系方式等。
2、宿舍信息表宿舍信息表包括宿舍的编号、类型、容纳人数、所在楼层等信息。
3、楼层信息表楼层信息表包括楼层的编号、名称、所在位置等信息。
4、寝室信息表寝室信息表包括寝室的编号、所属宿舍编号、所在楼层编号、宿舍类型等信息。
5、维修信息表维修信息表包括维修记录的编号、维修日期、维修内容、维修人员等信息。
三、系统实现在进行系统实现时,需要根据需求分析和数据库设计结果进行系统开发。
系统开发的主要内容包括:系统界面设计、系统功能实现、系统测试和系统优化等。
1、系统界面设计系统界面设计需要根据用户需求和数据库设计结果进行界面布局和界面元素的设计,使得用户可以方便地使用系统。
2、系统功能实现系统功能实现需要根据需求分析和数据库设计结果进行功能模块的开发,包括学生信息管理模块、宿舍信息管理模块、楼层信息管理模块、寝室信息管理模块、维修信息管理模块、统计报表查询模块等。
宿舍管理系统课程设计报告
宿舍管理系统课程设计报告一、引言随着大学生活的开始,宿舍管理成为了一个重要的问题。
为了更好地管理宿舍,提高宿舍管理的效率和质量,我们设计了一款宿舍管理系统。
二、系统需求分析1.系统功能(1)学生信息管理:包括学生基本信息、宿舍信息、入住时间等。
(2)宿舍信息管理:包括宿舍基本信息、宿舍楼信息、宿舍床位信息等。
(3)宿舍卫生管理:包括宿舍卫生检查、卫生评分等。
(4)宿舍报修管理:包括宿舍报修信息、报修进度等。
(5)宿舍公告管理:包括宿舍公告发布、公告查看等。
2.系统设计(1)系统架构:采用B/S架构,即浏览器/服务器架构。
(2)系统技术:采用Java语言开发,使用MySQL数据库。
(3)系统界面:采用Bootstrap框架设计,界面简洁美观。
三、系统实现1.学生信息管理(1)学生信息录入:管理员可以录入学生基本信息,包括姓名、性别、学号、专业、班级等。
(2)宿舍信息录入:管理员可以录入学生宿舍信息,包括宿舍楼、宿舍号、床位号等。
(3)学生信息查询:管理员可以查询学生基本信息,包括姓名、学号、宿舍信息等。
2.宿舍信息管理(1)宿舍信息录入:管理员可以录入宿舍基本信息,包括宿舍楼、宿舍号、床位数等。
(2)宿舍床位信息录入:管理员可以录入宿舍床位信息,包括床位号、是否空闲等。
(3)宿舍信息查询:管理员可以查询宿舍基本信息,包括宿舍楼、宿舍号、床位数等。
3.宿舍卫生管理(1)宿舍卫生检查:管理员可以对宿舍进行卫生检查,并对卫生情况进行评分。
(2)宿舍卫生评分:管理员可以对宿舍卫生情况进行评分,并将评分结果反馈给学生。
4.宿舍报修管理(1)宿舍报修信息录入:学生可以在系统中提交宿舍报修信息,包括报修类型、报修内容等。
(2)宿舍报修进度查询:学生可以查询宿舍报修进度,包括报修状态、处理进度等。
5.宿舍公告管理(1)宿舍公告发布:管理员可以在系统中发布宿舍公告,包括宿舍活动、宿舍规定等。
(2)宿舍公告查看:学生可以在系统中查看宿舍公告,了解宿舍最新动态。
数据结构宿舍管理方案计划系统
数据结构宿舍管理方案计划系统一、引言宿舍管理是大学生活中不可或者缺的一部份,它关系着学生的生活质量和学习环境。
为了提高宿舍管理的效率和便利性,我们计划开辟一个数据结构宿舍管理方案计划系统。
该系统将利用数据结构的相关知识,实现对宿舍管理的全面规划和管理。
二、系统需求分析1. 学生信息管理:系统需要能够存储和管理学生的基本信息,包括姓名、学号、性别、班级等。
同时,还需要能够记录学生的入住时间、离宿时间等。
2. 宿舍信息管理:系统需要能够存储和管理宿舍的基本信息,包括宿舍号、楼栋号、宿舍类型等。
同时,还需要能够记录宿舍的入住人数、剩余床位数等。
3. 维修管理:系统需要能够记录宿舍维修的情况,包括维修时间、维修内容等。
同时,还需要能够自动生成维修报告,方便维修人员查看和处理。
4. 物品管理:系统需要能够记录宿舍内的物品情况,包括物品名称、数量、存放位置等。
同时,还需要能够生成物品清单,方便管理员进行盘点和管理。
5. 报修管理:系统需要能够记录学生的报修情况,包括报修时间、报修内容等。
同时,还需要能够自动分配维修人员,并能够及时跟踪维修进度。
6. 安全管理:系统需要能够记录宿舍的安全情况,包括火灾报警、门禁系统等。
同时,还需要能够自动报警并及时通知相关人员。
三、系统设计与实现1. 数据结构选择:根据系统的需求分析,我们选择使用链表和哈希表作为主要的数据结构。
链表可以用于存储学生和宿舍的信息,而哈希表可以用于快速查找和管理。
2. 数据结构实现:我们将使用C++语言来实现该系统。
首先,我们将设计并实现学生和宿舍的数据结构,包括链表和哈希表的定义和操作。
然后,我们将实现各个功能模块,包括学生信息管理、宿舍信息管理、维修管理、物品管理、报修管理和安全管理等。
3. 用户界面设计:为了提高用户的使用体验,我们将设计一个直观、简洁且易于操作的用户界面。
用户可以通过界面进行各种操作,包括添加学生信息、查询宿舍信息、记录维修情况、管理物品等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告设计题目:学生宿舍管理系统学院:年级专业:姓名:学号:指导老师:1.设计目的宿舍对于大学生在校生活来说相当于家的存在,而宿舍管理又是学校后勤管理的重要环节,如何直观的了解宿舍的入住情况和每位同学的住宿位置是提高工作效率的重要课题,根据我们所学的C语言和数据结构课程中有关链表及外部文件的内容,为后勤管理人员编写宿舍管理查询软件, 就可以轻松满足实现上述需求。
通过实际课题设计,可以对我们加深书本知识理解,了解并掌握数据结构与算法的设计方法,培养独立分析和设计能力,掌握软件开发过程的基本方法和技能,对我们的个人素质提高大有脾益。
2.需求分析2.1性能分析宿舍一般由若干学生入驻,每个宿舍都有独立唯一的编号,入住学生也有唯一的学号,另外添加学生的姓名和班级,使用这些关键字就可以方便的查询和管理宿舍入住情况。
程序设计应采用交互工作方式,并建立数据文件。
程序应通过建立子函数实现创建、保存与载入数据文件,查找、添加、删除、更改、显示等功能,可以自动保存修改。
应具有友好的界面和较强的容错能力。
能够迅速准确地完成各种学生信息的统计和查询,以方便管理员对学生信息的统一管理。
2.2功能分析为方便管理员对系统进行操作,程序应具有以下功能:(1)创建宿舍数据文件,并提示管理员输入学生姓名、学号、宿舍号、班级等信息,并在本地保存数据文件(2)打开宿舍数据文件:输入文件名打开保存过的数据文件(3)查询住宿信息:提供学号、姓名、宿舍号三种查询方式(4)添加住宿信息:在数据文件中添加新的住宿信息(5)删除住宿信息:提示管理员输入要删除的学生姓名,验证后删除(6)修改住宿信息:提示管理员输入要修改的学生姓名,验证后修改(7)输出数据文件:将住宿信息按学号的大小排序全部输出(8)退出系统3.程序结构及流程设计3.1系统流程图3.2 函数设计4.系统详细设计4.1数据结构设计typedef struct pnode //结构体定义用于存放学生信息的节点{char name[10]; //姓名char num[16]; //学号char room[30]; //宿舍号char group[20]; //班级}student;char filename[20]; //文件名FILE *fp; //指向文件的指针4.2创建功能(void creat())使用函数新建链表,再使用while循环完成对宿舍数据的录入,包括姓名、学号、班级、宿舍号等信息。
最终将录入数据保存在数组里。
完成输入后,输入#结束循环。
4.3使用函数读取数据文件,根据输入的文件名加载保存在本地的数据文件,若找不到相同名称文件,则输出错误提示。
4.4查找功能 (void namesearch(),void numsearch(),void groupsearch())通过输入选择相关的查询函数来完成查找功能,使用指针将关键字与记录比较,若相同则输出,若无相同则输出错误提示。
4.5使用函数定义指向结构体变量的指针,检验链表中是否有记录,若有记录,根据要修改的编号查找对应结点修改信息并保存,若没记录,输出错误提示。
4.6若有记录根据要修改的编号查找要删除的结点并删除记录,若没记录,输出错误提示。
4.7使用函数定义指向结构体变量的指针,找到插入结点,在要插入的结点输入信息并保存。
结束4.8输出功能(void output())使用循环语句对已有的宿舍记录进行逐个读取,按学号为关键字进行冒泡排序,经过n-1趟子排序完成,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数,排序完后按顺序输出所有记录。
5.系统调试5.1主界面5.2创建界面5.3加载界面5.4按姓名查询5.5按学号查询5.6按宿舍号查询5.7修改界面5.8删除界面5.9添加界面5.10输出界面5.11本地数据文件5.12系统分析经过测试,该宿舍管理系统结构清晰,运行时测试也相对简单。
设计的功能可以完全实现,输入的信息也可以正确显示,可以成功地退出程序。
程序运行开始,根据界面提示选择输入,测试对学生信息的增加,删除,查询,修改等功能是否实现及输出相应的信息。
当选择退出程序时,系统有没有正常结束退出程序。
本程序的不足之处在于没有登录程序,这样就没有办法设置用户管理及权限设置。
程序在运行时没有设置清屏程序,以至于屏幕不够简洁。
函数实现的功能也不够全面,在删除,更改等操作中仅以姓名为关键字,有一定的局限性。
6.心得体会通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。
在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。
在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。
当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、更全面。
这次课程设计我做的还不是很完善,因为功能不是很多,如果以后有机会完善的话,应该对管理员和用户登录时做进一步完善。
学生的信息还不够完整,如学生的宿舍长,系别,一些费用以及学生的成绩等待相关详细信息。
在这次课程设计的过程中,我体会到要想开发一个系统软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。
只有思想上清晰了,编程才有意义,否则就是白费力气。
同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。
这次课程设计培养了我的细心和耐性,更树立了一种科学的态度。
7.参考资料[1]田鲁怀.数据结构.北京:电子工业出版社,2010[2]谭浩强.C语言程序设计(第三版).北京:清华大学出版社,2005[3] 刘振安,孙忱,刘燕君.C程序设计课程设计.北京:机械工业出版社,20078.附录源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>typedef struct pnode //结构体定义用于存放学生信息的节点{char name [10]; //姓名char num[16]; //学号char dor[30]; //房号char group[20]; //班级}student;char filename[20]; //文件名FILE *fp; //指向文件的指针void creat() // 创建一个二进制文件用于存放学生数据{ student *person;person=(student *)malloc(sizeof(student)); //为节点分配内存printf("\n 请您输入文件名:\n");scanf("%s",filename);if((fp=fopen(filename,"w+"))==NULL){printf("\n 您没有输入文件名不能找到文件");exit(0);}printf("\n请输入学生的姓名学号房号班级用空格隔开以#结束\n");scanf("%s",person->name);while(strcmp(person->name,"#")) //该循环用于控制学生信息的录入遇#结束{ scanf("%s %s %s",person->num,person->dor,person->group);fprintf(fp,"%-10s%-10s%-10s%-10s\n",person->name,person->num ,person->dor,person->group);scanf("%s",person->name);}fclose(fp);}void readfile() //文件读取函数{ printf("\n请输入文件名:\n");scanf("%s",filename); //此处输入为文件的路径if((fp=fopen(filename,"r+"))==NULL){printf("\n无法打开该文件:\n");exit(0);}fclose(fp);}void output() //输出函数用于输出文件的全部信息{ student *person;long offset1,offset2;char name1[10],name2[10],name3[10];char num1[16],num2[16],num3[16];char dor1[30],dor2[30],dor3[30];char group1[20],group2[20],group3[20];person=(student *)malloc(sizeof(student));if((fp=fopen(filename,"r"))==NULL){printf("\n 无法打开该文件");exit(0);}while(!feof(fp)) //此循环用于对文件数据中关键字学号进行从小到大冒泡排序{ int a,b,c,d; //a为循环结束判定变量 b,c,d用于起泡排序学号交换的替换if((fp=fopen(filename,"r+"))==NULL) //冒泡排序{printf("\n 无法打开该文件");exit(0);}while(!feof(fp)) // 外部循环 {while(!feof(fp)) //内部循环{offset1=ftell(fp); //获取文件内部当前指针位置fscanf(fp,"%s%s%s%s\n",person->name,person->num,person->dor,per son->group);strcpy(name1,person->name);strcpy (num1,person->num);strcpy(dor1,person->dor);strcpy(group1,person->group);if(feof(fp))break; //文件结束跳出循环offset2=ftell(fp); //获取文件内部下一指针位置fscanf(fp,"%s%s%s%s\n",person->name,person->num,person->dor,per son->group);strcpy (name2,person->name);strcpy(num2,person->num);strcpy(dor2,person->dor);strcpy(group2,person->group);b=strlen(num1);c=strlen(num2);d=strcmp(num1,num2);if(b==c&&d>0) //如果学号1大于等于学号2 则交换全部数据{ strcpy(name3,name1);strcpy(name1,name2);strcpy(name2,name3);strcpy(num3,num1);strcpy(num1,num2);strcpy(num2,num3);strcpy(dor3,dor1);strcpy(dor1,dor2);strcpy(dor2,dor3);strcpy(group3,group1);strcpy(group1,group2);strcpy(group2,group3);fseek(fp,offset1,SEEK_SET); //将指针移动offset1个字节strcpy(person->name,name1);strcpy(person->num,num1);strcpy(person->dor,dor1);strcpy(person->group,group1);fprintf(fp,"%-10s%-10s%-10s%-10s\n",person->name,person->num,person->dor,person->group); //排序后写入文件strcpy(person->name,name2);strcpy(person->num,num2);strcpy( person->dor,dor2);strcpy(person->group,group2);fprintf(fp,"%-10s%-10s%-10s%-10s\n",person->name,person->num,pe rson->dor,person->group);//排序后写入文件}fseek(fp,offset2,SEEK_SET);//将文件位置指针从文件头向前移动offset2个字节}rewind(fp); //指向头文件while(!feof(fp)) //此循环用于判断学号是否有序{ offset1=ftell(fp);fscanf(fp,"%s%s%s%s\n",person->name,person->num,person->dor,per son->group);strcpy (num1,person->num);if(feof(fp)){a=1;break;}offset2=ftell(fp);fscanf(fp,"%s%s%s%s\n",person->name,person->num,person->dor,per son->group);strcpy(num2,person->num);b=strlen(num1);c=strlen(num2);d=strcmp(num1,num2);if(b==c&&d<=0)a=1; //若a为1 则有序else{ a=0; //a为0则无序break;}fseek(fp,offset2,SEEK_SET);}if(a==1)break; //a为1 说明学号已经有序跳出循环rewind(fp);}if(a) break; //若a为1,则学号已有序排列,跳出总循环,输出文件}rewind(fp);printf("\n***************************************************** ***********\n");printf("%40s\n","输出的记录如下(已按学号排序)\n");printf("%-20s%-20s%-20s%-20s\n","姓名","学号","房号","班级");while(!feof(fp)) //次循环用于输出文件{fscanf(fp,"%s%s%s%s\n",person->name,person->num,person->dor,per son->group);printf("%-20s%-20s%-20s%-20s\n",person->name,person->num,person->dor,person->group);}fclose(fp);printf("**************************************************** ********\n\n");}void namesearch() // 按姓名搜索函数{ int k=0;char namekey[10];student *person;person=(student *)malloc(sizeof(student));printf("\n 请输入您要查找的姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\n 无法打开文件");exit(0);}while(!feof(fp)){fscanf(fp,"%s %s %s %s\n",person->name,person->num,person->dor, person->group);if(!strcmp(namekey,person->name)){ printf("\n\n 已经为您找到以下是记录:\n\n");printf("%-20s%-20s%-20s%-20s\n","姓名","学号","房号","班级");printf("%-20s%-20s%-20s%-20s\n",person->name,person->num,person ->dor,person->group);k=1;}}if(!k)printf("\n\n 没有关于此姓名的任何信息! \n");fclose(fp);}void numsearch() //按学号搜索函数{ int k=0;char xhkey[16];student *person;person=(student *)malloc(sizeof(student));printf("\n 请您输入需要查找的学号:");scanf("%s",xhkey);if((fp=fopen(filename,"rb"))==NULL){printf("\n 无法打开文件 ");exit(0);}while(!feof(fp)){fscanf(fp,"%s %s %s %s\n",person->name,person->num,person->dor, person->group);if(!strcmp(xhkey,person->num)){ printf("\n\n 已经为您找到以下是记录:\n\n");printf("%-20s%-20s%-20s%-20s\n","姓名","学号","房号","班级");printf("%-20s%-20s%-20s%-20s\n",person->name,person->num,person ->dor,person->group);k=1;}}if(!k)printf("\n\n 没有关于该学号的任何信息\n");fclose(fp);}void dorsearch () //按房号搜索函数{ int k=0;char fhkey[30];student *person;person=(student *)malloc(sizeof(student));printf("\n 请您输入想要查找的房号");scanf("%s",fhkey);if((fp=fopen(filename,"rb"))==NULL){ printf("\n 无法打开文件");exit(0);}while(!feof(fp)){fscanf(fp,"%s %s %s %s\n",person->name,person->num,person->dor, person->group);if(!strcmp(fhkey,person->dor)){ printf("\n\n 已经为您找到以下是记录:\n\n");printf("%-20s%-20s%-20s%-20s\n","姓名","学号","房号","班级");printf("%-20s%-20s%-20s%-20s\n",person->name,person->num,person ->dor,person->group);k=1;}}if(!k)printf("\n\n 没有关于此房号的任何信息\n");fclose(fp);}void add() //插入函数用于像已有文件插入一条新的学生信息记录{ student *person;person=(student *)malloc(sizeof(student));if((fp=fopen(filename,"a"))==NULL){ printf("\n 无法打开文件");exit(0);}printf("\n 请您输入学生姓名学号房号班级 \n");scanf("%s %s %s %s",person->name,person->num,person->dor,per son->group);fprintf(fp,"%-10s%-10s%-10s%-10s\n",person->name,person->num,pe rson->dor,person->group);fclose(fp);}void modify() //更新函数用于修改指定学生姓名的记录{ int k=0;long offset;char namekey[10];student *person;person=(student *)malloc(sizeof(student));printf("\n 请您输入想要更改的学生的姓名 :");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){ printf("\n 无法打开文件"); exit(0);}while(!feof(fp)){ offset=ftell(fp);fscanf(fp,"%s %s %s %s\n",person->name,person->num,person->dor, person->group);if(!strcmp(namekey,person->name)) //比较是否相同如{k=1; break;}}if(k) //相同输出记录并进行修改{ printf("\n 记录输出如下:\n\n");printf("%-20s%-20s%-20s%-20s\n","姓名","学号","房号","班级");printf("%-20s%-20s%-20s%-20s\n",person->name,person->num,person ->dor,person->group);printf("\n 请您输入新的学生姓名学号房号班级:\n");scanf("%s %s %s %s",person->name,person->num,person->dor,person ->group);fseek(fp,offset,SEEK_SET);fprintf(fp,"%-10s%-10s%-10s%-10s\n",person->name,person->num,pe rson->dor,person->group);}elseprintf("\n 没有关于该姓名的任何记录\n");fclose(fp);}void deleted() //删除函数用于删除指定学生姓名的记录{int k=0;char m;long offset;char namekey[10];student *person;person=(student *)malloc(sizeof(student));printf("\n请您输入想要删除的姓名:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\n 无法打开文件 ");exit(0);}while(!feof(fp)) //此循环遍历整个文件查找需要删除的记录{offset=ftell(fp);fscanf(fp,"%s %s %s %s\n",person->name,person->num,person->dor, person->group);if(!strcmp(namekey,person->name)){ k=1; break; }}if(k){ printf("\n 记录输出如下:\n\n");printf("%-20s%-20s%-20s%-20s\n","姓名","学号","房号","班级");printf("%-20s%-20s%-20s%-20s\n",person->name,person->num,person ->dor,person->group); printf("\n 您真的确定要删除?y/n?");scanf("%s",&m);if(m=='y') //删除确认按钮{ fseek(fp,offset,SEEK_SET); //删除记录fprintf(fp,"%-10s%-10s%-10s%-10s\n","","","","");}else rewind(fp);}else printf("\n 没有关于该姓名的任何记录\n");fclose(fp);}void main() //主函数{ int m,flag=1; // m用于控制菜单的选择项 flag 用于控制菜单弹出while(flag){printf("%40s\n","海南大学宿舍管理系统");printf("--------------------------------------------------------------------------------\n")printf("\t\t0 ------------ 创建文件\n");printf("\t\t1 ------------ 打开文件\n");printf("\t\t2 ------------ 姓名查询\n");printf("\t\t3 ------------ 学号查询\n");printf("\t\t4 ------------ 房号查询\n");printf("\t\t5 ------------ 修改记录\n");printf("\t\t6 ------------ 删除记录\n");printf("\t\t7 ------------ 增加纪录\n");printf("\t\t8 ------------ 输出记录\n");printf("\t\t9 ------------ 退出\n");printf("--------------------------------------------------------------------------------\n");printf("\t 请输入0-9选择您的操作:\n");scanf("%d",&m);switch(m){case 0:creat();break;case 1:readfile();break;case 2:namesearch ();break;case 3:numsearch();break;case 4:dorsearch();break;case 5:modify();break;case 6: deleted();break;case 7:add();break;case 8:output();break;case 9:exit(0);default:break;}}}。