1、课 程 设 计 报 告课程名称 C语言程序设计 课题名称 学生宿舍管理系统 专 业 班 级 学 号 姓 名 指导老师 6月19日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 学生宿舍管理系统 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 年 6 月 19 日任务完成日期 年 7 月 4 日一、设计内容和设计要求1 设计内容:学生宿舍管理系统设计包含知识点:掌握并熟练利用C语言基础数据类型和多种表示式,程序步骤控制语句;掌握数组基础概念。熟练掌握一维数组、二维数组应用、掌握字符数组和字符串关系和字符串简单处理。掌握函数定义,函数返回值,函数调用,函数形式
2、参数和实际参数之间关系;掌握变量作用域和生存期,了解函数作用域。掌握结构体概念,结构体类型定义,结构体变量定义和初始化,结构体组员表示,结构体变量赋值含义,结构体和指针、函数关系。掌握文件、文件类型指针基础概念,熟练掌握文件打开和关闭和文件建立、读写等相关操作。2 设计要求:1) 用C语言实现系统;利用结构体数组实现学生宿舍信息数据结构设计;系统各个功效模块要求用函数形式实现;应提供一个界面来调用各个功效,调用界面和各个功效操作界面应尽可能清楚美观;各项显示数据均要求以表格形式输出;在各功效子模块中应设计对应二级菜单。2) 建立一个学生宿舍信息数据库,文件名为ssxxk.txt,并从该文件中读
3、取数据;3) 学生宿舍管理系统应能提供以下功效:系统以菜单方法工作:经过提醒用户输入一个数字选项,调用对应功效函数。显示功效:完成全部宿舍信息显示,显示时按表格形式,且应有表头;追加功效:完成一个(或多个)学生入住宿舍登记(追加统计),要求在追加过程中有对应提醒信息,完成追加后能重新显示;查询功效:要求可选择按指定学号和指定姓名两种方法定位查询,查询结果要求以表格形式显示,若查询不到应给出对应提醒信息。删除功效:要求可按指定学号和指定姓名两种定位方法删除学生在宿舍统计。修改功效:要求能按学号或按姓名两种定位方法,且能够按用户要求修改统计中除学号和姓名以外指定内容,并重新显示。)统计模块:能按指
4、定校区、宿舍栋号、统计入住该栋学生人数,或统计指定班级入住某栋人数,并将统计结果和被统计人员信息用表格形式显示;排序功效:按宿舍类别排序(升序)要求在删除模块、修改模块和查询模块中若找不到所需统计时,系统设计中应有一定提醒信息。4) 说明:(1) 要求将修改后数据写入到一个新数据文件nwesxxk.txt中。(2) 对系统有爱好同学能够在实现基础要求基础上,完善系统其它功效。5) 学生宿舍管理系统采取一个结构体数组,宿舍生信息数据库结构以下:char ssdh4; /*宿舍栋号*/ int fjh; /*房间号*/ long xh /*学号*/ char name10; /*姓名*/ char
5、 xb4; /*性别*/ char bj12; /*班级*/ char phone12; /*电话号码*/ int xq; /*校区*/ int sslb; /*宿舍类别*/注意:学号不能反复且不少于4位数字,各项字符串长度要求在410之间,数据库应有10条或多于10条以上统计。6) 要求: 要求每个学生必需独立思索,认真并按时完成本课程设计所包含全部内容; 要求学生必需根据课程设计汇报完整格式说明设计内容,设计任务分析过程和算法,给出程序步骤图和全部源程序; 设计汇报完整格式应包含以下部分内容: 系统设计总体思绪; 系统关键功效; 系统功效模块划分(要求画出总体模块框图); 关键功效实现和各
6、个程序模块说明(每个功效模块框图、系统主模块步骤图,各个功效模块最少要有一个关键步骤图); 程序调试过程及各模块调试中对应部分截图; 课程设计总结和体会(不少于500字)。 课程设计参考文件; 程序清单; 课程设计周内,凡要求集中上机时间必需到机房调试程序; 设计完成后必需参与答辩,并按要求演示程序,提交课程设计汇报和相关电子文档。7)分组及安排所选题目依据学生班号和学号确定,(班号+学号)% 6+1。如你班号为01班、学号为01,则所选题目号为:(1+1)%6+13,即课题号为3。8)成绩评定程序设计方案是否合理;程序设计是否正确;调试结果;设计说明书质量高低;答辩时回复问题情况;课程设计周
7、表现情况;总评成绩记入“课程设计成绩评分表”。二、进度安排第 19 周 星期一 8:0012:00 讲课、部署任务星期二 8:0012:00 机房上机调试程序星期三 14:0018:00 机房上机调试程序星期四 14:0018:00 机房上机调试程序、答辩 附:课程设计汇报排版、打印和装订要求1. 课程设计汇报装订次序:封面、任务书、目录、正文、附件、评分表。按A4大小纸张排版和打印。 2. 设计汇报页码从目录以后开始使用;3. 正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22磅。正文中程序清单(英文)用英文字体Times New Roman,单倍行间距。 4
8、. 正文内容:一、课题关键功效;二、课题功效模块划分(要求画出模块图);三、关键功效实现(最少要有一个关键模块步骤图);四、程序调试(各模块最少有一个程序调试截图);五、总结(不少于500字);六、参考文件;t、附件(包含全部程序原代码,且程序中应有必需注释)。八.正文总字数要求在5000字以上(不含程序原代码)。5设计汇报中任务书和评分表不需重新排版。目 录一、系统总体设计思绪:1.总体功效设计:1.各模块功效设计:1二.系统总体模块框图:3三、系统总步骤图及各模块步骤图4.总步骤图:4.各模块步骤图:6四、系统各模块关键功效实现12I.显示模块12II.追加模块12III修改模块12IV删
9、除模块13V.查询模块13VI统计模块:13VII排序模块:14五程序调试14I.显示模块:14II追加程序:16III.修改程序:20IV删除模块:23V查询模块:26VI统计模块:28VII排序模块:31VIII退出模块:32六.总结和体会33七参考文件:34八附件34一、系统总体设计思绪:.总体功效设计: 学生宿舍管理系统存放了每个学生学号、姓名、性别、班级、电话号码及所住宿舍栋号、房间号、校区、宿舍类别数据库。每个人信息定义在一个结构体变量中。其结构以下:系统经过显示程序、追加程序、查询程序、删除程序、修改程序、统计程序、排序程序来实现学生信息管理系统显示功效、追加功效、查询功效、删除
10、功效、修改功效、统计功效、排序功效。各个功效调用经过主函数中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;(退出模块).各模块功效设计:.显示模块:经过设
11、计一个模块,来实现学生信息显示。方便于浏览学生信息。.追加模块:经过设计一个模块,当要加入新学生信息时候,来实现新学生信息加入。iii.查询模块:经过设计一个模块,这个模块能够按学生学号、姓名来查询学生全部信息,并显示学生全部信息,方便查询者阅读。 iv.删除模块: 经过设计一个模块,当输入一个学生学号或姓名时候,能够经过这个模块,将输入学号或姓名学生全部信息从数据库中删除出去。以后,这个学生信息将不再见出现再数据库中。v.修改模块:经过设计一个模块,当某个人信息发生改变时候,能够经过修改模块来进行修改。修改模块时一含有多级子菜单摸块。使用十分方便、灵活。vi统计模块:经过设计一个模块,能按指
12、定校区、宿舍栋号统计入住该栋学生人数,或统计制指定班级入住某栋人数,并能将统计结果和统计人员信息用表格显示出来,是浏览者一目了然。 vii.排序模块:经过设计一个模块,来实现数据库信息按宿舍类别升序排列。并显示全部信息,使浏览者一目了然。二.系统总体模块框图: 主函数显示模块追加模块查询模块删除模块排序模块退出模块统计模块退出修改模块三、系统总步骤图及各模块步骤图.总步骤图:进入系统输入Sele=?追加程序删除程序查询程序统计程序显示程序退出程序输出Sele=8Sele=4Sele=2Sele=5Sele=7Sele=1排序程序Sele=6修改程序Sele=3开始结束.各模块步骤图:i.显示模
13、块:进入输入选项xuanxM=?输出全部信息退出M=1M=2ii.追加模块:进入输入选项num=?输入信息输出全部信息退出num=2num=1是否继续追加否是iii.修改模块:进入输入选项t=?修改宿舍栋号修改性别修改电话号码修改校区退出程序输入信息t=8t=3t=1t=7修改宿舍类别t=6修改房间号t=2修改班级num=??num=3按学号查找并修改按姓名查找并修改num=1num=2输出全部信息t=4t=5选择是否继续修改?是否iv.删除模块:进入输入选项要查找信息查找要删除学生信息删除学生信息输出删除后学生信息是否继续删除退出查无此人flag=?否是flag=0flag=1v.查询模块:
14、进入输入选项按学号查找号按姓名查找号查找学生num=1num=3num=2flag=?是否继续查询查无此人!flag=1输出学生信息flag=0退出是否vi.统计模块:进入输入选项按校区、宿舍栋号统计该栋入住学生人数按班级统计入住某栋人数输入统计人数和这些学生信息是否继续统计退出否是t=1t=2t=3vii.排序模块:进入输入选项按宿舍类别进行升序排列输出排序后学生信息退出num=2num=1四、系统各模块关键功效实现I.显示模块程序经过一个printf函数把输出信息表头打印出来,再经过一个for循环把每一个学生信息输出,在输出时候,经过调用Print函数(一个专门用来输出函数,且是用指向结构
15、体数组指针输出学生信息)输出全部学生信息。II.追加模块结构体中间组员之间用空格来隔开输入,经过回车键来实现追加。且追加一个学生信息后可选择继续追加或退出。III修改模块程序定义一个变量num1,来确定到底输入是学号还是姓名。经过一个for循环来确定数据库到底是否含有此人信息。假如含有此人信息,则把此人序号赋值给变量k,把标识变量flag赋值为1;假如不含有此人信息,则标识变量flag值仍为0。再经过if语句,假如标识变量flag为0,则打印“查无此人!”。假如flag值为1怎进入下一级菜单,经过switch语句来选择是修改这个人宿舍栋号、房间号、性别、班级、电话号码、校区还是宿舍类别。修改完
16、成后经过调用Print函数输出修改后新全部学生信息。每次修改成功以后可经过选择“是”或“否”来选择是否继续修改学生信息。IV删除模块程序经过定义一个变量num,来确定输入到底是学号还是姓名,或退出删除模块。经过一个for循环来确定数据库到底是否含有此人信息。假如含有此人信息,则经过一个for循环,把这个以后信息依次前推来覆盖这个人信息,而实现此人信息删除。假如不含此人信息,则打印“查无此人!”。每次删除结束以后经过选择“是”或“否”来选择是否继续删除学生信息。V.查询模块程序经过输入一个变量num来实现是按学号还是按姓名来查找,或退出查询。当输入完学号或姓名时候,再经过一个for循环来实现此人
17、信息查找。当含有这个人信息时候,把标识变量flag赋值为1,并立即输出此人信息。假如不含这个人信息时候,标识变量flag仍为0。再经过一个if 语句,假如标识变量flag为0,则打印“查无此人!”。用while循环境保护证程序在模块中查询。每次查询结束以后经过选择“是”或“否”来选择是否继续查询学生信息。VI统计模块:程序经过输入一个变量t来选择是按校区、宿舍栋号统计该栋入住学生人数还是按班级统计入住某栋人数,或退出统计模块。再经过一个for循环来实现目标信息查找。定义标识变量flag,在for循环查找信息前赋值为零。当每找到一个目标信息时,把标识变量flag赋值为1,用变量num累加人数并并
18、把此人信息赋给另一个结构体组员。假如不含这个人信息时,标识变量flag仍为0。最终输出统计人数并经过for语句输出这些学生信息,再经过一个if 语句,假如标识变量flag为0,则打印出“查无此信息!”。每次统计结束以后可经过选择“是”或“否”来选择是否继续统计其它学信息信息。VII排序模块:程序利用起泡排序方法(从第一个数开始依次对相邻两数进行比较,如次序对则不进行任何操作;如次序不对则使这两个数交换位置。第一遍(N-1)次比较后,最大数已放在最终,第二遍只需考虑(N-1)个数,以这类推直到第(N-1)遍后就能够完成排序。)对全部学生按宿舍类别进行升序排列,并经过调用Print函数输出排序后数
19、据。五程序调试假如运行程序,将出现以下界面,即程序主菜单:I.显示模块:输入1,并按回车键,程序将进入显示模块菜单(二级菜单),界面以下:假如输入1并按回车,将显示出全部学生全部信息,其输出界面以下:假如按任意键将退出,退回主菜单:II追加程序:在主菜单下输入2并回车,将进入追加程序菜单,其界面以下:输入2并回车,将开始进行追加学生信息:输入学生信息:输入学生信息后,按回车将自动显示出追加及原来全部学生信息,并显示出是否继续追加学生信息,其界面以下:输入1并按回车,即选择继续追加学生信息,将出现追加程序菜单:输入另一个学生信息并回车,将自动显示出全部学生信息,其界面以下:输入2并按回车,将显示
20、出提醒语“按任意键返回主菜单”,界面以下:按任意键将退出追加程序返回主菜单。III.修改程序:在主菜单下输入3并回车进入修改程序下菜单:输入1并回车,即按学号查找并修改,程序将会提醒输入学号:输入学号,如2112,回车,显示修改程序下一级菜单,即修改选项:输入选择项,如2,将会提醒进入下一步,即修改信息:输入修改信息并回车,将显示出经修改后全部学生新信息,并出现提醒语句选项,是否继续修改,其界面以下:输入1并回车,即选择继续修改,将进入修改程序下主菜单:输入2并回车,即选择按姓名查找并修改。修改完成后选择继续修改,并按学号查找并修改,随便输入一个学号(即数据库不存在学生信息),将会显示提醒信息
21、查无此人!其界面以下:输入2并回车,即选择退出修改程序,程序将完成修改并返回主菜单。IV删除模块:在主菜单下输入2并回车,将进入删除程序菜单下,其界面以下:输入1并回车,即选择按学号查找并删除,并输入一个学号回车,如输入2112,将自动显示出删除后新学生信息,即不在存在学号为2112学生信息:按任意键将进入下一步,即选择是否继续修改:输入1并回车,即选择继续修改,将显示出删除程序选择菜单:输入2,即按姓名查找并修改,随意输入一个姓名,即数据库不存在学生信息,回车将显示出提醒信息:查无结果! 其界面以下:V查询模块:在主菜单下输入5并回车,进入查询程序选择菜单下,其界面以下:输入1并回车,即选择
22、按学号查询,将出现提醒语句,提醒使用者输入学生学号。输入一个学生学号,如,回车,将显示出此学生全部信息。而且提醒使用者是否选择继续查询,其界面以下:选择继续查询将回到查询程序选择菜单下。在查询程序菜单下输入2并回车,即选择按姓名查询,输入一个学生姓名并回车,如司马懿(追加学生信息),将出现此人全部信息,即也证实追加学生信息成功:选择继续查询,而且按学号查询(或按姓名查询),随便输入一个数据,即数据库不存在,如学号8970,将出现提醒语句-查无此人!选择“否”,即不继续查询,将完成信息查询并退出查询程序返回主菜单。VI统计模块:在主菜单下输入6并回车,将进入统计模块菜单下:输入1,即按校区、宿舍
23、栋号统计该栋入住学生人数,并提醒使用者输入相关信息:输入相关信息,如0,A(中间用空格),回车将统计出人数和显示出这些学生全部信息,并提醒使用者下一步是否继续统计其它数据:选择继续统计将返回统计程序下菜单,输入2并回车,即选择按班级统计入住某栋人数,并提醒输入相关信息:输入相关信息并回车,将显示出统计出人数和这些学生全部信息:选择继续统计返回菜单,选择1、2任一项,如选择1,即选择按班级统计入住某栋人数,随意输入数据,即数据库不存在,回车,将显示提醒语句-查无此信息!其界面以下:选择“否”完成统计返回主菜单。VII排序模块:在主菜单下输入7并回车进入排序程序下菜单:输入2并回车,即选择按宿舍类
24、别排列(升序),将显示排序后全部学生信息:按任意键返回主菜单。VIII退出模块:在主菜单下输入8并回车将显示出退出程序界面:继续按任意键将退出整个程序,即退出学生宿舍管理系统。六.总结和体会邓小平说过“实践是检验真理唯一标准”。经过几天课程设计,经过实践来了解和巩固理论知识,使我对C语言程序设计有了一个愈加深入认识,从刚开始初略了解到有了比较深入认识,能够比较灵活利用。C语言是一门比较灵活、有趣而且实践性很强课程,单从理论课上是难以领会到它精髓,我们只有从它实践利用中,才能体会到了学习C语言乐趣和好处。在课程设计这段时间里,我学到了很多东西,同时也使我对以前学东西有了一个更深更透彻了解。比如:
25、能够灵活利用循环,switch语句,结构体定义、引用、使用,指针定义、使用等。即使对C语言编程还有很多不明白,但这段时间我真获易匪浅,原来理论课上部分没弄懂知识点经过上机实践差不多全部弄懂了。课程设计也就是学以致用嘛,让自己了解自己所学怎样用于实际应用中。正所谓实践出真知,在实践中我们才能发觉自己所存在问题和不足。在编程过程中总是出现这个或那个问题,比如说总是在scanf语句中少掉地址符“&”,最终造成程序无法运行。这也源于自己平时没养成好习惯,初心大意吧,以后得多多注意啊。在编程过程出现很多问题是免不了,不过还好最终经过和同学讨论或请教老师全部一一处理了。为了和同学讨论处理问题,我甚至放弃了
26、使用自己电脑而去电子阅览室上机编程。在这次课程设计中,我再一次深深地体会到了了和她人合作交流关键性,正所谓“众人拾柴火焰高”。虽说每个人独立编程,但总少不了碰到问题,碰到问题就得处理啊。在和同学交流讨论中,取长补短,不仅她人帮我处理了问题,一样我也帮她人处理了问题。我感觉自己程序还算编得不错,清楚美观,还很多特色。为了美观我特意把全部界面上菜单调到了中间。我自己定义了一个函数用于输出数据,而且是经过指针输出。所以说整个程序所学知识差不多我全部用到了,用些知识可能不需要,但我还是想措施把它用进去,表现它作用。可是遗憾是最终程序经过我修修改改,最终答辩却出现了部分问题,有些不能运行。不过没什么,现
27、在问题已经处理了,答辩出问题了,又何须在意那个结果呢?应该看重是整个过程。即使课程设计很复杂,枯燥乏味,但我从没想到过放弃。高考全部经历过来了,这又算得了什么呢?碰到困难时,不要轻言放弃,有毅力能做好事情。当然c语言课程设计确实极难,不过世上无难事只怕有心人,紧要关头不放弃,绝望就会变成期望。任何困难全部只不过是纸老虎,相信自己就一定能成功。课程设计也就是学以致用嘛,让自己了解自己所学怎样用于实际应用中。正所谓实践出真知,在实践中我们才能发觉自己所存在问题和不足。C语言学习更是为我们以后学习微机原理和单片机原理奠定了基础。我们专业是电子科学和技术,关键是跟电子产品打交道,后面用到C语言地方还有
28、很多,所以说,学好C语言,为我们以后专业知识学习有很大好处。在学习C语言中更使我体会到了学习计算机技术乐趣,我将愈加努力多学,学好计算机技术。七参考文件:1. C语言程序设计 主编 陈世清 浙江大学出版社 2. C语言程序设计实践教程 主编 陈世清 浙江大学出版社八附件#include stdio.h#include string.h#include conio.hint N=0;struct stu char ssdh4; /*宿舍栋号*/ int fjh; /*房间号*/ long xh; /*学号*/ char name10; /*姓名*/ char xb4; /*性别*/ char b
29、j12; /*班级*/ char phone12; /*电话号码*/ int xq; /*校区*/ int sslb; /*宿舍类别*/ s40;void Re_file() FILE *fp; fp=fopen(G:课题2ssxxk.txt,r); while( fscanf(fp,%sn%dn%ldn%sn%sn%sn%sn%dn%dn,sN.ssdh,&sN.fjh,&sN.xh,sN.name,sN.xb,sN.bj,sN.phone,&sN.xq,&sN.sslb)!=EOF) N+; fclose(fp); void Wr_file()int i; FILE *fp; fp=fop
30、en(G:课题2newssxxk.txt,w); for(i=0;iN;i+) fprintf(fp,%sn%dn%ldn%sn%sn%sn%sn%dn%dn,si.ssdh,si.fjh,si.xh,si.name,si.xb,si.bj,si.phone,si.xq,si.sslb); fclose(fp);void Print() /*输出函数*/struct stu *p;printf( *n); printf( 宿舍栋号 房间号 学号 姓名 性别 班级 电话 校区 宿舍类别n); printf( *n);for(p=s;pssdh,p-fjh,p-xh,p-name,p-xb,p-b
31、j,p-phone,p-xq,p-sslb);void Disp() /*显示模块*/int num;printf( *n); printf( * *n); printf( * 1.显示学生信息 *n); printf( * *n); printf( * 2.退 出 *n); printf( * *n); printf( *n); printf(请选择:); scanf(%d,&num);switch(num)case 1:Print();case 2: printf(nn请按任意键退出!);getch();void Appe() /*追加模块*/ int num; printf( *n);
32、printf( * *n); printf( * 1.追加学生信息 *n); printf( * *n); printf( * 2.退 出 *n); printf( * *n); printf( *n); printf(nn 请输入选项:);scanf(%d,&num);switch(num)case 1: printf(请输入数据:n); printf( *n); printf( 宿舍栋号 房间号 学号 姓名 性别 班级 电话 校区 宿舍类别n); printf( *n);scanf(%s%d%ld%s%s%s%s%d%d,sN.ssdh,&sN.fjh,&sN.xh,sN.name,sN.
33、xb,sN.bj,&sN.phone,&sN.xq,&sN.sslb);N+;printf(nn新数据以下表:nn);Print();printf(nn * 是否继续追加? *n);printf(nn * 1.是 * 2.否 * nnn); printf(请输入选项:); scanf(%d,&num);switch(num)case 1:Appe();break; case 2:printf( 按任意键返回主菜单!n);getch();return;case 2:printf( 按任意键返回主菜单!n);getch();break;void Modi() /*修改模块*/ int j,num1
34、,num,k,t; long xuehao;char xingming4;int flag;printf( *n);printf( * *n);printf( * 1.按学号查找并修改 *n);printf( * *n);printf( * 2.按姓名查找并修改 *n);printf( * *n);printf( * 3. 退 出 *n);printf( * *n);printf( *n); printf(nn 请输入你选项:);scanf(%d,&num1);flag=0;if(num1=1)printf(n 请输入学号:); scanf(%ld,&xuehao);for(j=0;jN;j+)if(sj.xh=xuehao)flag=1;k=j;break;if(num1=2)printf(n 请输入姓名:); scanf(%s,xingming);for(j=0;jN;j+)if(strcmp(sj.name,xingming)=0)flag=1; k=j;break;if(num1=3)printf(n 请按任意键退出!n);getch();return;if(flag=0)printf(nn 查无此人!nn);if(flag=1)printf( *n); printf( * *n); printf(
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100