C语言课程设计—学生宿舍管理系统设计报告

更新时间:2024-05-05 04:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课 程 设 计 报 告

课程名称 C语言程序设计

课题名称 学生宿舍管理系统

专 业 班 级 学 号 姓 名 指导教师

2012年6月19日

湖南工程学院 课 程 设 计 任 务 书

课程名称 C语言程序设计 课 题 学生宿舍管理系统 专业班级 学生姓名 学 号 指导老师

审 批

任务书下达日期 2012 年 6 月 19 任务完成日期 2012 年 7 月 4 日

一、设计内容与设计要求

1.

设计内容:学生宿舍管理系统设计

涉及的知识点:

①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;

②掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组

与字符串的关系以及字符串的简单处理。

③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。 ④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。

⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。

2. 设计要求:

1) 用C语言实现系统;利用结构体数组实现学生宿舍信息的数据结构设

计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观;各项显示数据均要求以表格的形式输出;在各功能子模块中应设计相应的二级菜单。

2) 建立一个学生宿舍信息数据库,文件名为ssxxk.txt,并从该文件中读取

数据;

3) 学生宿舍管理系统应能提供以下功能:

①系统以菜单方式工作:通过提示用户输入一个数字选项,调用相应的功能函数。

②显示功能:完成全部宿舍信息的显示,显示时按表格的形式,且应有表头;

③追加功能:完成一个(或多个)学生入住宿舍的登记(追加记录),要求在追加过程中有相应的提示信息,完成追加后能重新显示; ④查询功能:要求可选择按指定学号和指定姓名两种方式定位查询,查询的结果要求以表格的形式显示,若查询不到应给出相应的提示信息。 ⑤删除功能:要求可按指定的学号和指定的姓名两种定位方式删除学生在宿舍的记录。

⑥修改功能:要求能按学号或按姓名两种定位方式,且可以按用户要求修改记录中除学号和姓名以外的指定内容,并重新显示。 ⑦)统计模块:能按指定的校区、宿舍栋号、统计入住该栋的学生人数,或统计指定的班级入住某栋的人数,并将统计的结果以及被统计的人员的信息用表格的形式显示; ⑧排序功能:按宿舍类别排序(升序)

⑨要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。

4) 说明:

(1) 要求将修改后的数据写入到一个新的数据文件nwesxxk.txt中。 (2) 对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它

功能。

5) 学生宿舍管理系统采用一个结构体数组,宿舍生信息数据库结构如下:

char ssdh[4]; /*宿舍栋号*/

int fjh; /*房间号*/ long xh /*学号*/ char name[10]; /*姓名*/ char xb[4]; /*性别*/ char bj[12]; /*班级*/ char phone[12]; /*电话号码*/ int xq; /*校区*/ int sslb; /*宿舍类别*/

注意:学号不能重复且不少于4位数字,各项字符串的长度要求在4~10之间,数据库应有10条或多于10条以上的记录。 6) 要求:

⑴ 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;

⑵ 要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序; ⑶ 设计报告的完整格式应包括以下部分的内容:

① 系统设计总体思路; ② 系统的主要功能;

③ 系统功能模块的划分(要求画出总体模块框图);

④ 主要功能的实现和各个程序模块说明(每个功能模块的框图、系

统主模块的流程图,各个功能模块至少要有一个主要的流程图); ⑤ 程序调试过程及各模块调试中相应的部分截图; ⑥ 课程设计总结与体会(不少于500字)。 ⑦ 课程设计参考文献; ⑧ 程序清单;

⑷ 课程设计周内,凡规定的集中上机时间必须到机房调试程序;

⑸ 设计完成后必须参加答辩,并按要求演示程序,提交课程设计报告和有关电子文档。 7)分组及安排

所选题目根据学生班号和学号确定,(班号+学号)% 6+1。如你的班号为01班、学号为01,则所选题目号为:(1+1)%6+1=3,即课题号为3。 8)成绩评定

①程序设计方案是否合理;②程序设计是否正确;③调试结果;④设计说明书的质量高低;⑤答辩时回答问题情况;⑥课程设计周表现情况;总评成绩记入“课程设计成绩评分表”。

二、进度安排

第 19 周 星期一 8:00——12:00 讲课、布置任务

星期二 8:00——12:00 机房上机调试程序 星期三 14:00——18:00 机房上机调试程序 星期四 14:00——18:00 机房上机调试程序、答辩

附:课程设计报告排版、打印和装订要求

