《学生C语言实验完成情况C程序设计.docx》由会员分享,可在线阅读,更多相关《学生C语言实验完成情况C程序设计.docx(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课设题目:学生C语言实验完成情况C程序设计专业:电气 工程及其自动化 班 级:姓名:成 绩:完成日期:指导教师:目录1.课程设计题目3 2.课程设计目的43.需求分析43.1 要求43.2 任务描述43.3 运行环境53.4 开发工具54.总体设计54.1 系统流设计54.2 系统模块设计7 5.详细设计75.1 数据结构设计75.2 模块接口设计95.3 以下是几个主要模块的流程图:116.运行结果176.1 欢迎界面176.2 主菜单界面186.3 管理模式菜单主界面18196.4 查询模式菜单主界面6. 5查看本次课设题目:196.6 退出界面206.7 导入数据界面206.8 查询模式
2、1输入界面216.9 查询模式2输入界面216.10 查询模式3输入界面226.11 查询模式4输入界面226.12 管理子模式1操作界面236.13 管理子模式2操作界面246.14 管理子模式3操作界面247.程序调试与测试(257.1 程序调试257.2 程序测试27 8.问题与不足35 9.建议35 10.编程体会35 11.程序源代码36 12.参考文献651.课程设计题目7(宿舍管理程序题目描述 现学校要管理宿舍入住的学生,请设计一宿舍管理程序,以方便学校宿舍管理员对 学生进行管理,该程序应该具有以下功能:(1)能从键盘录入床位信息。(2)指定学号,显示该学生的住宿的信息。(3)指
3、定宿舍号,显示住宿信息.(4)给定宿舍号、床位号,修改住宿信息。(5)给定宿舍号、床位号,删除住宿信息。题目要求:(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。(2)住宿信息包括:床位信息(宿舍号、床位号、是否有人入住)、学号、姓名、班级、 入住时间。(3)为各项操作功能设计个菜单,应用程序运行后,先显示这个菜单,然后用户通 过菜单项选择希望进行的操作项目。输入要求:(1)应用程序运行后在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项 目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根 据用户输入的信息完成相应的处理,实现要求的功能。(2)能对
4、输入的数据逬行简单的校验,例如:入住时间必须是个合法的日期格式;一 个学号对应一个床位号,一个床位号对应一个学生。输出要求:(1)应用程序运行后,要在屏幕上显示个菜单(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式 以及结束方式等。(3)在程序完成处理后,要清楚地给出程序的处理结果.例如,在给定宿舍号、床位 号删除住宿信息时,如果该床位不存在,要提示没能删除,如果删除成功要提示删 除成功。实现要求:(1)在程序中使用链表存储住宿信息。(2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。提示:(1)使用结构体表示学生住宿信息,个结点保存一条住宿信息。扩展功能
5、:(1)提供些统计功能。例如统计空床数、统计每个班级入住宿舍号。(2)住宿信息从文件读入。(3)将住宿信息保存到文件中。2。课程设计目的C语言程序设计课程设计是C语言程序设计课程学习后的实践应 用训练,在电类工程专业的教学中占有重要位置。通过本课程设计的训 练,使学生在C语言程序设计课程学习的基础上,熟悉C程序开发 的基本过程,包括需求分析、数据结构设计、程序模块的划分与设计、函 数编程、调试等;熟悉结构化程序设计的编程思路。训练内容主要通过分 析实际应用实例,构造链表等较为复杂的数据结构,熟练地设计函数,学 会能灵活地用C语言编写个较为完整的实用程序;初步具备解决实际问 题的能力。提高学生分
6、析问题和解决问题的能力,为后续课程的学习打下 良好的基础。3。需求分析 3.1要求 题目要求:(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序.(2)学生作业信息应该包含学生信息(学号、姓名、班级)、10次作业的成绩。(3)为各项操作功能设计个菜单,应用程序运行后,先显示这个菜单,然后用户通 过菜单项选择希望进行的操作项目。输入要求:应用程序运行后在屏幕上显示个菜单。用户可以根据需求,选定相应的操作项目。(1)逬入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。程序根据用 户输入的信息完成相应的处理,实现要求的功能。(2)能对输入的数据进行简单的校验,例如,成绩只能在
7、 , 10之间,学号是唯 一的(一个学号对应个学生的作业信息).输出要求:(1)应用程序运行后,要在屏幕上显示个菜单。(2)要求用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式 以及结束方式等。(3)在程序完成处理后,要清楚地给出程序的处理结果。例如,在给定学号删除学生 信息时,如果该学生不存在,要提示没能删除,如果删除成功要提示删除成功。实 现要求:(1)在程序中使用链表存储学生作业信息。(2)采用模块化程序设计的方法,将程序中的各项功能用函数实现。3.2王务描 述此系统以学生住宿为背景,提供对学生住宿信息的管理和查询;对学生住宿信息的录 入、修改和删除;查询住宿情况(对个
8、人信息的查询、对班级信息的查询、对宿舍信 息的查询);具体功能实现如下:一:管理模式功能1)自动导入功能:从文件导入所有学生住宿信息。2)时间显示功能:每次进入主菜单下自动显示系统时间,可用于查看时间.3)管理 功能:可以对学生住宿信息进行添加、删除、修改的功能;4)保存功能:修改后退出 菜单后自动进行保存。二:查询模式功能5)指定学号,显示该学生的住宿的信息.6)指定宿舍号,显示住宿信息.7)给定班级号,显示住宿信息。8)给定宿舍号和床位号,显示该学生的住宿信息。9)显示所有学生信息。1.3 运行环境Windows XP/7 系统1.4 开发工具VC + + 6.0编译环境4 .总体设计4.
9、1 系统流设计程序欢迎界面本系统的功能模块如图1所示,主要有以下模块: 显课设题目程序欢迎界面查询模式界面 退出系统 显示课设题目管理模式界面 主菜单界面 修教 显改师示登删帐告查查陆除号别查询询密信修添登界询模模码 改息管加 陆面模 式式信理信2 1学式学息3教息实生管生师学验帐理密帐生情号学码查号管成 况显登退生修绩査陆询理帐改示出录询号模模入课界式式设面界界题面面 目查查查查查管管管询询询询询理理理子子子子子子子子模模模模模模模模式式式 式式式式式23154123导入数据界面查查查管查管管询询询理询理理数数数数数数数据据据据据据据输输输输输6 输输入入入入入入入注:管理模式界面,查询模式
10、界面都设有返回上级菜单功能04.2系统模块 设计1)系统欢迎界面:构造函数void welcome.menu。,实现课程设计名称、作者、指 导老师、班级、联系方式的显示。2)菜单界面:构造函数int menu。,实现系统主菜单的显示.3)查询界面:构造函数void find_mode().4)查询子模式1:构造函数void find-mode-1()。5)查询子模式2:构造函数 void find_mode_2(). 6)査询子模式 3:构造函数 void find一mode一3(). 7)査 询子模式4:构造函数void find-mode-4()。8)查询子模式5:应用函数 load_st
11、ustay()o 9)管理界面:构建函数void govern.mode()。10)管理子模式1:构造函数void govern.mode。011)管理子模式2:构造函 数void govern_mode_2(). 12)管理子模式3:构造函数void govern_mode_3().13)显示课设题目:构造函数void void list_menu();14)退出告别界面:构造函数void goodbye-menu。,实现在用户退出系统时,显 示祝福语并声明版权。5 .详细设计5.1 数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:注:n为110之间确定的数.数据项名称数据项
12、系统表示数据类型数据长度备注学生姓名pl-student_na 字符串20个字节me学生学号pl-student_nu字符串20个字节mber7班级pl-classes字符串20个字节入住时间pl-time字符串20个字节床 位号pl- bed_number整形4个字节宿舍号pl- hostel_num整形4个字ber学生住宿信write_stustay整形4个字节息更改保存标志全局变根据系统要求,系统中需要保存的类别信息,其结构如下:教师信教师信息教师信息教师信息2 3 4为了能实现不受限制的增加学生信息,采用链表的结构保存住宿信息,在增 加学生的基通讯录信本信息时,创建一个学生信息的节点,
13、将其插入到链表中,示意图如下 (用链表实现)息1 221学生信息1学生信息学生信息学生信息2 3 4为此,先声明一个类型为struct stustay的结构体,其成员为学生的住宿信息。然后通讯录信息1通过对指针、链表、文件等数据结构的操作,实现对学生住宿信息的登入,修 改,单次和多221次查询。其中,结构体定义分别如下:学生住宿信息结构体8struct stustay(char name20; 学生姓名char student_number20; 学号char classes20; 班级char time20; 入住时间int bed_number; /床位号int hostel_number
14、; 宿舍号struct stustay *next;);5.2 模块接口设计1)所有函数模块声明如下:void welcome_menu(); /欢迎界面菜单/ void goodbye_menu(); /告另!) 页面菜单/ int menu。; /主菜单/void find_mode(); /查询模式/int find.menu。; /*查询模式菜单*/ void find一mode.1(); /査询子模式 1(指 定学号,显示住宿信息.)*/ void find-mode-2(); /*查询子模式2(指定宿舍 号,显示住宿信息。)*/void find.mode-3(); /查询子模式3
15、(指定班级,显示住宿信息。)*/ void find-mode-4(); /*查询子模式4(给定宿舍号和床位号,显示该学生的住宿信 息。)*/void find-mode-5(); /*查询子模式5(显示所有学生信息)/ int govern_menu(); /*管理模式/void govern_mode(); /管理模式菜单/9void govern.mode。;/管理子模式1(能从键盘录入床位信息。/ void govern-mode-2(); /管理子模式2(给定宿舍号、床位号,修改住宿信息。)*/ void govern-mode-3(); /管理子模式3(给定宿舍号、床位号,删除住宿
16、信 息。)*/void load-stustay。; /导入学生住宿信息/void list一menu。; /显示课设题目菜单函数/ void list_stustay(int n); /显 示学生住宿信息函数/ int lookup-student。; /查找学生住宿信息函数/ int lookup一student2(); /查找学生住宿信息函数 2*/ int lookup一hostel。; /查 找宿舍信息函数/ int lookup-classes。; /查找班级信息函数/ int show_time(void); /显示逬入系统时间的函数*/void rank。; /排序函数/voi
17、d save-stustay。; /保存修改住宿信息函数/ void exit。; /退出程序并 保存函数/ 2)并定义五个全局变量以及结构体指针:1) /链表操作所用结构体指针/struct stustay *headl = NULL,*pl,*p2,*p3; /定义结构体指针 headl 为头 指针p!为输入数据缓存空间指针,p2为尾指针(用于操作学生住宿信息)*/2) /*学生住宿信息更改保存标志全局变量/int write_stustay = O;1)主要模块的实现10系统以主函数int main。为入口,首先调用welcome_menu。函数,显示系统欢 迎界面。然后调用show-t
18、ime。函数,显示逬入系统的时间。然后调用menu。函 数,显示主菜单界面,并使系统接收用户输入的选择,进入不同的操作模式,进入 到下级菜单进行相关工作。5.3 以下是几个主要模块的流程图:1)主菜单函数打印主菜单接收用户选项 否是否合法是否为否是退出系统调用对应选项函数进入下级菜单2)管理模式主函数:操作模式,查询模式同此。11打印管理模式主菜单接收用户选项否是否合法是是否为否是返回上级菜单调用对应选项函数进入下级菜单3)添加学生住宿信息:12显示学生数据输入添加信息条数否判断是否合法输入学生住宿信息否判断日期是否合法否是判断是否已有人居住是保存数据返回上一级13输入添加信息条数4)修改学生
19、住宿信息:显示学生数据输入要修改的宿舍号否判断是否存在是 输入要修改的床位号否判断是否存在是输入修改后的学生数据保存数据显示教师账号信息返回上一级输入要修改的账号返回管理5)删除教师账号:获取管理权限后(删除学生账号同此)是否存在模式菜单14输入修改后的姓名显示学生数据输入要删除的宿舍号否是判断是否存在输入要删除的床位号否 判断是否存在是删除学生信息保存数据返回上一级显示教师账号信息输入要删除的账号6)保存学生信息函数:若为“000000”,则退出15是否存在删除账号否判断数据库中是否有学生信息是否判断全局变量write_stustay的值是否判断文件路径是否正确是将学生信息写入文件信息保存完
20、毕关闭文件按任意键返回主菜单167)显示学生住宿信息:否判断数据库中是否有学生住宿信息是显示学生信息按任意键返回主菜单6 .运行结果6.1 欢迎界面:176.3管理模式菜单主界面:6.4查询模式菜单主界面:6.5显示课设题目:6.6退出界面:6.7导入数据界面:注:查询子模式5界面与此相同206.8查询子模式1输入界面:6.9查询子模式2输入界面:* ,a而f!人要玄直!力:千5H32S够的仔音信也攵!R|学生四名 学号,,那入ttwrt広仁甘!蹴J蒐21H 3n231 nmT1323-ta2mi.9.tw1茯鞋2B13tl23inKZT1323ta2 mi.9.IB2张第2013B23fMB
21、11323-102ama3上的201Jtl271kMH11123-102ttiJ.y.iM42MJU2J1MK11323-10200.9.10在续201)62310*11123 xe291).9.!G成281)023109771323 10291).9.19?汨当20n0231Mt71320 IB29n.9.1。e献2R13R231 5113231,2013.9.1RV_法而2R13M3imT1323-1II2IM3.9.1RtnJ二 二 一M:Tn23THi毋约浙有学仔復隹g丸下s_学生总名人住品匐皆号_仁号菜2IH 3*231 MH2IM3-in1小2m3HZ3lMK22M3-9-102S
22、2幻32V13MK311m2B13-y-tU3S26由2013TTH432*HS丄1MS2aH-in5小丁201) 9 10S2C2l)a2)lM72013 9 107521 -213K31MS2913 9 10e52629I3IQJ1M92R1 T-ia56一:6.11 查询子模式4输入界面:6.12 管理子模式1操作界面:236.13管理子模式2操作界面:6.14管理子模式3操作界面:247 .程序调试与测试7.1 程序调试文件录入信息出错的界面 例如在文件不存在时出现此情况文件数据为空时的查询界面25主菜单选择输入错误的界面例如在用户错误输入操作选项时出现此现象时间录入不合法出错的界面2
23、6式中.月) 丁式8年一,E)22913 13 1,,鼻1空生出:2啦3前,羊学生的心名:罕里建工为孕生任宣信己早如水丄Mrt: 1,陰和I却柳:“2M 9查询的学生学号不存在的界面注:查询的班号不存在、宿舍不存在的界面类似27添加学生信息违反个床位只有一人:7.2 程序测试(1)各模块测试用例数据的确定建立的文件为,stu stay.txt;(存放学生住宿信息)my kes het imu.txt;(存放课设题目)文件路径为:与本程序在同一文件中。stustay.txt文件中数据:张三 20130231001 T1323-10 2013 9 10 526 1蒂法 20130231002 T1
24、323-10 2013 9 10 526 2张第 20130231003 T1323-10 2013 9 10 526 3上的 20130231004 T1323-10 2013 9 10 526 4青蛙 20130231005 T1323-10 2013 9 10 526 5在线 20130231006 T1323-10 2013 9 10 526 6成本 20130231007 T1323-10 2013 9 10 526 7天语 20130231008 T1323-10 2013 9 10 526 828纳米 20130231009 T1323-10 2013 9 10 526 9请问
25、20130231010 T1323-10 2013 9 10 526 10不能 20130231101 T1323-11 2013 9 10 527 1我为 20130231102 T1323-11 2013 9 10 527 2小声点 20130231103 T1323-11 2013 9 10 527 3成功 20130231104 T1323-11 2013 9 10 527 4惹人 20130231105 T1323-11 2013 9 10 527 5啊啊 20130231106 T1323-11 2013 9 10 527 6在发 20130231107 T1323-11 2013
26、 9 10 527 7千万人 20130231108 T1323-11 2013 9 10 527 8 最新 20130231201 T1323-9 2013 9 10 528 1疯狗 20130231202 T1323-9 2013 9 10 528 2东方 20130231203 T1323-9 2013 9 10 528 3地方 20130231204 T1323-9 2013 9 10 528 4极银 20130231205 T1323-9 2013 9 10 528 5求围观 20130231206 T1323-9 2013 9 10 528 6雨发 20130231207 T132
27、3-9 2013 9 10 528 7变成 20130231208 T1323-9 2013 9 10 528 8电饭锅 20130231209 T1323-9 2013 9 10 528 9按学生姓名,学号,班级,时间年,时间月,时间日,宿舍 号床位号格式保存在退出程序时,所有记录能够保存至文件,并在下次运行程序时,读入的功能.不 完善的部分,请自行补充.,2,测试结果从文件导入学生信息29 ,VCDMSDeVC.&MSDrv9MBinDebugX4*;iStf ewe,7 JI F君后三一天士,至/主任値G电或外名1粘閹人住対间薩号1E弓 -一2m3ffi3lNhT1123-1A2R13-
28、m5M1碎213R23lMt2T1323-1R2R13-ia2我第2m3K231M3T1323-1Rzms-f-to3卜的2tn?U3tMM11323-inZN13-9-1U&Z64百兔2ttt3 皿 3IIM11323 21113-IIS3S四2&13皿” i11323 IM2U1J-9-1U小6L :133處提幷中任隹喧息朱車,34(3)测试中出现的问题的原因和分析1、输出格式上刚开始不是太整齐,原因是没有充分熟悉输出格式的规律,经调试 后,输出整齐。2、刚开始在逬行操作后没有对数据进行保存,下次打开程序时,还是没有经过修 改的数据,经修改后,没对数据逬行一样修改都对其逬行保存。3、程序调
29、试的过程中出现过打印出许多屯屯.”的情况,经网上查询,是 由于指针没有初始化,及指针所指内容为空.经调试后解决了此问题.4、输出信息时无法打印,原因是输出格式字符出错,后改正错误.8 .问题与不足1、没有显示出宿舍有无空床位。2、没有对学号进行查重处理.3、没有在文件里进行排序处理。4、当文件为空时输出屯屯屯屯屯屯屯.” 5、还有诸多不方便之处。9 .建议课程设计的题目涉及范围应该更广,同学可以根据自己的能力和爱好进行选择,或 者同学之间可以交换课设题目。时间按排上,可以提前把课设题目给学生,这样有 能力的学生可以先做好课设,有充足的时间备考。10 .编程体会经历了这一段时间编程,我深深感受到
30、了 c语言的魅力所在,在程序设计的过程 中,一定要保持颗清醒的头脑.有时候个小小的不注意的地方,可能会影响整 个程序的运行,甚至连编译都不能完成。c语言学习也需要我们付出一定的努力, 要不断的练习。而且我还学到了许多没有太重视的知识点,比如说格式化读取文件 是,一定要一次性全部读取,否则会导35致后续过程混乱。11 .程序源代码:*程序中用到的头文件及预处理命令宏定义*#include#include#include#include#include#include malloc.h : 0 & m 0 & d = monthm - 1;)/链表操作所用结构体指针/struct stustay
31、*headl = NULL,*pl,*p2,*p3; /*定义结构体指针 headl 为头 指针p!为输入数据缓存空间指针,p2为尾指针(用于操作学生住宿信息)*/学生住宿信息更改保存标志全局变量/int write_stustay = O;歩数声明部分*/void welcome_menu(); /欢迎界面菜单/void goodbye_menu(); /告别页面菜单/int menu(); /*主菜单*/void find_mode(); /查询模式*/int find_menu(); /查询模式菜单/void find_mode_l(); /*查询子模式1(指定学号,显示住宿信息。)*/
32、void find_mode_2(); /*查询子模式2(指定宿舍号,显示住宿信息。)*/void find_mode_3(); /*查询子模式3(指定班级,显示住宿信息。)*/void find_mode_4(); /*查询子模式4(指定宿舍号和床位号,显示该学生的住宿 的信息。)*/int govern_menu(); /管理模式/void govern_mode(); /管理模式菜单/ void govern_mode一:1(); /管理子 模式1(能从键盘录入床位信息。)*/void govern_mode_2(); /管理子模式2(给定宿舍号、床位号,修改住宿信 息。)*/void
33、govern.mode.3(); /管理子模式3(给定宿舍号、床位号,删除住宿信 息。)*/void load一stustay。; /导入学生住宿信息/void list一menu。; /显示课设题目菜单函数/ void list_stustay(int n); /显 示学生住宿信息函数/ int lookup.student。; /查找学生住宿信息函数/ int lookup-hostel。; /查找宿舍信息函数/37int lookup一classes。; /查找班级信息函数/ int lookup_student2(); /查 找学生住宿信息函数2int show_time(void);
34、 /显示进入系统时间的函数/void rank。; /*排序函数/void save.stustay。; /保存修改住宿信息函数/ void exit。; /退出程序并 保存函数/主函数/int main。welcome_menu();for(;) show-time。; /逬入主界面可查看系统时间/switch(menu()case 1: systemCcIs); find_mode(); break; /进入管理模式 1*/case 2: system(ncls); govern_mode(); break; /进入管理模式 2*/case 3: system(cls); list_men
35、u(); break; /显示课设题目/case 0: system(cls); exitO(); return 0; /退出程序/ default : fflush(stdin); /清缓存/printf(nttt选择错误,请正确输入您的选择(3):n);system(pause);fflush(stdin);system(cls); /清屏/)return 0;38* * 欢迎苗单函数*void welcome_menu() printf(nnntt?n);printf(tt?欢迎使用C语言宿舍管理系统?n);printf(tt? ?n);printf(tt?指导老师:胡宁亚?n);pri
36、ntf(tt? ?n);printf(tt?软件制作人:代寓秋?n);printf(tt? ?n);printfCtt?学号:20130231007 ?n);printf(tt? ?n);printf(tt?班级:T1323-10 ?n);printf(tt? ?n);printf(tt?您有任何建议或意见通过以下方式与作者联系:?n);?n); printf(tt?printf(tt?电话:18372628744 ?n);printf(tt? ?n);printf(tt? 1245237011 QQ:1245237011 ?n);system(pause);fflush(stdin);system(cls);return;* * l 単 !1百*int menu() int a;fflush(stdin);printf(nnnttt欢迎使用C语言实验管理系统nn);printf(t?*主菜单*? n) printf(t ? ? n);printf(t ?tl.进入査询模式? n);39printf(t ? ? n);printf(t ?t2.逬入管理模式? n);printf(t ? ? n);printf(t ?Xt3.显示课设题目? Xnn);printffXt ? ? n);printf(t ?XtO.退出