数据结构课程设计报告宿舍管理系统

合集下载

数据结构课程设计之宿舍管理系统

数据结构课程设计之宿舍管理系统

##大学数据结构课程设计报告题目:宿舍管理查询软件院(系):学生姓名:班级:学号:起迄日期: 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)。

它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。

能有效的帮助学校和老师掌握学生的情况,方便校方管理及学生的日常寝室生活。

通过该系统,管理员用户可以查看学生的基本资料寝室信息等各方面的资料,能够方便的了解学生寝室生活情况。

该管理系统为用户提供了信息录入,数据查询、输出各种信息等。

学生用户可查询寝室一些相关事宜。

另外,协管人员用户还可以对公告栏信息进行添加,更新和删除。

寝室智能管理系统力求给用户方便快捷的途径去管理这些繁琐的数据。

二、系统功能需求分析用户的需求具体体现在各种信息的输入、修改和查询,并能够提供一定的安全保障。

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

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

数据库课程设计——学生宿舍管理系统学生宿舍管理系统是一个在宿舍内运用一套计算机数据库系统来管理宿舍资源的一种系统,其主要有宿舍的床位的记录,宿舍进出情况的记录,以及在宿舍内的电信费用的结算等。

这套系统主要是管理宿舍的资源,是学生在校期间居住环境良好、安全稳定的基础。

该系统主要包括宿舍人员信息,电子证件信息,维修管理,安全管理,电信费用,违规登记,公共活动安排,探访记录等几个主要的模块组成。

宿舍人员信息模块是指向学生宿舍中所有入住学生提供宿舍床位资源申请,记录个人信息,转移床位,离开宿舍等服务。

电子证件信息模块指的是在宿舍内每一位学生进入前,需要出示身份证件如学生证,及其他权威机构发放的个人有效证件,以及学生图书馆的借还书情况等信息的收集。

维修管理模块此模块是收集宿舍内的维修及疏导信息,对宿舍内设备信息的查询,及采购、使用过程的记录;安全管理模块是指在学生入住前及整个住期内宿管部门对宿舍的环境、安全状况及情况的收集记录;电信费用模块此模块是指宿舍内每位学生使用电话费用时必须进行记录;违规登记模块此模块是指对宿舍违反宿管部门要求及学校规章制度情况的记录;公共活动安排模块此模块是指在宿舍内举办的公共活动的记录;探访记录模块是指宿舍内朋友及亲人探访等情况的记录等。

总之,学生宿舍管理系统是一种在宿舍内运用一套计算机数据库系统来对宿舍的人员信息、电子证件信息、维修管理、安全管理、电信费用、违规登记、公共活动安排、探访记录等有效记录及管理的系统。

由于数据库技术的发展,学生宿舍管理系统可以实现快速可靠的资料记录,使资料的维护和查询变得更加便捷和安全。

数据库技术的发展对于学生宿舍管理系统的构建起着至关重要的作用,其实现的高效记录、安全稳定的基本功能,为学生在校期间的居住环境提供了良好的保障。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;}}}。

相关文档
最新文档