1. 课程设计报告装订顺序:封面、任务书、目录、正文、附件、评分表。按A4大小的纸张排版和打印。 2. 设计报告的页码从目录之后开始使用;

3. 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22磅。正文中程序清单(英文)用英文字体Times New Roman,单倍行间距。

4. 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试(各模块至少有一个程序调试的截图);五、总结(不少于500字);六、参考文献;t、附件(包含所有程序的原代码,且程序中应有必要的注释)。八.正文总字数要求在5000字以上(不含程序原代码)。 5.设计报告中任务书和评分表不需重新排版。

目 录

一、系统总体设计思路: ............................................ 1

Ⅰ.总体功能设计: .............................................. 1 Ⅱ.各模块功能设计: ............................................ 1 二.系统总体模块框图: .............................................. 3 三、系统总流程图及各模块流程图 .................................... 4

Ⅰ.总流程图: ................................................... 4 Ⅱ.各模块流程图: ............................................... 6 四、系统各模块主要功能的实现 ..................................... 12

I.显示模块 .................................................... 12 II.追加模块 ................................................... 12 III.修改模块 ................................................. 12 IV.删除模块 .................................................. 13 V.查询模块 .................................................... 13 VI.统计模块: ................................................ 13 VII.排序模块: ............................................... 14 五.程序调试 ..................................................... 14

I.显示模块: .................................................. 14 II.追加程序: ................................................ 16 III.修改程序: ................................................ 20 IV.删除模块: ................................................ 23 V.查询模块: ................................................. 26 VI.统计模块: ................................................ 28 VII.排序模块: ............................................... 31 VIII.退出模块: .............................................. 32 六.总结与体会 .................................................... 33 七.参考文献: ................................................... 34 八.附件 ......................................................... 34

一、系统总体设计思路:

Ⅰ.总体功能设计:

学生宿舍管理系统存放了每个学生的学号、姓名、性别、班级、电话号码

及所住的宿舍栋号、房间号、校区、宿舍类别的数据库。每个人的信息定义在一个结构体变量中。其结构如下:

系统通过显示程序、追加程序、查询程序、删除程序、修改程序、统计程序、排序程序来实现学生信息管理系统的显示功能、追加功能、查询功能、删除功能、修改功能、统计功能、排序功能。各个功能的调用通过主函数中的switch语句来实现。

switch(sele) {

case 1:Disp();break;(显示模块) case 2:Appe();break;(追加模块) case 3:Modi();break;(修改模块) case 4:Dele();break;(删除模块) case 5:Query();break;(查询模块) case 6:Sort(); break;(排序模块) case 7:Total(); break;(统计模块) case 8:Quit(); sele=0;break;(退出模块) }

Ⅱ.各模块功能设计:

ⅰ.显示模块:

通过设计一个模块,来实现学生信息的显示。以便于浏览学生的信息。 ⅱ.追加模块:

通过设计一个模块,当要加入新的学生的信息的时候,来实现新学生信息的加入。

1

iii.查询模块:

通过设计一个模块,这个模块可以按学生的学号、姓名来查询学生所有的信息,并显示学生的所有信息,以便查询者阅读。

iv.删除模块:

通过设计一个模块,当输入一个学生的学号或者姓名的时候,可以通过这个

模块,将输入学号或者姓名的学生的所有信息从数据库中删除出去。以后,这个学生的信息将不再会出现再数据库中。

v.修改模块:

通过设计一个模块,当某个人的信息发生变化的时候,可以通过修改模块来进行修改。修改模块时一具有多级子菜单的摸块。使用十分的方便、灵活。

vi.统计模块:

通过设计一个模块,能按指定的校区、宿舍栋号统计入住该栋的学生人数,或统计制指定的班级入住某栋的人数,并能将统计的结果以及统计的人员的信息用表格显示出来,是浏览者一目了然。

vii.排序模块:

通过设计一个模块,来实现数据库的信息按宿舍类别的升序排列。并显示所有信息,使浏览者一目了然。

2

二.系统总体模块框图:

主函数 显示模块追加模块修改模块删除模块查询模块统计模块排序模块退出模块 退出 3

三、系统总流程图及各模块流程图

Ⅰ.总流程图:

4

开始 进入系统 输入 Sele=8 Sele=? Sele=1 Sele=5 Sele=2 Sele=3 Sele=4 Sele=6 Sele=7 追加程序修改程序删除程序查询程序统计程序排序程序 输出 结束 5

显示程序 退出程序

Ⅱ.各模块流程图:

i.显示模块:

进入 输入选项M=? M=1 M=2 输出所有信息 退出 ii.追加模块:

