C语言课程设计说明书.doc
《C语言课程设计说明书.doc》由会员分享,可在线阅读,更多相关《C语言课程设计说明书.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 面向过程程序设计(C语言)课程设计 设计说明书学生宿舍管理系统起止日期: 2010 年 01 月 10 日 至 2010 年 01 月 17 日学生姓名黄庆清班级计本091班学号成绩指导教师(签字)计算机与通信学院2010年 01 月 20 日学生宿舍管理系统一、 程序设计要求综合运用C语言程序设计课程的主要知识,设计一个用于学生宿舍管理的程序,设计指标由程序的功能要求和技术要求具体说明。1. 功能要求学生宿舍管理程序至少具有以下功能:1) 显示功能:能显示宿舍学生的全部记录,在显示时能提供下列5种显示方式: 按记录创建(学生入住)的顺序显示。 按姓名升序显示。将字符串(姓名)从小到大排列后
2、输出。 按学号升序显示。将字符串(学号)从小到大排列后输出。 按房号升序显示。将字符串(房号)从小到大排列后输出。 班按级号升序显示。将字符串(班级号)从小到大排列后输出。注:“显示顺序”栏的信息不属于记录的信息,它是连续的自然数,若记录个数不变,则“显示顺序”栏的信息不变。2) 修改功能:能修改学生记录除创建顺序以外的信息。让用户输入需要修改的旧记录,再检查该记录是否存在,若存在则用户可对记录进行修改。3) 查询功能:能查询宿舍学生的记录。提供以下5种查询方式。 按姓名查询。用户输入学生姓名,系统则检索记录,找到含有该姓名的全部记录,显示到屏幕上,并计算、显示找到的记录个数。若找不到,则提醒
3、用户:该记录不存在。 按学号查询。原理同上所述。 按房号查询。原理同上所述。 按班级号查询。原理同上所述。 综合查询。用户输入学生的姓名、学号、房号和班级号,系统自动检索,若找到和和用户输入的信息完全一致的记录,则显示到屏幕上。该记录若存在,则是唯一的,这是由入住(新建)功能决定的。4) 删除功能:能以某些方式删除宿舍学生的信息。删除时以记录为单位,既能一次删除一条记录,也能一次删除多条记录。该程序提供以下7种删除方式: 按姓名删除。用户输入学生姓名,系统将含有姓名的所有记录全部删除。 按学号删除。原理同上所述。 按班级号删除。原理同上所述。 按房号删除。原理同上所述。 按创建(入住)顺序删除
4、。用户通过显示功能可获取全部记录对应的创建顺序(创建顺序是升序的连续的自然数)。创建顺序是唯一的。 综合删除。用户输入学生的姓名、班级号、学号和房号,系统检索全部记录,若找到和用户输入的信息吻合的记录,则将该记录删除。若该记录存在,则是唯一的,这是由入住(新建)功能决定的。 全部删除。注:某个或某几个记录被删除后,系统自动调整创建顺序,使创建顺序重新恢复为连续自然数(1,2,3,)。这种调整和学生的入住顺序是一致的。5) 新建(入住)功能:能够曾加学生的记录。在新的学生住到宿舍时,对学生的信息进行登记注册。6) 交换房号:能够交换记录中的任意两个学生的房号,其他信息保持不变。7) 退房功能:这
5、项功能相当于删除学生的记录。用户输入学生的姓名、学号、房号和班级号,若该记录存在即退房。8) 保存功能:没有独立的函数实现此功能,上面的几个功能,例如,新建(入住)、修改功能、交换房号功能、删除功能、退房功能,包含保存功能。9) 退出系统:能很很方便地退出系统。 注:以上17种功能是可以连续实现的,例如新建(入住)功能可以实现连续建立记录直到住房满为止,交换房号功能可以连续进行无数次任意两个学生的房号交换。2. 技术要求一、 每个学生记录包含五项信息:房号、学号、姓名、班级号和创建顺序。二、 学生记录信息以磁盘文件的形式存储。三、 对于学生宿舍管理系统中新建记录、显示、查询、修改、删除、退房、
6、交换房号等功能,要求编写独立的函数或主控函数予以实现,其所属的各项功能尽量由独立的函数实现。四、 以菜单方式实现功能选择控制。五、 本通学生宿舍管理系统能够实现16条记录的管理(当然可以扩充记录的数量的上限,如将16条记录扩充为100条)。二、 程序的功能设计设计学生宿舍管理系统的功能如下图所示:按创建顺序显示删除功能按姓名删除按班级删除询按房号删除按学号删除按创建顺序删除综合删除全部删除学生宿舍管理系统功能框图修改功能显示功能按姓班级号升序显示按姓名升序显示按学号升序显示按房号升序显示查询功能按姓名查询综合查询按班级号查询按房号查询按学号查询入住(新建)功能交换房号功能退房功能各项功能的具体
7、说明如下:1) 显示功能: 按创建顺序显示。创建顺序是连续的自然数,表示记录的创建的先后顺序,也是记录存储在文件中的顺序。 按姓名升序显示。以字符串(姓名)大小为排序标准,将记录升序排列,然后输出到屏幕。 按学号升序显示。以字符串(学号)大小为排序标准,将记录升序排列,然后输出到屏幕。 按房号升序显示。以字符串(房号)大小为排序标准,将记录升序排列,然后输出到屏幕。 按班级号升序显示。以字符串(班级号)大小为排序标准,将记录升序排列,然后输出到屏幕。注:在显示之前,系统自动获取文件中的记录个数,如果记录个数为零,那么提示用户记录为空,并返回主菜单。每完成一次显示操作,系统就自动提供一个菜单,用
8、户可以选择继续进行显示操作(重新选择显示方式)、后退到主菜单或者退出系统。2) 修改功能:要求输入需要修改的记录中的姓名、学号、房号和班级号,然后输入修改后的姓名、学号、房号和班级号。注: 在用户进入修改状态之前,系统自动获取文件中的记录个数,如果记录个数为零,那么提示用户记录为空,并返回主菜单。3) 查询功能: 按姓名查询。用户输入学生姓名,系统对所有记录进行搜索,找到包含该姓名的全部记录,然后输出到屏幕。 按学号查询。用户输入学生学号,系统对所有记录进行搜索,找到包含该学号的全部记录,然后输出到屏幕。 按房号查询。用户输入学生房号,系统对所有记录进行搜索,找到包含该房号的全部记录,然后输出
9、到屏幕。 按班级号查询。用户输入学生班级号,系统对所有记录进行搜索,找到包含该班级号的全部记录,然后输出到屏幕。 综合查询。用户输入学生姓名、学号、房号和班级号,系统对所有记录进行搜索,找到和输入信息完全吻合的记录,然后输出到屏幕。注: 在用户进入查询状态之前,系统自动获取文件中的记录个数,如果记录个数为零,那么提示用户记录为空,并返回主菜单。在以上的五种查询方式中,都会计算找到的记录个数,然后在屏幕上显示。每完成一次查询,系统自动提供一个菜单,用户可以继续查询、返回主菜单或者退出系统。系统在理论上可以连续完成无限次查询。如果找不到符合条件的记录,系统就会给出相应的提示。4) 删除功能:按姓名
10、删除。用户输入学生姓名,系统检索文件中的全部记录,找到包含该信息的全部记录。系统以询问的方式获得用户的确认命令,用户可以选择删除或取消删除。按学号删除。原理同上所述。按房号号删除。原理同上所述。按班级号删除。原理同上所述。按创建顺序删除。原理同上所述。不过,该删除方式与上述4种删除方式有所不同,由于每个记录的创建顺序是各不相同的,所以,只会删除一个记录(前提是符合条件的记录存在)。综合删除。要求用户输入学生的姓名、学号、房号和班级号,系统检索文件中的记录,找到与用户输入信息完全一致的记录(若存在,则只有一个)。系统以询问的方式获取用户的确认命令,以确定是否删除记录。全部删除。将保存在文件中的记
11、录全部删除。注:在用户进入删除状态之前,系统自动获取文件中的记录个数,如果记录个数为零,那么提示用户记录为空,并返回主菜单。某个或某几个记录被删除后,系统自动调整创建顺序,使创建顺序重新恢复为连续自然数(1,2,3,)。这种调整和学生的入住顺序是一致的。该系统提供连续进行删除操作的功能,直至将全部记录删除完毕。所有的删除均为物理删除,即将指定的记录从文件中彻底清除。5) 新建功能:i. 在进入新建记录之前,系统自动获取文件中的记录个数,如果该数量已达到纪录个数的上限,则给出提示住房已满,并自动返回主菜单。ii. 在建立一个记录过程中,系统会逐项提示用户输入学生房号、学号、姓名和班级号。iii.
12、 用户输入完了学生信息后系统会自动检索文件中的记录,如果文件中已经保存着与用户输入的信息完全吻合的记录,则不建立新的记录,并提示用户该记录已存在,然后返回主菜单。iv. 如果该记录不存在,那么给出选择取消或保存以供用户选择。v. 每完成一次新建记录,系统就以询问的方式让用户决定是否新建下一个记录。这样用户可以新建一个记录,也可以连续建立多个记录,直至记录个数达到上限。6) 交换房号:i. 在用户进入交换房号状态之前,系统自动获取文件中的记录个数,如果记录个数小于2,那么向用户给出记录个数,并返回主菜单。ii. 系统逐项提示用户输入学生甲的房号、学号、姓名和班级号,然后自动检索文件中的记录,如果
13、不存在与用户输入信息完全吻合的记录,那么就给出询问。用户可以选择从新输入学生甲的信息,也可以选择退出交换房号的功能,即返回主菜单。iii. 如果与用户输入的学生甲的信息完全吻合的记录存在,那么系统逐项提示用户输入学生乙的房号、学号、姓名和班级号。系统自动检索文件中的记录,如果不存在与用户输入信息完全吻合的记录,那么就给出询问。用户可以选择从新输入学生乙的信息,也可以选择退出交换房号的功能,即返回主菜单。iv. 如果与用户输入的学生乙的信息完全吻合的记录存在,那么系统提示用户是否确实要交换房号。v. 每完成一次交换房号的操作后,系统以询问的方式决定是否进行下面两个学生的房号。因此,系统在理论上可
14、以完成无数次交换房号的操作。7) 退房功能:i. 在用户进入退房房号状态之前,系统自动获取文件中的记录个数,如果记录个数为零,那么提示用户记录为空,并返回主菜单。ii. 如果记录不为空,那么系统逐项提示用户输入学生的姓名、学号、房号和班级号。接着系统检索文件中的记录,若不存在与用户输入的信息完全吻合的记录,则提示用户该记录不存在,并询问是否对下一个学生进行退房操作。若用户选择否,则返回主菜单。iii. 若与用户输入的信息完全吻合的记录存在,系统会提示是否退房。iv. 系统每完成一次退房操作就并询问用户是否对下一个学生进行退房操作。因此,可联系完成多次退房操作直至记录个数为零。若用户选择否,则返
15、回主菜单。v. 某个或某几个记录被删除后,系统自动调整创建顺序,使创建顺序重新恢复为连续自然数(1,2,3,)。这种调整和学生的入住顺序是一致的。三、 程序的数据设计1) 每个学生记录由多个不同的数据项构成,是一个结构体数据,因此需要定义结构体数据类型。每个记录包括的数据项目为:房号、学号、姓名、班级号和创建顺序等。据此定义如下结构体数据类型:struct student/*学生信息结构定义*/ char room_noN,student_IDN,nameN,_classN; unsigned long creation;stuS;2) 使用文件s.db存储数据类型为struct studen
16、t的学生记录数据。四、 程序的函数设计1. 函数功能描述1) main()函数 学生宿舍管理系统主函数,显示问候语,调用主菜单函数。2) main_menu()函数函数原型为void main_menu(),是实现显示主菜单功能的函数,它通过调研各个功能函数实现功能的空制。3) display()函数 函数原型为void display(),是显示学生记录信息的主控函数,它实现显示功能的子菜单显示,并进行不同显示功能的函数调用,以实现程序的显示功能。4) search()函数函数原型为void search (),是查询学生记录的主控函数,它显示查询功能的子菜单,并根据查询要求,进行相应的函数
17、调用,以实现查询的查询功能。5) modify()函数函数原型为void modify(),修改学生记录信息的函数,它实现修改学生记录的功能,具有保存修改之后的数据的功能。6) delect()函数函数原型为void delect(),是删除学生记录的主控函数,它显示删除功能的子菜单,并根据删除要求,并进行相应的函数调用,以实现删除学生记录的功能。7) check_in函数函数原型为void check_in,实现新建学生记录的函数,该函数还具有保存学生记录的功能。8) exchange_room_number()函数函数原型为void exchange_room_number,是实现交换任意
18、两个学生的房号的功能的函数,该函数具有保存交换房号之后的数据的功能。9) check_out函数函数的原型为void check_out,是实现学生退房功能的函数。相当于从文件中删除唯一一个确定的记录。它具有保存学生退房之后的数据的功能。10) sub_menu()函数函数的原型为void sub_menu(),功能是提供选择菜单,并根据用户的选择,实现继续执行、后退到主菜单和退出系统的功能。11) getLogCount(FILE *fp)函数函数原型为unsigned long getLogCount(FILE *fp),功能是获取储存在文件中的记录(结构数组元素)的个数。12) sort
19、ByName()函数函数的原型为void sortByName(),功能是实现对struct student型结构体数组按姓名升序排列操作。13) sortByID()函数函数原型为void sortByID(),功能是对struct student型结构体数组实现按学号升序排列操作。14) sortByRoom()函数函数原型为void sortByRoom(),功能是对sruct student型结构体数组实现按房号升序排列操作。15) sortByClass()函数函数原型为void sortByClass(),功能是对struct student型结构体数组实现按班级号升序排列操作。1
20、6) output()函数函数原型为void output(),它实现对结构体数组的输出功能(系统显示功能的一部分)。如果结构体数组未经排序函数排序,则输出函数output()将结构体数组按创建顺序输出。17) searchByName()函数函数原型为void searchByName(),功能是对结构体数组按姓名搜索。18) searchByStudent_ID()函数函数原型为void searchByStudent_ID(),功能是对结构体数组按学号搜索。19) searchByRoom_no()函数、函数原型为void searchByRoom_no(),功能是对结构体数组按房号搜索
21、。20) searchByClass()函数函数原型为void searchByClass(),功能是对结构体数组按班级号搜索。21) searchComprehensive()函数函数原型为void searchComprehensive(),功能是对结构体数组进行综合搜索。它搜索与用户输入的姓名、学号房号和班级号完全一致的记录。22) delName()函数函数原型为void delName(),功能是对结构数组按姓名实现删除元素的操作。23) delStudent_ID()函数函数原型为void delStudent_ID(),功能是对结构数组按学号实现删除元素的操作。24) del_c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 说明书
限制150内