C语言程序设计课程设计报告招生查询系统.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计课程设计报告招生查询系统课程设计报告题目招生查询系统课程名称C 语言程序设计专业班级信息安全201302班学号姓名指导教师报告日期2014年10月10日计算机科学与技术学院任务书题目招生查询系统
一、主要内容建立招生查询系统,提供创建、编辑和综合查询等基本业务管理和服务。

二、任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交课程设计报告。

三、参考文献[1]曹计昌,卢萍,李开. C语言程序设计,北京科学出版社,2013 [2]李开,卢萍,曹计昌. C语言实验与课程设计,北京科学出版社,2011 [3]张引. C程序设计基础课程设计, 杭州浙江大学出版社,2007 [4]黄明,梁旭,万洪莉. C语言课程设计,北京电子工业出版社,2006
四、基本要求⑴只能使用C语言,源程序要有适当的注释,使程序容易阅读。

⑵要有用户界面。

要求至少采用教材p215-p216类似的简易菜单;鼓励采用文本菜单界面甚至采用图形菜单界面。

⑶必须使用结构和十字交叉链表等数据结构。

⑷使用文件保存数据。

⑸鼓励自行增加新功能。

⑹设计测试的模拟数据,完成系统测试。

⑺撰写课程设计报告(要求正规双面打印,A4幅面)内容包括题目、系统功能模块结构图、数据结构设计及用法说明、程序结构(画流程图)、各模块的功能、试验结果(包括输入数据和输出结果)、体会、参考文献和附录程序清单。

课程设计报告封面统一格式,标准格式详见本科生课程设计规范化要求。

⑻课程设计资料(包括课程设计报告、源程序、目标程序和测试用例等)刻录光盘。

目录1 引言1 1.1 课题背景和意义1 1.2 课程设计的主要研究工作1 2 系统需求分析与总体设计2 2.1 系统需求分析2 2.2 系统总体设计2 3 系统详细设计4 3.1 有关数据结构的定义4 3.2 主要算法设计6 4 系统实现与测试8 4.1 系统实现8 4.2 系统测试9 5 总结与展望17 5.1 全文总结17 5.2 工作展望17 体会18 参考文献20 附录程序清单21 附录一源文件main.c21 附录二头文件RS.h89 1 引言 1.1 课题背景和意义在当今网络化、信息化、数字化的社会中, 由于科学技术的飞速发展,人们的生活越来越趋向科技化和便捷化。

而计算机作为其中最重要的部分,计算机科学技术显然已经成为了现代人们生活中的重要部分,而且它在现代人生活占据了越来越重要的位置。

计算机的出现及发展改变了人类生活的方方面面,提升了人类的生活水平,从而推动了人类文明的进步。

未来的计算机科学朝着更加多元的方向发展,它已经成为一个国家综合实力的重要体现。

1.2 课程设计的主要研究工作本课程设计旨在训练学生的编程能力,正确理解与应用专业知识,并合理灵活地应用于社会实际问题,增强和提高分析问题与解决问题的综合能力;增强和提升信息搜索和分析技能;熟练运用C语言进行链表插入、排序、删除及数组、指针、文件的各种基本操作;熟悉结构体、指针数组、链表等基本数据结构;训练学生的编程风格,做到程序用语规范简洁,适当进行注释等能力。

2 系统需求分析与总体设计 2.1 系统需求分析系统主要是提供招生信息的快速查询、检索和统计。

本系统提供武汉市部分高校查询功能,主要功能有①按高校、按专业等查询招生信息;②组合条件检索招生信息;
③统计招生情况等。

系统主要涉及“高校”、“专业”和“招生”3类信息。

“高校”信息由高校编号、高校名称、高校地址和联系电话
等数据项目组成,“专业”信息由专业编号、专业名称等数据项目组成,“招生”信息由招生年份、招生计划、实际招生、最高分数和最低分数等数据项目组成。