6

进入 输入选项 num=? num=1 num=2 输入信息 输出所有信息 是 是否继续追加 否 退出

iii.修改模块:

7

进入 输入选项 num=3 num=?按学号查找并修改num=1 按姓名查找并修改num=2 t=8 t=? t=1 t=2 t=3 t=4 t=5 t=6 t=7 号修改宿舍栋修改房间号修改性别修改班级 修改电话号码别修改校区修改宿舍类 输入信息 输出所有信息 选择 是 是否继续修改? 否 退出程序

8

iv.删除模块:

进入 输入选项要查找的信息 查找要删除的学生信息 flag=0 flag=? flag=1 删除学生信息 输出删除后的学生信息 查无此人 是 是否继续删除 否 退出

v.查询模块:

9

进入 输入选项 num=1 num=2 num=3 号按学号查找号 查找学生 按姓名查找flag=? flag=1 flag=0 输出学生信息 查无此人!!! 是 是否继续查询 否 退出

vi.统计模块:

10

进入 输入选项 t=1 t=2 t=3 该栋入住学生人数按校区、宿舍栋号统计人数按班级统计入住某栋的 输入统计的人数和这些学生的信息 是 是否继续统计 否 退出

vii.排序模块:

11

进入 num=1 输入选项 按宿舍类别进行升序排列 输出排序后的学生信息 num=2 退出

四、系统各模块主要功能的实现

I.显示模块

程序通过一个printf函数把输出信息的表头打印出来,再通过一个for循环把每一个学生的信息输出,在输出的时候,通过调用Print函数(一个专门用来输出的函数,且是用指向结构体数组的指针输出学生信息)输出所有学生信息。

II.追加模块

结构体中间的成员之间用空格来隔开输入,通过回车键来实现追加。且追加一个学生信息后可选择继续追加或退出。

III.修改模块

程序定义一个变量num1,来确定到底输入的是学号还是姓名。通过一个for循环来确定数据库到底是否含有此人的信息。如果含有此人的信息,则把此人的序号赋值给变量k,把标识变量flag赋值为1;如果不含有此人信息,则标识变

12

量flag值仍为0。再通过if语句,如果标识变量flag为0,则打印“查无此人!!!”。如果flag的值为1怎进入下一级菜单,通过switch语句来选择是修改这个人的宿舍栋号、房间号、性别、班级、电话号码、校区还是宿舍类别。修改完成后通过调用Print函数输出修改后的新的所有学生信息。每次修改成功之后可通过选择“是”或者“否”来选择是否继续修改学生信息。

IV.删除模块

程序通过定义一个变量num,来确定输入到底是学号还是姓名,或者退出删除模块。通过一个for循环来确定数据库到底是否含有此人的信息。如果含有此人的信息,则通过一个for循环,把这个以后的信息依次前推来覆盖这个人的信息,而实现此人信息的删除。如果不含此人的信息,则打印“查无此人!!!”。每次删除结束之后通过选择“是”或者“否”来选择是否继续删除学生信息。

V.查询模块

程序通过输入一个变量num来实现是按学号还是按姓名来查找,或者退出查询。当输入完学号或者姓名的时候,再通过一个for循环来实现此人信息的查找。当含有这个人的信息的时候,把标识变量flag赋值为1,并立即输出此人信息。如果不含这个人的信息的时候,标识变量flag仍为0。再通过一个if 语句,如果标识变量flag为0,则打印“查无此人!!!”。用while循环保证程序在模块中查询。每次查询结束之后通过选择“是”或者“否”来选择是否继续查询学生信息。

VI.统计模块:

程序通过输入一个变量t来选择是按校区、宿舍栋号统计该栋入住学生人数还是按班级统计入住某栋的人数,或者退出统计模块。再通过一个for循环来实现目标信息的查找。定义标识变量flag,在for循环查找信息前赋值为零。当每找到一个目标信息的时,把标识变量flag赋值为1,用变量num累加人数并并把此人信息赋给另一个结构体成员。如果不含这个人的信息的时,标识变量flag仍为0。最后输出统计的人数并通过for语句输出这些学生的信息,再通过

13

一个if 语句,如果标识变量flag为0,则打印出“查无此信息!!!”。每次统计结束之后可通过选择“是”或者“否”来选择是否继续统计其他学的信息信息。

VII.排序模块:

程序运用起泡排序方法(从第一个数开始依次对相邻两数进行比较,如次序对则不进行任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比较后,最大数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍后就可以完成排序。)对所有学生按宿舍类别进行升序排列,并通过调用Print函数输出排序后的数据。

