



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
等中科技火穿课程设计报告题目:招生查询系统课程名称: C语言程序与设计专业班级: 信息安全1302班学号: 姓名: 指导教师: 报告日期: 2014年10月1日计算机科学与技术学院任务书题目:招生查询系统ー、主要内容建立招生信息系统,提供创建、编辑和综合查询等基本业务管理和服务。二、任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交《课程设计报告》。三、参考文献川曹计昌,卢萍,李开.C语言程序设计,北京:科学出版社,2013[2]李开,卢萍,曹计昌.C语言实验与课程设计,北京:科学出版社,2011[3]张引.C程序设计基础课程设计,杭州:浙江大学出版社,2007[4]黄明,梁旭,万洪莉.C语言课程设计,北京:电子工业出版社,2006四、基本要求⑴只能使用C语言,源程序要有适当的注释,使程序容易阅读。⑵要有用户界面。要求至少采用教材p215-p216类似的简易菜单;鼓励采用文本菜单界面甚至采用图形菜单界面。⑶必须使用结构和十字交叉链表等数据结构。⑷使用文件保存数据。⑸鼓励自行增加新功能。⑹设计测试的模拟数据,完成系统测试。⑺撰写课程设计报告(要求正规双面打印,A4幅面)内容包括:题目、系统功能模块结构图、数据结构设计及用法说明、程序结构(画流程图)、各模块的功能、试验结果(包括输入数据和输出结果)、体会、参考文献和附录:程序清单。课程设计报告封面统一格式,标准格式详见《本科生课程设计规范化要求》。⑻课程设计资料(包括课程设计报告、源程序、目标程序和测试用例等)刻录光盘。目录TOC\o"1-5"\h\z\o"CurrentDocument"目录 3!弓I言 4课题背景和意义 4国内外研究现状 4课程设计的主要研究工作 5\o"CurrentDocument"2系统需求分析与总体设计 6系统需求分析 6系统总体设计 6\o"CurrentDocument"3系统详细设计 12有关数据结构的定义 12主要算法设计 16\o"CurrentDocument"4系统实现与测试 34系统实现 34系统测试 39\o"CurrentDocument"5总结与展望 47全文总结 47工作展望 47\o"CurrentDocument"参考文献 49\o"CurrentDocument"附录程序清单 50课题背景和意义想进入一所满意的大学,七分靠成绩三分靠志愿。如果说高考检验的是学生成绩,比的是个人实カ,那么,填报志愿绝对是个技术活儿,考验的是决策能力,拼的是群体智慧。怎样才能在千余所学校、10多万个录取位置中,找到适合自己的一个,这就需要选择、对比、权衡、把握、决策……同时还需要对各个高校信息的了解与查询。因此网上招生信息的查询就有着他独特的意义。同时网络招生查询系统具有以下的优点:有利于招生信息及时更新和发布。与传统纸质材料相比,网络招生查询系统制作比较简单,开发周期短,信息传播更及时更方便,信息留存的时间长也便于检索,并且更新信息的成本低,能够让最新的信息在第一时间传播到用户手中。用户查找信息更加快捷、方便、全面,并且能够对学、专业和分数线进行纵向和横向的比对,做出最合适的选择,适应复杂的招生数据的处理的需求。有利于节约时间,节约资源,提高工作效率,提高服务质量。国内外研究现状信息管理系统在现代社会已经深入到各行各业,由于计算机技术的发展和普及,信息管理系统事实上已经成为了计算机管理信息系统。管理信息系统是ー个不断发展的新型学科,它的定义随着计算机技术的发展和通讯技术的进步也在不断更新。管理信息由信息的采集,信息的传递,信息存储,信息加工,信息的维护和信息的使用五个方面组成。任何地方只要有管理,就必然有信息。如果形成系统就形成管理信息系统,计算机设备使管理信息系统更加有效。尤其是现代社会,管理信息系统己经和计算机设备不可分离。信息管理系统ー词在中国出现在70年代末80年代初,根据中国的特点,许多从事管理信息系统的学者给管理信息系统也下了一个定义,该定义为:“管理信息系统,是ー个由人和计算机等组成的能进行信息的收集,管理,加工,维护和使用的系统。管理信息系统能实测企业的各种运行情况,利用过去的数据预测未来;从企业全局出发辅助企业进行决策,利用信息控制企业行为,帮助企业实习其规划目标。”自20世纪80年代以来,在西方国家中的大型企业里相继出现了“信息总监”(CIO)这样引人瞩目的高级管理职位。20世纪90年代以来,随着知识管理新概念的出现,CIO开始逐步向“知识总监”(CKO)演变。CIO和CKO的出现使信息资源管理者的行政地位提高到了最高决策层,标志着微观层次的信息资源管理的地位与作用日益重要。为了适应新形式下现代化企业管理的需要,建立一个高效、可靠的计算机管理系统,并且在其上开发符合企业需要的生产信息管理系统已经越来越成为ー个现代化企业的标志,它必将为企业生产、科学调度等方面带来深远的影响。课程设计的主要研究工作课程设计是以考生以及家长对查询招生信息的需求为背景,基于全国高等学校招生实际情况,设计出招生查询系统。使用CodeBlocks作为开发工具,系统具有文件维护,数据维护,数据查询,数据统计,帮助五个功能大类,包括数据加载,数据备份,数据恢复,数据保存,高校信息查询、修改、增加、删除等24个子模块。能够满足数据查询,修改,增加,删除,以及数据统计等功能。并且可以进行模糊查询,让用户对信息进行横向和纵向的对比。本系统可以用鼠标和键盘两种操作方式,方便快捷,便于使用。2系统需求分析与总体设计系统需求分析使用招生查询系统的有两类人,ー是用户,二是系统管理员。用户需要查询高校信息,专业信息和专业每一年的招生信息。在不清楚高校和专业的具体编号和名称的时候,也能够通过某些条件进行模糊查找。在实际生活中,用户也会需要每ー年招生的统计信息,来作为选择学校时的参考。对于系统管理员而言,除了查询之外最重要的功能就是修改和删除信息。为了能够方便修改,需要能够选择性的修改,没有选择的部分保持原数据。通过输入编号选择删除的高校或者专业的信息。同时为了防止误删数据,也设计数据保存、备份和恢复的功能。系统主要是提供招生信息的快速查询、检索和统计。应该具有①按高校、按专业等查询招生信息;②组合条件检索招生信息;③统计招生情况等。系统总体设计系统分成五个大的模块,分别是文件,数据维护,数据查询,数据统计,帮助。招生信息查询系统文件数据维护数据查询数据统计文件数据维护数据查询数据统计帮助文件模块的功能包括一系列与系统启动运行和系统结束运行相关的环境维护和数据操作,其进ー步分化为4个子模块:数据保存、数据备份、数据恢复和退出系统。其功能结构如图所示:数据保存子模块:用于将内存中的代码表数据和链表数据按照缺省路径分别保存到各个文件中。当数据保存失败时,输出提示信息并让用户输入存储数据文件的新路径,然后按用户指定的新路径保存数据。数据备份子模块:用于将存放在多个数据文件中的代码数据和基础数据按用户指定的路径转储到ー个数据文件之中,当系统数据在破坏或者丢失时用来恢复数据。数据恢复子模块:与系统备份模块相对应,能从备份数据中恢复得到的系统数据,并加载数据到内存中。用于提高系统的稳定性和可靠性。退出系统子模块:释放程序运行过程中申请的动态存储区,关闭控制台标准输入和输出句柄,将标题栏设置为“运行结束”,清楚屏幕窗口信息,结束系统运行。
数据维护模块完成为系统代码数据和三种基础数据信息的录入、修改和删除功能,保证数据的准确性、完整性和有效性。该模块按信息种类划分为:高校信息、专业信息和招生信息三个子模块,如下图所示:高校信息子模块:用于插入,修改和删除高校基本信息,保证高校信息的准确性。并且将高校的数据存入数据链表,并保存到高校信息数据文件中,以保证内存和外存在两种存储介质上数据内容的一致性。专业信息子模块:用于插入,修改和删除专业基本信息、,保证专业信息的准确性。并且将专业的数据存入数据链表,并保存到专业信息数据文件中,以保证内存和外存在两种存储介质上数据内容的一致性。招生信息子模块:用于插入,修改和删除招生基本信息,保证招生信息的准确性。并且将招生的数据存入数据链表,并保存到招生信息数据文件中,以保证内存和外存在两种存储介质上数据内容的一致性。
数据查询模块提供对三种基本数据信息按多种条件进行查询的功能。该模块按信息种类分为高校信息、专业信息和招生信息三个子模块,如图所示:高校信息査询子模块:用于学校信息的查询,是模糊查找高校信息,普通用户往往不了解高校编号,则可以通过高校名称或者地址等信息进行搜索,输出所有符合条件的高校信息。专业信息查询子模块:用于专业信息的查询,是模糊査找专业信息,普通用户往往不了解高校编号和专业编号,则可以通过专业名称等信息进行搜索,输出所有符合条件的专业信息。招生信息査询子模块:用于招生信息的查询,是模糊查找招生信息,普通用户往往不了解高校编号和专业编号,则可以通过专业名称和招生年份,招生人数等信息进行搜索,输出所有符合条件的招生信息。
数据统计对三类基础数据进行多方面统计的功能,按照统计条件,划分为各学校专业热门度统计,各年份招生人数统计,高校信息统计,全录入信息统计,如图所示:数据统计各学校专业热门度统计各年份招生人数统计高校信息各学校专业热门度统计各年份招生人数统计高校信息统计全录入信息统计各学校专业热门度统计:用于对各个学校各个专业招生时长、人数的统计,并根据该专业平均每年录取的人数为依据,计算该专业的热门程度,从高到底排列。各年份招生人数统计:用于对武汉高校每年实际、计划招生数的统计,并按各年实际招生数的高低排序后输出这些统计数据。高校信息统计:用于对武汉各所高校的基本信息的统计,统计各个高校专业数量,和该高校每年的计划和实际招生人数,全录入信息统计:输出已经录入的所有信息,高校信息中输出该高校的编号,专业信息输出该专业的名称,招生信息中输出招生的年份。帮助模块为用户使用系统提供帮助,同时还提供系统版本信息和系统版权信息,分为帮助主题子模块和系统说明子模块,如图所示:帮助帮助主题帮助主题子模块:能够时用户对系统的功能更加了解,使用更加方便。关于系统子模块:简要介绍系统的功能,以及版权声明,开发者的联系方式,便于用户进行反馈和对程序进行更好的修正。3系统详细设计有关数据结构的定义按照任务要求,系统需要处理的基础信息有三种:高校信息,专业信息和招生信息。这三种信息存在这样的关联:专业信息中的高校编号与高校信息中的高校编号存在关联,招生信息中的专业编号与专业信息中的专业编号存在关联。这三种数据通过录入,成为系统的基础数据。系统进行统计时需要使用到以上三种数据,统计的结果形成新的数据。本系统的统计模块生成四种数据,分别表示专业历史统计信息、招生统计信息、高校分类统计信息、总录入信息统计信息。下面分别是设计本系统涉及的代码数据、基础数据和生成数据的数据结构,以及数据在内存和外存中的存储结构。(1)高校信息表:数据项名称数据项标志数据类型数据长度取值范围示例高校名称nameString20“华中科技大学”高校编号uni_idString3“001-999”“001”地址addrString20“湖北省珞瑜路”联系电话telString20•在内存中的存储结构:存放在十字交叉链表的主链接点上,每ー个主链接点除了保存下ー个结点的地址外,还保存该学校专业信息链表的头结点地址。•数据文件的存储结构:每条信息作为一条记录存放到二进制文件。(2)专业信息表:数据项名称数据项标志数据类型数据长度取值范围示例高校编号uni_idString3“001-999”“001”专业名称nameString20“华科信安”专业编号maj_idString12“Olis”
在内存中的存储结构:存放在十字交叉链表的主链接点上,每ー个主链接点除了保存下ー个结点的地址外,还保存该学校专业信息链表的头结点地址。数据文件的存储结构:每条信息作为一条记录存放到二进制文件。(3)招生信息表:数据项名称数据项标志数据类型数据长度取值范围示例专业名称nameString10“华科信安”专业编号maj_idString12“Olis”招生年份yearString10“2014”计划人数planint2“0-65535”“500”实际人数realint2“0-65535”“450”最高分maxint2“0-65535”“660”最低分minint2“0-65535”“600”在内存中的存储结构:存放在十字交叉链表中该专业信息链结点的招生信息链结点上,每ー个结点保存下ー个招生信息结点的地址。数据文件的存储结构:每条信息作为一条记录存放到二进制文件。(4)专业历史统计信息链结点结构:数据项名称数据项标志数据类型数据长度取值范围示例招生时长num_yearlong8“3”专业名称nameString20“华科信安”总人数reallong8“1654”每年人数real_averdouble8“654.3”在内存中的存储结构:存放在专业历史统计信息的单向链表的结点中。数据文件的存储结构:不存入外存。(5)招生统计信息:数据项名称数据项标志数据类型数据长度取值范围示例招生年份yearString15“2013”实际总人数realint2“0-65535”“365”计划总人数planint2“0-65535”“221”在内存中的存储结构:存放在招生统计信息的单向链表的结点中。数据文件的存储结构:不存入外存。(6)髙校分类统计信息:数据项名称数据项标志数据类型数据长度取值范围示例髙校编号uni_idString3“001-999”“00ド高校名称nameString20“华中科技大学”专业数量num_majint2“0-65535”“100”招生信息数量num_claint2“0-65535”“300”平均每年实际招生数realint2“0-65535”“7800”平均每年计划招生数planint2“〇ー65535”“7456”在内存中的存储结构:存放在高校分类统计信息的单向链表的结点中。数据文件的存储结构:不存入外存。(7)总录入信息统计信息:数据项名称数据项标志数据类型数据长度取值范围示例高校编号uni_idString3“001-999”“001”专业名称nameString15“华科信安”招生年份yearString15“2014”在内存中的存储结构:存放在总录入信息统计信息的单向链表的结点中。数据文件的存储结构:不存入外存。系统主要涉及“高校”、“专业”和“招生”3类信息。“高校”信息由高校编号、高校名称、高校地址和联系电话等数据项目组成,“专业”信息由专业编号、专业名称等数据项目组成,“招生”信息由招生年份、招生计划、实际招生、最高分数和最低分数等数据项目组成。在磁盘上,采用3个文件分别存储“高校”、“专业”和“招生”的数据。在“专业”信息中增加高校编号,在“招生”信息中增加高校编号和专业编号。高校信息表,专业信息表和招生信息表在内存中构成一个三向十字交叉链表。3.2主要算法设计这部分主要描述系统中的模块实现的流程,可采用流程图的方式表示各模块的算法流程。.数据保存模块算法思想:(1)分别打开三个需要被写入信息的文件(2)将存在在链表中的信息写入文件(3)保存文件并关闭函数原型:/**函数名称:SaveSysData函数功能:保存系统代码表和三类基础数据.输入参数:hd主链头结点指针输出参数:返回值:BOOL类型,总是为TRUE*调用说明:/BOOLSaveSysData(UNI_NODE*hd)(UNI_NODE*pUniNode=hd;FILE*pFile;pFile=fopen(gp_uni_info_filename,"wb");while(pUniNode!=NULL)(fwrite(pUniNode,sizeof(UNI_NODE),l,pFile);pUniNode=pUniNode->next;}fclose(pFile);MAJ_NODE*pMajNode;UNI_NODE*pUniNodel=hd;pFile=fopen(gp_maj_info_filename,"wb");while(pUniNode1!=NULL)pMajNode=pUniNodel->snext;while(pMajNode!=NULL)Ifwrite(pMajNode,sizeof(MAJ_NODE),1,pFile);pMajNode=pMajNode->next;}pUniNode1=pUniNode1->next;fclose(pFile);UNI_NODE*pUniNode2=hd;MAJ_NODE*pMajNodel;CLA_NODE*pClaNode;pFile=fopen(gp_cla_info_filename,"wb");while(pUniNode2!=NULL)pMajNodel=pUniNode2->snext;while(pMajNodel!=NULL)(pClaNode=pMajNodel->cnext;while(pClaNode!=NULL)(fwrite(pClaNode,sizeof(CLA_NODE),1,pFile);pClaNode=pClaNode->next;)pMajNode1=pMajNodel->next;)pUniNode2=pUniNode2->next;}fclose(pFile);returnTRUE;}.数据备份模块:算法思想:(1)创建一个以时间为文件名称的空文件(2)分别从三个已经保存的文件中读出信息并按顺序写入该文件中(3)保存文件,并关闭。函数原型:/**函数名称:BackupSysData函数功能:将系统代码表和三类基础数据备份到ー个数据文件.输入参数:hd主链头结点指针*输出参数:返回值:BOOL类型,总是为TRUE*调用说明:ツBOOLBackupSysData(UNI_NODE*hd)(chari=0;UNI_NODE*pUniNode=hd;charnum[3]={0};StatNum(num);time」now;time(&now);char*fileName=ctime(&now);FILE*pFile;deletech(fileName,15);char*pl=n.datn;fileName=strcat(fileName,pl);if((pFile=fopen(fileName,,,wb,,))==NULL)(returnFALSE;}fwrite(num,sizeof(num),1,pFile);for(i=0;i<num[0];i++)(fwrite(pUniNode,sizeof(UNI_NODE),1,pFile);pUniNode=pUniNode->next;}MAJ_NODE*pMajNode;UNI_NODE*pUniNodel=gp_head;while(pUniNode1!=NULL){pMajNode=pUniNodel->snext;while(pMajNode!=NULL){fwrite(pMajNode,sizeof(MAJ_NODE),l,pFile);pMajNode=pMajNode->next;pUniNode1=pUniNodel->next;UNI_NODE*pUniNode2=gp_head;MAJ_NODE*pMajNodel;CLA_NODE*pChargerNode;while(pUniNode2!=NULL)(pMajNode1=pUniNode2->snext;while(pMajNodel!=NULL)(pChargerNode=pMajNodel->cnext;while(pChargerNode!=NULL)(fwrite(pChargerNode,sizeof(CLA_NODE),1,pFile);pChargerNode=pChargerNode->next;)pMajNodel=pMajNodel->next;}pUniNode2=pUniNode2->next;}fclose(pFile);returnTRUE;).数据恢复模块:算法思想:(1)输入需要读取的文件的文件名(2)从该文件中读出信息并按顺序分别写入三个保存信息的文件中(3)保存文件,并关闭。函数原型:BOOLRestoreSysData(UNI_NODE**phead,char*filename){UNI_NODE*hd=NULL,*pUniNode,tmpl;MAJ_NODE*pMajNode,tmp2;CLA_NODE*pClaNode,tmp3;FILE*pFile;intfind;intre=0;charnum[3];chari=0;if((pFile=fopen(filename,nrbn))==NULL)(returnFALSE;)fread(num,sizeof(num),1,pFile);fbr(i=O;i<numfO];i++)(fread(&tmpl,sizeof(UNI_NODE),1,pFile);pUniNode=(UNI_NODE*)malloc(sizeof(UNI_NODE));*pUniNode=tmpl;pUniNode->snext=NULL;pUniNode->next=hd;hd=pUniNode;)gp_head=hd;fbr(i=0;i<num[l];i++)fread(&tmp2,sizeof(MAJ_NODE),1,pFile);pMajNode=(MAJ_NODE*)malloc(sizeof(MAJ_NODE));*pMajNode=tmp2;pMajNode->cnext=NULL;pUniNode=hd;while(pUniNode!=NULL&&strcmp(pUniNode->uni_id,pMajNode->uni_id)!=0)(pUniNode=pUniNode->next;)if(pUniNode!=NULL) {pMajNode->next=pUniNode->snext;pUniNode->snext=pMajNode;)else(free(pMajNode);for(i=0;i<num[2];i++)fread(&tmp3,sizeof(CLA_NODE),1,pFile);pClaNode=(CLA_NODE*)malloc(sizeof(CLA_NODE));*pClaNode=tmp3;pUniNode=hd;find=0;while(pUniNode!=NULL&&find==0)pMajNode=pUniNode->snext;while(pMajNode!=NULL&&find==0)(if(strcmp(pMajNode->maj_id,pClaNode->maj_id)==0)(find=1;break;)pMajNode=pMajNode->next;)pUniNode=pUniNode->next;}if(find)(pClaNode->next=pMajNode->cnext;pMajNode->cnext=pClaNode;}else(free(pClaNode);)}fclose(pFile);returnTRUE;).录入高校信息模块:算法思想:(1)输入需要录入的高校的信息(2)将信息写入高校信息的链表中函数原型: if(selectnum==l)TOC\o"1-5"\h\zchar*plabel_temp[]={"高校编号: シ”高校名称: ”,”联系电话: シ”高校地址: ”,”确定取消”};if(ShowModuleInput(plabel_temp,5)==(l3+5))(peel(plabel_temp,4);UNI_NODE*puni_node=(UNI_NODE*)malloc(sizeof(UNI_NODE));strcpy(puni_node->uni_id,plabel_temp[0]);strcpy(puni_node->name,plabel_temp[1]);strcpy(puni_node->tel,plabel_temp[2]);strcpy(puni_node->addr,plabel_temp[3]);puni_node->snext=NULL;puni_node->next=NULL;if(SeekUniNode(gp_head,puni_node->uniJd)==NULL)(char*pCh[]={”已经成功录入山确定”};ShowModule(pCh,2);puni_node->next=gp_head;gp_head=puni_node;)else{char*pCh[ド{"已有该高校信息","确定"};free(puni_node);ShowModule(pCh,2);}}.修改高校信息模块:算法思想:(1)输入需要修改的高校编码(2)读入需要修改的信息并保存(3)遍历高校信息链表,找到匹配的节点,将保存的信息写入找的节点的位置函数原型:if(selectnum==2)(char*plabel_tempロ={"输入高校编号: ","确定 取消"};if(ShowModuIeInput(plabel_temp,2)==(l3+2))(peel(plabel_temp,1);if(SeekUniNode(gp_head,plabel_temp[0])!=NULL)(UNI_NODE*puni_node=SeekUniNode(gp_head,plabel_temp[01);char*ppCh[5];chara[50],b[50],c[50],d[50],*pl="确定取消";sprintf(a,"高校编号:改%-20s”,puni_node->uni_id);sprintf(b,"高校名称:改%-20s”,puni_node->name);sprintf(c,"联系电话:改%-20s",puni_node->tel);sprirHf(d,"高校地址:改%-20s”,puni_node->addr);ppCh[0]=a;ppCh[l]=b;ppCh[2]=c;ppCh[3]=d;ppCh[4]=pl;if(ShowModuleInput(ppCh,5)==(13+5))peel(ppCh,4);if(strcmp(ppCh[O],plabel_temp[O])==O)(if(*ppCh[l]!=O)strcpy(puni_node->name,ppCh[1]);if(*ppCh[2]!=0)strcpy(puni_node->tel,ppCh[2]);if(*ppCh[3]!=0)strcpy(puni_node->addr,ppCh[3]);char*pCh[ド{"修改成功","确定"};ShowModule(pCh,2);]else(if(*ppCh[O]!=O)strcpy(puni_node->uni_id,ppChfO]);if(*ppCh[l]!=O)strcpy(puni_node->name,ppCh[1]);if(*ppCh[2]!=0)strcpy(puni_node->tel,ppCh[2]);if(*ppCh[3]!=0)strcpy(puni_node->addr,ppCh[3]);char*pCh[六{"修改成功","确定"};ShowModule(pCh,2);else(char*pChロ={"没有该高校","确定"};ShowModule(pCh,2);1}}.删除高校信息模块:算法思想:(1)输入需要修改的高校编码(2)遍历高校信息链表,找到匹配的节点,删除该接节点函数原型:if(selectnum==3)(char*plabel_temp[]={"输入高校代码: ","确定 取消"};if(ShowModuleInput(plabel_temp,2)==(l3+2))(peel(plabel_temp,1);if(SeekUniNode(gp_head,p!abel_temp[0])!=NULL)(if(DeleteUnitype(plabel_temp[O])==TRUE){char*pCh[ド{"删除成功","确定"};ShowModule(pCh,2);elsechar*pCh[ド{"未知错误删除失败","确定"};)else{char*pCh[]={"未有此高校信息","确定"};ShowModule(pCh,2);}]]}).查询高校信息模块:算法思想:(1)输入需要查询的高校信息(2)保存该信息,遍历高校信息列表,找出与该信息匹配的高校信息节点,并将这些节点保存在另一个链表中(3)输出该链表保存的信息函数原型:BOOLQueryUnilnfo(void)(TOC\o"1-5"\h\zchar*plabel_temp[]={ "高校编号: ","高校名称: ","联系电话: ","高校地址: ","确定取消"};if(ShowModuleInput(plabel_temp,5)==(l3+5)){UNI_NODE*puninode,*puninodex;peel(plabel_temp,4);inti,a=0,x=0;char*ppch[4],*pch[4];charb[50]="l=";charc[50]="2=";chard[50]="3=";chare[50]="4=";pch[O]=b;pch[l]=c;pch[2]=d;pch[3]=d;fbr(i=0;i<4;i++)(if(*plabel_temp[i]!=O)(strcat(pch[i],plabel_temp[i]);ppch[a]=pch[i];a++;}}switch(a)(case0:{char*pCh⑵产pl二”没有找到需要的信息”,*pz="确定”;pCh[0]=pl;pCh[l]=pz;ShowModule(pCh,2);retumTRUE;}casel:puninode=SeekUniNodeM(gp_head,a,ppch[0]);break;case2:puninode=SeekUniNodeM(gp_head,a,ppch[0],ppch(l]);break;case3:puninode=SeekUniNodeM(gp_head,a,ppch[0],ppch[l],ppch[2]);break;case4:puninode=SeekUniNodeM(gp_head,a,ppch[0],ppch[l],ppch(2],ppch[3]);break;}if(puninode==NULL)char*pCh⑵,*pl="没有找到需要的信息",*pz="确定";pCh[O]=pl;pCh[l]=pz;ShowModule(pCh,2);returnTRUE;)for(puninodex=puninode;puninodex!=NULL;puninodex=puninodex->next){x++;)char*pCh[x+2],*pl="高校编号高校名称联系电话高校地址",*pz="确定pCh[O]=pl;pCh[x+l]=pz;fbr(i=O;i<x;i++)(pChfi+1]=(char*)malloc(sizeof(char)*l00);sprintf(pCh[i+1],"%-lOs%-1Os%-1Os%-1OsH,puninode->uni_id,puninode->name,puninode->tel,puninode->addr);puninode=puninode->next;)ShowModule(pCh,x+2);8.统计高校信息模块:算法思想:(1)遍历高校信息链表(2)保存需要的信息在各个变量中(3)对各个变量进行必要的运算并输出函数原型:BOOLStatUni(void)(BOOLbRet=TRUE;UNI_NODE*pUniNode=gp_head;MAJ_NODE*pMajNode;CLA_NODE*pClaNode;UNI_RANK_NODE*pUniRankNode,*head=NULL,*p1,*p2,*p3,*temp;longnum_maj=0,num_cla=0;doublereal=0;doubleplan=0;inti,count=0;if(pUniNode!=NULL){while(pUniNode!=NULL)(pUniRankNode=(UNI_RANK_NODE*)malloc(sizeof(UNI_RANK_NODE));count++;strcpy(pUniRankNode->uni_id,pUniNode->uni_id);strcpy(pUniRankNode->name,pUniNode->name);pMajNode=pUniNode->snext;while(pMajNode!=NULL)(num_maj++;pClaNode=pMajNode->cnext;while(pClaNode!=NULL)(num_cla++;real+=pClaNode->real;plan+=pClaNode->plan;pClaNode=pClaNode->next;)pMajNode=pMajNode->next;}pUniRankNode->num_maj=num_maj;pUniRankNode->num_cla=num_cla;pUniRankNode->plan=plan;pUniRankNode->reaI=real;num_maj=O;num_cla=O;plan=O;real=O;pUniRankNode->next=head;head=pUniRankNode;pUniNode=pUniNode->next;)pUniRankNode=(UNI_RANK_NODE*)malloc(sizeof(UNI_RANK_NODE));pUniRankNode->next=head;for(i=0;i<count-l;i++)(p1=pUniRankNode;p2=p1->next;p3=p2->next;while(p3!=NULL)(if(p3->num_maj>=p2->num_maj)(p2->next=p3->next;p3->next=p2;pl->next=p3;temp=p2;p2=p3;p3=temp;}p1=p1->next;p2=p2->next;p3=p3->next;head=pUniRankNode->next;char*pCh[count+2],*pl="高校代码高校名称专业数量招生信息数量平均年实际数平均年计划数",*pz="确定";pCh[0]=pl;pCh[count+l]=pz;for(i=0;i<count;i++)(pCh[i+l]=(char*)malloc(sizeof(char)*l00);sprintf(pCh[i+l],n%-lOs%-1Os%-1Old%-1Old%-12.1If%-12.1If;head->uni_id,head->name,head->num_maj,head->num_cla,(head->real)/3,(head->plan)/3);head=head->next;)ShowModule(pCh,count+2);}else(char*pCh[ド{“无髙校录入,,,”确定”};ShowModule(pCh,2);returnbRet;4系统实现与测试系统实现.本系统是在Windows8(64bit)平台上开发和运行的,使用CodeBlocks中的GNUGCC编译器进行编译的,符合最新C语言标准。.C语言定义各种数据类型如下。/**<高校编号・/**<高校编号・//**<高校名称・//**<联系电话・//**<高校地址・/charname[20];chartel[20];charaddr[20];structmaj_node*snext;/*歩〈指向高校信息支链的指针ッstructuni_node*next;/**v指向下ー结点的指针・/}UNI_NODE;专业信息链结点结构:typedefstructmaj_node{/**<专业编号/**<专业编号・//**<专业名称*//**〈高校编号・//**<指向专业信息支链的指针叼/*・く指向下一结点的指针・/charname[20];charuni_id[3];structcla_node*cnext;structmaj_node*next;}MALNODE;招生信息链结点结构:typedefstructcla_node{charmaj_id[12];charnameflO];charyearflO];intplan;intreal;intmax;intmin;structcla_node*next;}CLA_NODE;专业历史统计信息链结点结构:typedefstructmaj_history_node{charname[20];longnum_year;longreal;doublereal_aver;structmaj_history_node*next;}MAJ_HISTORY_NODE;招生统计信息链结点结构:typedefstructcla_sum_node{charyear[15];intreal;intplan;structcla_sum_node*next;}CLA_SUM_NODE;高校分类统计信息链结点结构:typedefstructuni_rank_node{charuni_id[3];charname[15];/**<专业编号・//**<专业名称・//**<招生年份・//**<计划人数・//**<实际人数・//**<最高分数・//**<最低分数*//**<指向下ー结点的指针・//**<专业名称・//**<招生时长・//**<总人数*//**<每年人数・//**<指向下ー结点的指针・//**<招生年份・//**<实际总人数・//**<计划总人数・//**<指向下ー结点的指针・//**<高校代码・//**<高校名称・/longnum_maj;longnum_cla;doublereal;longnum_maj;longnum_cla;doublereal;doubleplan;/**<专业数量*//**<招生信息数量*//**く平均每年计划招生数・//**<平均每年实际招生数・/structuni_rank_node*next;/**<指向下ー结点的指针・/}UNI_RANK_NODE;总录入信息统计信息链结点结构:typedefstructsum_node{charuni_id[3];charname[15];charyear[15];structsum_node*next;}SUM_NODE;/**<高校编号・//**<专业名称*//**<招生年份・//**<指向下ー结点的指针刃//・代码表加载・//*数据链表初始化・//・系统界面初始化・//・清屏・//・显示菜单栏・//・显示下拉菜单・//・显示弹出窗口*/3.系统中所使用的函数说明如下。intLoadCode(char*filename,char**ppbuffer);intCreatList(UNI_NODE**pphead);voidInitlnterface(void);voidClearScreen(void);voidShowMenu(void);voidPopMenu(intnum);voidPopPrompt(intnum);voidPopUp(SMALL_RECT*,WORD,LABEL_BUNDLE*,HOT_AREA*);/・弹出窗口屏幕信息维护・/voidPopOff(void); /・关闭顶层弹出窗口・/voidDrawBox(SMALL_RECT*parea); /・绘制边框・/voidLocSubMenu(intnum,SMALL_RECT*parea); /・主菜单下拉菜单定位・/voidShowState(void); /・显示状态栏・/voidTagMainMenu(intnum); /・标记被选中的主菜单项・/voidTagSubMenu(intnum); /・标记被选中的子菜单项・/
intDealConInput(HOT_AREA*phot_area,int*pihot_num);/・控制台输入处理*/voidSetHotPoint(HOT_AREA*phot_area,inthot_num); /・设置热区・/voidRunSys(UNI_NODE**pphd); /*系统功能模块的选择和运行・/BOOLExeFunction(intmain_menu_num,intsub_menu_num);/・功能模块的调用・/voidCloseSys(UNI_NODE*phd); /*退出系统・/BOOLShowModule(char**pString,intn);BOOLLoadData(void); /*数据加载・/BOOLSaveData(void); /*保存数据・/BOOLBackupData(void); /*备份数据・/BOOLRestoreData(void); /・恢复数据・/BOOLExitSys(void); /・退出系统・/BOOLHelpTopic(void); /*帮助主体・/BOOLAboutUni(void); /・关于系统・/BOOLMaintainUnilnfo(void);BOOLMaintainMajlnfo(void);/・维护高校信息・/・维护高校信息・//・维护专业信息・//・维护招生信息・/BOOLQueryUnilnfo(void);BOOLQueryMajlnfo(void);BOOLQueryClalnfo(void);/・查询宿舍楼信息・//*查询学生基本信息・//・查询缴费信息・///・统计专业热门度・//・专业分类统计・//・高校信息统计・/BOOLStatMajHistory(void);BOOLStatMajType(void);BOOLStatUni(void);BOOLStatSum(void);voidCharWindow(char*ch,SMALL_RECTp);/・回显字符・/voidStatNum(char*num);char*mstrcat(char*strq,char*c); /・链接函数定义・/BOOLInsertClaNode(CLA_NODE*ps_node);/・插入招生信息结点・/BOOLDelClaNode(UNI_NODE*phd,char*stu_id,char*date);/・删除招生信息结点・/BOOLDeleteUnitype(char*string); /・删除高校信息结点・
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包工包料施工合同
- 土地估价委托合同
- 三农产业发展规划策略方案
- 尾矿库施工方案
- 公路设施护栏施工方案
- 店招工程施工方案
- 2025年果蔬罐头加工项目建议书
- 平顶山古建基础施工方案
- 《红楼梦》阅读题选
- 自然保护区专项施工方案
- 【消毒供应中心护理人员职业暴露与安全防护探究5200字(论文)】
- 2025年湖南省邵阳市新宁县初三第一次联考综合试题含答案
- 2024-2025学年新教材高中地理 第三章 产业区位因素 第二节 工业区位因素及其变化(2)教案 新人教版必修2
- 常用焊管规格表
- 认知心理学:认知科学与你的生活
- 中国文学经典导读智慧树知到答案2024年华东政法大学
- DL∕T 1860-2018 自动电压控制试验技术导则
- 中国与澳大利亚双边贸易全景图(附中澳主要进出口产业数据)
- 【课件】+现实与理想-西方古典绘画+课件高中美术人美版(2019)美术鉴赏
- 离婚被告辩护词格式范文
- 2024年欧洲苯乙烯-马来酸酐共聚物市场主要企业市场占有率及排名
评论
0/150
提交评论