2.2 系统总体设计系统(System)文件(File)数据维护(Maintain)数据查询(Query)数据统计(Stat)帮助(Help) 3 系统详细设计
3.1 有关数据结构的定义1、数据类型定义/*招生信息链结点结构*/ typedef struct rec_stu_node { char rec_year[5]; /* * len 1 /*选择法排序*/ { loc1 len 1; while BufferLen loc1 /*每趟找到序列中最小代码串,首地址存入pStr1*/ { pStr2 pTemp loc1; if strcmppStr1, pStr2 0 { pStr1 pStr2; } loc1 strlenpStr2 1; } len strlenpStr1; /*这一趟所找到的最小代码串长度*/ /*如果不是空串,则进行复制,loc2是下一个最小代码串存放地址的偏移量*/ if len 0 { strcpy*pBuffer loc2, pStr1; loc2 len 1; /*已复制的代码串所占存储空间大小*/ } /*将最小代码串从序列中删除掉*/ fori0; ianext NULL; pProNode-next hd; hd pProNode; } } fclosepFile; if hd NULL { printf“高校信息数据文件加载失败\n“; return re; } printf“高校信息数据文件加载成功\n“; *phead hd; re 16; if pFile fopengp_maj_info_filename, “rb“ NULL { printf“专业基本信息数据文件打开失败\n“; return re; } printf“专业基本信息数据文件打开成功\n“; re 32; while feofpFile { pCaseNode
MAJ_NODE *mallocsizeofMAJ_NODE; freadpCaseNode, sizeofMAJ_NODE, 1, pFile; pCaseNode-pnext NULL; pProNode hd; while pProNode NULL } if pProNode NULL { pCaseNode-next pProNode-anext; pProNode-anext pCaseNode; } else /*如果未找到,则释放所创建结点的内存空间*/ { freepCaseNode; } } fclosepFile; if pFile fopengp_rs_info_filename, “rb“ NULL { printf“招生基本信息数据文件打开失败\n“; return re; } printf“招生基本信息数据文件打开成功\n“; re 64; while feofpFile { /*创建结点,存放从数据文件中读出的招生缴费信息*/ pMediaNode RS_NODE *mallocsizeofRS_NODE; freadpMediaNode, sizeofRS_NODE, 1, pFile; /*查找媒体报道信息支链上对应媒体报道信息结点*/ pProNode hd; find 0; while pProNode NULL while pCaseNode NULL break; } pCaseNode pCaseNode-next; } pProNode pProNode-next; } if find /*如果找到,则将结点以后进先出方式插入媒体报道信息支链中*/ { pMediaNode-next pCaseNode-pnext; pCaseNode-pnext pMediaNode; } else /*如果未找到,则释放所创建结点的内存空间*/ { freepMediaNode; } } fclosepFile; return re; } /** * 函数名称InitInterface * 函数功能初始化界面. * 输入参数无* 输出参数无* 返回值无* * 调用说明*/ void InitInterface { WORD att FOREGROUND_RED |
FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE; /*黄色前景和蓝色背景*/ SetConsoleTextAttributegh_std_out, att; /*设置控制台屏幕缓冲区字符属性*/ ClearScreen; /* 清屏*/ /*创建弹出窗口信息堆栈,将初始化后的屏幕窗口当作第一层弹出窗口*/ gp_scr_att char *callocSCR_COL * SCR_ROW, sizeofchar;/*屏幕字符属性*/ gp_top_layer LAYER_NODE *mallocsizeofLAYER_NODE; gp_top_layer-LayerNo 0; /*弹出窗口的层号为0*/ gp_top_layer-rcArea.Left 0; /*弹出窗口的区域为整个屏幕窗口*/ gp_top_layer-rcArea.Top 0; gp_top_layer-rcArea.Right SCR_COL - 1; gp_top_layer-rcArea.Bottom SCR_ROW - 1; gp_top_layer-pContent NULL; gp_top_layer-pScrAtt gp_scr_att; gp_top_layer-next NULL; ShowMenu; /*显示菜单栏*/ ShowState; /*显示状态栏*/ return; } /** * 函数名称ClearScreen * 函数功能清除屏幕信息. * 输入参数无* 输出参数无* 返回值无* * 调用说明*/ void ClearScreenvoid { CONSOLE_SCREEN_BUFFER_INFO bInfo; COORD home {0, 0}; unsigned long size; GetConsoleScreenBufferInfo gh_std_out, /*取屏幕缓冲区信息*/ size bInfo.dwSize.X * bInfo.dwSize.Y; /*计算屏幕缓冲区字符单元数*/ /*将屏幕缓冲区所有单元的字符属性设置为当
前屏幕缓冲区字符属性*/ FillConsoleOutputAttributegh_std_out, bInfo.wAttributes, size, home, /*将屏幕缓冲区所有单元填充为空格字符*/ FillConsoleOutputCharactergh_std_out, , size, home, return; } /** * 函数名称ShowMenu * 函数功能在屏幕上显示主菜单, 并设置热区, 在主菜单第一项上置选中标记. * 输入参数无* 输出参数无* 返回值无* * 调用说明*/ void ShowMenu { CONSOLE_SCREEN_BUFFER_INFO bInfo; CONSOLE_CURSOR_INFO lpCur; COORD size; COORD pos {0, 0}; int i, j; int PosA 2, PosB; char ch; GetConsoleScreenBufferInfo gh_std_out, size.X bInfo.dwSize.X; size.Y 1; SetConsoleCursorPositiongh_std_out, pos; for i0; i Attributes BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED; ch chargp_buff_menubar_infoi-Char.AsciiChar; if ch A } } /*修改后的菜单条字符信息回写到窗口的第一行*/ WriteConsoleOutputgh_std_out, gp_buff_menubar_info, size, pos, COORD endPos {0, 1}; SetConsoleCursorPositiongh_std_out, endPos; /*将光标位置设置在第2行第1列*/ /*将菜单项置为热区,热区编号为菜单项号,热区类型为0按钮型*/ i 0; do { PosB PosA
strlenga_main_menu[i]; /*定位第i1号菜单项的起止位置*/ for jPosA; jAttributes BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED; /* ch chargp_buff_stateBar_infoi-Char.AsciiChar; if ch A } */ } WriteConsoleOutputgh_std_out, gp_buff_stateBar_info, size, pos, return; } /** * 函数名称TagMainMenu * 函数功能在指定主菜单项上置选中标志. * 输入参数num 选中的主菜单项号* 输出参数无* 返回值无* * 调用说明*/ void TagMainMenuint num { CONSOLE_SCREEN_BUFFER_INFO bInfo; COO。

相关文档
最新文档