五.程序调试

如果运行程序,将出现如下的界面,即程序主菜单:

I.显示模块:

输入1,并按回车键,程序将进入显示模块的菜单(二级菜单),界面如下:

14

如果输入1并按回车,将显示出所有学生的所有信息,其输出界面如下:

如果按任意键将退出,退回主菜单:

15

II.追加程序:

在主菜单下输入2并回车,将进入追加程序菜单,其界面如下:

输入2并回车,将开始进行追加学生信息:

16

输入学生信息:

输入学生信息后,按回车将自动显示出追加的及原来的所有学生信息,并显示出是否继续追加学生信息,其界面如下:

17

输入1并按回车,即选择继续追加学生信息,将出现追加程序的菜单:

输入另一个学生的信息并回车,将自动显示出所有学生的信息,其界面如下:

18

输入2并按回车,将显示出提示语“按任意键返回主菜单”,界面如下:

按任意键将退出追加程序返回主菜单。

19

III.修改程序:

在主菜单下输入3并回车进入修改程序下菜单:

输入1并回车,即按学号查找并修改,程序将会提示输入学号:

输入学号,如2112,回车,显示修改程序的下一级菜单,即修改选项:

20

输入选择项,如2,将会提示进入下一步,即修改信息:

输入修改信息并回车,将显示出经修改后所有学生的新信息,并出现提示语句选项,是否继续修改,其界面如下:

21

输入1并回车,即选择继续修改,将进入修改程序下的主菜单:

输入2并回车,即选择按姓名查找并修改。修改完成后选择继续修改,并按学号查找并修改,随便输入一个学号(即数据库不存在的学生信息),将会显示提示信息——查无此人!!!其界面如下:

22

输入2并回车,即选择退出修改程序,程序将完成修改并返回主菜单。

IV.删除模块:

在主菜单下输入2并回车,将进入删除程序的菜单下,其界面如下:

输入1并回车,即选择按学号查找并删除,并输入一个学号回车,如输入

23

2112,将自动显示出删除后新的学生信息,即不在存在学号为2112的学生信息:

按任意键将进入下一步,即选择是否继续修改:

输入1并回车,即选择继续修改,将显示出删除程序的选择菜单:

24

输入2,即按姓名查找并修改,随意输入一个姓名,即数据库不存在的学生信息,回车将显示出提示信息:查无结果! 其界面如下:

25

V.查询模块:

在主菜单下输入5并回车,进入查询程序的选择菜单下,其界面如下:

输入1并回车,即选择按学号查询,将出现提示语句,提示使用者输入学生学号。输入一个学生学号,如2011,回车,将显示出此学生的所有信息。并且提示使用者是否选择继续查询,其界面如下:

26

选择继续查询将回到查询程序的选择菜单下。在查询程序的菜单下输入2并回车,即选择按姓名查询,输入一个学生姓名并回车,如司马懿(追加的学生信息),将出现此人的所有信息,即也证明追加学生信息成功:

选择继续查询,并且按学号查询(或按姓名查询),随便输入一个数据,即数据

27

库不存在的,如学号8970,将出现提示语句----查无此人!!!

选择“否”,即不继续查询,将完成信息的查询并退出查询程序返回主菜单。

VI.统计模块:

在主菜单下输入6并回车,将进入统计模块的菜单下:

28

输入1,即按校区、宿舍栋号统计该栋入住学生人数,并提示使用者输入相关信息:

输入相关信息,如0,A(中间用空格),回车将统计出人数和显示出这些学生的所有信息,并提示使用者下一步是否继续统计其他的数据:

选择继续统计将返回统计程序下的菜单,输入2并回车,即选择按班级统计入住某栋的人数,并提示输入相关信息:

29

输入相关信息并回车,将显示出统计出的人数和这些学生的所有信息:

选择继续统计返回菜单,选择1、2任一项,如选择1,即选择按班级统计入住某栋的人数,随意输入数据,即数据库不存在的,回车,将显示提示语句---查无此信息!其界面如下:

30

选择“否”完成统计返回主菜单。

VII.排序模块:

在主菜单下输入7并回车进入排序程序下的菜单:

输入2并回车,即选择按宿舍类别排列(升序),将显示排序后的所有学生信息:

31

按任意键返回主菜单。

VIII.退出模块:

在主菜单下输入8并回车将显示出退出程序的界面:

继续按任意键将退出整个程序,即退出学生宿舍管理系统。

32

本文来源:https://www.bwwdw.com/article/x9fg.html

Top