学生信息管理系统c版(共7篇)
1.学生信息管理系统c版 篇一
附件1: 中国华电集团公司工程建设造价管理程序(C 版)
第一章 总 则 第一条 为认真贯彻中国华电集团公司(以下简称集团公司)工程建设为经营、生产服务的理念,合理控制工程造价,有效控制工程投资,特制定本管理程序。第二条 集团公司工程建设造价管理遵循三级管理的模式,即集团公司总部、二级机构(包括相关分子公司、上市公司、流域公司及相关专业公司,以下简称二级机构)、建设单位,按照不同权责实施对工程建设造价的全过程管理。第三条 工程造价管理是集团公司、二级机构和建设单位的共同职责。集团公司系统各有关单位都应牢固树立合理控制工程造价的意识,实行从集团公司、二级机构到各建设单位,从工程项目前期、设计、招标、建设实施到竣工各阶段的全方位、全过程的造价管理。第四条 本管理程序适用于集团公司全资或控股(含间接控股)建设的新、扩、改建工程。第二章 职责分工 第五条 集团公司全面负责工程建设造价管理工作,有关部门职责如下:
(一)工程管理部负责工程建设实施过程中的造价管理。1.负责制定集团公司工程建设造价管理程序。2.根据初步设计管理原则组织火电、风电、煤矿等工程项目的初步设计概算审查并批复,参与水电等工程项目的概算审查。3.负责按集团公司招标管理办法的要求审批工程项目年度招标计划、招标申请和招标结果。4.组织项目执行概算的审查并批复。5.负责对引起工程项目单位工程金额增加 100 万元及以上的设计变更费用的审查及批复(其中水电为在核准概算投资额度内,大型工程金额增加 1000 万元以上、中小型工程 500 万元及以上、煤矿为 1000 万元及以上的单项设计变更费用)。6.负责协调工程建设重大合同(工程建设重大合同目录见附件)执行过程中的重大问题,批复工程建设重大合同变更。7.负责执行概算中风险储备金使用的审核批准。8.负责归口管理工程建设结算工作。9.负责对二级机构工程造价管理的考核。
(二)规划发展部负责工程项目初(预)可研和可研阶段的造价管理,组织水电项目概算审查,负责水电项目概算调整工作,负责水电建设项目建设征地、移民安置费用的控制管理;参与项目初步设计及概算审查(如有),牵头确认列入工程概算的前期费。
(三)财务与风险管理部负责对建设工程进行财务监督和管理;指导二级机构、建设单位加强工程财务管理和工程竣工决算,审批项目单位的财务预算。
(四)资本运营与产权管理部负责指导二级机构、建设单位控制项目融资成本,减少财务费用支出。
(五)安全生产部负责生产准备成本控制管理,指导二级机构、建设单位控制生产准备成本,参与项目初步设计及概算审查(如有)。
(六)人力资源部负责工程项目建设期间人工成本的管理,指导二级机构、建设单位控制工程建设人工成本。
(七)办公厅负责工程建设项目管理车辆购置方案及费用的审批。
(八)审计部负责对工程建设全过程进行跟踪审计。
(九)监察部负责工程建设过程中的造价管理监督。第六条 二级机构工程建设造价管理职责
(一)根据本程序及集团公司工程建设管理制度的相关要求制定工程建设造价管理细则。
(二)按照集团公司有关规定,具体管理、指导项目前期工程费用。
(三)协助集团公司组织并参加工程概算审查。
(四)负责初审并上报所辖项目年度招标工作计划、需由集团公司批复的招投标文件,负责所辖项目除需由集团公司批复标段外招投标文件的审批。
(五)督促所辖项目做好执行概算编制的准备工作,参加执行概算审查。
(六)负责初审并上报所辖项目需由集团公司批复的设计变更费用和风险储备金的使用申请。
(七)负责初审并上报需由集团公司审批的工程建设重大合同执行中的问题和拟解决建议,督促建设单位落实集团公司批复意见。
(八)具体指导所辖项目做好工程结算工作。
(九)负责所辖水电项目概算调整报告的编制,由集团公司组织内审后,按国家相关规定报批。
(十)负责审查批准所辖项目上报的消缺项目、完善化项目和未完工程项目(以下简称尾工项目)及预算费用,并上报集团公司备案。负责所辖项目尾工的实施管理。
(十一)负责对所辖项目的工程造价管理考核。第七条 建设单位工程建设造价管理职责
(一)负责工程全过程造价管理的具体实施。工程造价管理是建设单位所有相关职能部门的共同职责,应由各相关职能部门按职能进行控制管理。建设单位应明确概算投资和工程造价的归口管理部门,其主要岗位人员应取得国家或行业工程造价专业资格证书。
(二)严格按批准的建设标准执行。工程项目不得擅自变更初步设计原则及增加工程造价。
(三)组织设计单位编制概算,协助集团公司做好概算审查。
(四)按集团公司招标管理办法的要求编制年度招标工作计划、招标申请,履行审批程序后组织工程招标和评标,按规定履行招标结果审批程序后实施。
(五)落实编制执行概算的各项条件,根据集团公司的有关规定组织执行概算编制,协助集团公司做好执行概算的审查工作并具体负责实施。
(六)建立概算管理和合同管理台账,对比分析工程实施过程中的概算执行情况及偏差。
(七)加强工程财务管理,优化资金结构,科学合理使用资金,降低财务费用,避免资金积压。
(八)按要求上报项目实施过程中的设计变更费用及风险储备金的使用申请。
(九)按集团公司有关规定开展工程结算工作,工程项目在规定时间内编制完成竣工结算总报告并按要求上报。
(十)按集团公司有关规定编制完成工程竣工决算报告。第三章 过程管理 第八条 初步设计(招标设计)阶段造价管理
(一)工程设计和设计审查要严格执行可研设计原则、集团公司项目投资决策意见及现行设计规程和标准,设计要进行多方案比较和技术经济方面的论证。火电工程积极推广限额设计,对照限额设计指标,确保各系统模块设计的投资控制在限额设计控制指标范围以内。
(二)设计概算 1.原则上设计概算不能超过估算(静态价格水平年相同)。2.批准的设计概算是工程建设投资的最高限额,在未编制执行概算前,作为建设单位上报年度投资计划、年度资金使用计划、落实资金额度、工程造价控制的主要依据。概算投资实行“静态控制、动态管理”。3.集团公司工程管理部组织有关部门参加火电、风电、煤矿等工程的初步设计概算审查。建设单位督促受委托审查单位尽快提出审查意见,由集团公司批复初步设计概算后实施。第九条 招标阶段造价管理 工程建设项目招标必须严格执行国家法律法规及集团公司相关管理规定。
(一)设备材料招标 1.设备材料采购应按照“安全可靠、指标先进、工程优质、运行高效”的原则,确定采购范围、技术标准、进口范围及供应商等。2.招标文件必须严格执行已确定的设计原则、选型和技术参数。经招标确定的设备,在合同签订和执行过程中严禁擅自扩大供货范围或提高标准。
(二)施工招标 1.施工招标应在招标文件和合同中准确描述合同价款的调整条件和办法。主体工程施工招标前必须组织招标文件的审查。采用总价合同时,除符合规定调整条件的情况外,合同总价应为固定价格。合同总价的调整条件一般有限额以上的设计变更、合同规定的工程量差、甲方现场签证、甲方另行委托零星施工项目和发生市场重大变化条件下的材料价差等。采用单价合同时,应为固定单价,并明确固定单价的风险范
围。2.对于地基处理和水下作业等受地质和水文条件影响较大的工程,或对于实际工程量与招标工程量可能发生较大变化的工程,或对于初步设计工程量明显不确定的工程,可以通过招标确定单价,根据预估的工程量计算出合同总价。工程竣工后,建设单位依据实际发生的工程量和招标确定的单价,与施工单位办理结算。3.施工招标文件中应明确在施工过程中,临时委托施工单位建设合同范围外工程时双方对该工程合同价格的确定方法。一般情况下采用双方认可的预算定额及取费标准再下浮一定百分比的方式。4.施工招标文件中必须明确甲供材料和乙供材料的具体范围。
(三)设计、监理、调试等服务类招标 设计、监理、调试等服务类合同招标时,招标文件中应明确投标人拟投入项目的主要服务人员(设总、总监、调总等)在合同执行期间不得随意更换,并设置具体的考核条款。设计招标文件中应明确对于设计文件质量、图纸交付进度等的具体量化考核条款。第十条 建设实施阶段造价管理
(一)执行概算 1.执行概算是集团公司控制工程造价的重要手段,是项目造价管理的主要控制目标和考核依据。2.执行概算的编制按照集团公司相关管理规定执行。执行概算应控制在批准的设计概算投资额度内,项目设置和价格确定应以满足工程管理需要、真实反映工程具体情况和市场价格水平为原则。3.经批准的执行概算是建设单位上报年度投资计划、年度资金使用计划、落实资金额度的依据。
(二)合同管理 1.建设单位必须严格按批复的招标结果签定合同。合同中涉及安全、质量、进度、造价的实质性条款必须与招标文件一致。合同谈判中如发生招投标过程中未出现且无法预见的新情况,使招投标的前提条件发生变化,拟签订合同的实质性条款与招标文件发生改变,按规定需上报审批的,建设单位必须将拟签订合同的主要条款、发生变化的原因按规定上报,得到批复后方可签订合同。2.建设单位应建立健全合同管理制度,严禁无合同付款。严格按照合同条款支付工程和材料进度款和结算款,不得超付、超前支付或拖期支付;严格按照设备合同供货范围、技术标准、运输方式和交货进度执行。3.合同执行过程中必须严格按照约定内容履行,建设单位不得擅自变更合同中涉及合同范围、价款支付、结算原则等实质性内容的条款。合同执行中如因特殊原因确需修改部分实质性条款,按规定需上报审批的,建设单位必须将发生变化的原因及拟修改的合同条款按规定上报,得到批复后方可变更。4.建设单位在购买甲供材料时应有各有关职能管理部门的会签程序。建设单位的工程、物资、计划和财务等部门以及监理单位应履行合同付款的审查和会签手续。建设单位应根据工程进度的需要,合理安排设备材料采购的时间,尽量减少库存物资所占用的资金,节约利息支出。5.建设单位与下属公司签订施工、设备保管、房屋租赁和后勤服务等方面合同时,达到国家法定招标条件的必须进行招标。禁止建设单位与下属的实业公司或关联公司签订施工、设备保管、房屋租赁和后勤服务等方面偏离市场合理价格的合同。6.建设单位与设计单位的合同中,应明确要求设计单位出施工图时不得指定设备或材料的厂家,一般情况下不得推荐只有一个设备或材料厂家符合图纸给定技术条件的方案。工程设计合同中应明确要求设计单位施工图设计阶段工程项目的主要实物工程量相对于初设阶段不应有较大的变化,并明确具体的奖惩条款。7.工程建设期间,建设单位应做好与合同有关的各种签证、记录和会议纪要的保管工作。
(三)设计变更 1.设计变更必须由设计单位编制变更单(必须附投资增减预算表),监理单位审核,建设单位审批。对已聘请设计监理的项目,所有的设计变更须由设计监理予以审核并提出意见。
21314-日颁发的《中国华电集团公司电源工程建设造价管理程序(B 版)》同时废止。
2.学生信息管理系统c版 篇二
关键词:管理信息系统,程序设计,面向对象
纵观我系各年级、各层次人才培养方案, 除去专业实习与毕业设计环节, 我校专科学生总共在校5学期, 程序设计语言类的课程开设共持续4学期, 本科学生总共在校7学期, 程序设计语言的开设共持续6学期, 虽然经过长时间的系统学习, 但是效果并不是很理想, 虽然我系的人才培养定位希望在广度上和深度上均有所突破, 针对面向过程和面向对象两类程序设计类课程, 开设有《C语言程序设计》、《面向对象程序设计》、《Java语言程序设计》、《Delphi语言程序设计》、《C#语言程序设计》、《.Net语言程序设计》等一系列程序设计类课程, 企图用程序设计语言的高覆盖率换取高就业率, 但大多数同学均感觉投入了过多的精力, 却没有精通任何一门程序设计类语言, 而且我系从事计算机相关工作的毕业生人数比例不到25%, 这与我们人才培养的初衷出现了严重的不一致, 通过跟踪走访, 就业后两到三年的时间内, 从其他行业转入计算机行业的比例显著增加, 针对该现象[1,2], 我们以《C语言程序设计》〉和《C++面向对象程序设计》两门课程为研究对象, 采取利用此两门语言编写同一套软件等方式, 让学生深刻理解面向对象和面向过程的区别, 从而推广到其他面向对象类程序设计类课程的教学中, 达到在缩短单门课程教学周期的同时, 提升学生实战经验的目的。
1 需求分析与概要设计
《C语言程序设计》作为我系开设的第一门程序设计类语言课程, 在第二学期开设, 学时为72, 为使学生以最快的速度进入实战状态, 我们选择数据库编程方向对学生进行训练, 只需满足增加、删除、修改和查询四种基本功能, 由于学生在此时还没有开设数据结构和数据库的相关知识, 故数据我们采取文本的方式进行存储[3]。基于此, 学生管理信息系统的功能模块图如图1所示。
2 具体实现
1) 主菜单的实现
主菜单采用switch () 语句进行菜单选择, 利用input_message () 进行信息录入, save_message (sum) 进行数据保存, output_message () 进行信息输出, renew_message () 进行数据更新, inquire_message () 进行信息查询, del_message () 进行数据删除。核心代码如下:
2) 删除信息模块
我们选择学号为主索引, 删除学生信息模块主要由函数del_num () 完成, 使用系统函数getch () 使屏幕停止, 具体代码如下:
3) 利用文本的方式存取数据
数据存取采用系统函数fopen () 、fwrite () 和fread () 实现, 具体代码如下:
3 结束语
本系统虽然功能简单, 但是对处在仅仅开设了《C语言程序设计》课程阶段的同学来说, 在对C语言程序设计课程进行全方位的理解来讲, 意义却是重大的, 其中对函数知识点熟练的运用, 对后续面向对象程序设计类课程的学习也打下了良好的基础。
参考文献
[1]Fang Zhou.General implement research of Program design inquiry method on software series course[C]//Chongqing, China:Proceed ings of the 2012 International Conference on Computational and Information Sciences (ICCIS 2012) , 2012.
3.学生信息管理系统c版 篇三
关键字: 信息技术 计算机与网络 探究式教学
二十一世纪是信息时代,信息技术成为社会成员必须具备的技术之一。当前,计算机与网络逐步渗透于各行各业,并与人们的日常生活越来越贴近,网络电话、智能小区、网上银行逐一亮相,数字化城市、数字化地球的呼声逐日提高,加上各商家、新闻媒体的推波助澜,使人们清醒的看到:不掌握信息技术知识和基本技能,将难以在现代信息社会中有效地工作和生活。电脑要从娃娃抓起,信息技术学科己成为中小学的必考课之一。
一、 信息技术课程的特点
首先,信息技术课程是一门理论和实践紧密结合的课程。
其次,信息技术课程是一门极富创造性的课程。
再次,信息技术课程是一门随时间变化,内容迅速更新的课程。
根据信息技术学科的基本特点,我在教学过程中坚持以教师为主导,学生为主体,采用了以下的几种教学模式,并取得可观效果。
1、边讲边练
我认为,信息技术学科是实践性非常强的学科,强调学生操作能力的培养。如果在教学过程中教师只是讲授理论知识,而不给学生充分的练习时间,信息技术教学就失去了它的意义;反之,教师不讲,只让学生盲目的上机练习,那么,学习效率难以保证,很多中学生的心理比较脆弱,自学能力较差,面对一无所知的新兴知识茫然无措,上过一、两节这样满头雾水的课之后,就会失去对该课程的兴趣。所以一堂课我一般只安排15-20分钟进行讲解、示范,按照需要,该堂课的内容可以一次讲完,也可以分几次进行,讲完一个问题就让学生实践一下,等他们掌握以后再讲下一个知识点。这样每堂课讲授的知识学生们都能应用于实践并得到巩固,最后达到熟练掌握。
2、结合多媒体课件,使教学过程形象、生动
多媒体课件以其生动的图像、声音等效果已越来越受到各学科教师的欢迎。传统的教学强调教师讲的作用,在课堂上多是利用粉笔、黑板和幻灯,教学过程显得非常单调;而运用多媒体课件进行教学,可使学生手、脑、眼、耳并用,使学生有新颖感、惊奇感、独特感、直观感,能唤起学生的"情绪"和激发他们的兴趣,从而提高教学效率。
3、对知识进行归纳和总结,构成一条知识链
“ 高中信息技术学考 ”从开始实施以来,作为衡量学生成绩与教师能力的标尺一直倍受关注。与其他学科不同的是“信息技术”作为一种新兴的学科有着与其他学科不同的标准。有的人说他出身名门,他高雅、不俗,似乎傲雪独立。可是又不能很轻易的了解和掌握。知识点的零与散可与地理和历史有过之而不及。如何学好各知识点把不相关的知识串联起来建立起自己的信息技术知识库并且与学考上机无缝结合是一个看似容易却不好做到的事。
从这几年学生学考成绩来看,“信息技术”有他的坚硬一面也有他的软肋。我们从学生所得成绩的A、B、C、D来一一分析各个要点。
从无到有,“信息技术”作为一门学科的出现在没有先例可寻的基础上我们一中03年参加“第一届信息技术学考”同学们以优异的成绩来证明了这门科学是纸老虎的论证。为什么这届学生能取得这样的成绩呢?理由第一条当然是上下一心,共同努力的结果,这点没人反驳。第二条理由是什么?知识的归纳。怎样把如此多的知识连起来呢?这还要从计算机的整体结构上来分析。
第一计算机从1946年延生以来就是遵循“冯.诺依曼” 原理来建立了它的组成标准。所以说在学习这门科学的过程中必须掌握这个标准。不管学到什么地方,只要有计算机的地方就有“冯.诺依曼”原理的存在。这个原理可分为五部分:输入设备、输出设备、存储器、控制器、运算器。根据每部分又将知识点拓展开来进行计算机的学习。比如:输入设备就是我们最常见的一些外设,键盘、鼠标、扫描仪等。这些例子就是我们在学考题中所能找到的试题之一。还有:运算器和控制器,这两个的使用是相互相联的,所以我们必须教给学生它们给合起来起到的综合作用是什么?当然是起到了控制和指挥整个计算机的各个部件,使其能够协调的完成每一项任务。所以我们又可以告诉学生了,从这条功能知识点上我们又知道了上面所说的就是我们常常提到的计算机的心脏“CPU”了。那么CPU又叫什么名呢?一个叫微机处理器,另一个叫中央外理器。这样我们又可以找到考试当中的三个题了,全出自上面的知识点。所以我们必须教给学生学会抽丝学习方法。以学考为目的,把每一条知识点都当作考题来看,并且以不同的角度和方式出现在试题当中。学生要学会双重身份:老师与学生。
第二以上所说的全都是涉及硬件方面的。从软件方面我们又是怎样把知识点串起来呢?这还得从课本的第一章说起。计算机的组成是由“硬件”和“软件”两大部分组成,他们是衣服和身体的组合。我们知道“软件”这件衣服是对电脑硬件起到灵魂的作用。他分为两大部分:系统软件和应用软件。从这句话中我们又可以引申出若干条知识点。比如:系统软件常见的有哪些?我们可以做出回答来,有WINDOWS系统、DOS系统、LINIX系统、UNIX系统等,这些系统我们还可以把他们归纳为两部分,也就是“单道批处理系统”和“多道批处理系统”。从用途上来分又可以分为“服务器操作系统”、“网络操作系统”等。以上这些知识点我们可以在历年的考试当中能一一打倒。
所以说计算机的知识看起来似乎非常多而零乱,但只要我们静下心来是可以找到头绪的。我们可以定一个目标,以考试为目标把所看到的每一条知识都用互换方式考虑那同学们就会得到不同类型的试题了。这样看来学习计算机可不能生搬硬套了。要会用,要用活,这才能抽出计算机的精髓。从学生掌握不同的情况来看能过考试自然就会分出A、B、C、D了。从侧面来看我个人觉得信息技术学考是件好事。不管通过与否,总能让每一位同学进一步了解计算机的知识。没有通过的学生还可以进行后期的补考,强迫性的进行学习相关知识。古话说的好,教育学生要“因地制宜”。
信息技术教育的发展必然促进以后一批计算机方面的才子的诞生,更能很好的完善与之相关的配套设施。一个好的学校如果想要出成绩的话必须要有硬道理可言,什么是硬道理呢?那就是硬件的建设。鉴于我国当前的教育体制的现状,我们应该感谢学考,感谢一些例行的活动。因为有了这些才会更好的促进相关方面的建设和使用。“以考促建,以建促评,以评促进,相辅相承”这是我总结的出来的心德体会。
希望“信息技术学考”能够发挥出他更大的作用。不是以成绩为标准,而是要明确其目的,这样才会形成一个良好的循环机制以促进更多的学生喜欢上这门科学。
参考文献 《信息技术》 河北大学出版社,2002年1月
4.C语言课程设计学生选课系统 篇四
一、学生选课管理系统
第一部分:课程设计名称、目的、要求
第二部分:程序总体设计思路
第三部分:程序功能划分、图示及流程图
第四部分:程序设计数据、运行结果
第五部分:程序的优缺点
第六部分:心得体会
第七部分:附录(源程序)
第八部分:附录(参考文献)
目录
..............................................................................第一部分:课程设计名称、目的、要求
名称:学生选修课程系统设计
目的:运用C语言提高解决实际问题的能力 实验环境:Microsoft Visual C++ 6.0 内容:
假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。【功能】
系统以菜单方式工作
课程信息录入功能(课程信息用文件保存)--输入 课程信息浏览功能--输出
查询功能:(至少一种查询方式)--算法 按学分查询 按课程性质查询 学生选修课程(可选项)
第二部分:程序总体设计思路
由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:
程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图
【功能模块划分及其流程图】
本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:
1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login()4.退出界面函数:void bye_sys()
5.课程选择函数:void c_select()6.课程浏览函数:void c_view()7.课程查询函数:void c_search()8.课程增加函数:void c_add()9.课程删除函数:void c_delete()10.菜单函数:void index()11.主函数部分; main()
总体设计:
学生选课系统管理员登录学生登录新增课程删除课程课程浏览查询课程学生选课课程浏览课程查询c_add函数c_delete函数c_view函数c_search函数c_select函数c_view函数c_search函数
系统功能模块图
部分函数流程图:
1、课程选择函数:
开始输入要选择的课程的编号j=0;j
2、课程查询函数
开始输入要查询的课程的编号j=0;j 3、课程增加函数 开始输入要增加的课程的编号j=0;j 4、课程删除函数 开始输入要删除的课程的编号nj=0;j 本程序是一款应用软件,故数据设计、程序运行结果应在程序的 运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】 1、程序开始界面如下: 选择某个选项,如进行管理员登录,进行课程的增加 进入管理员界面: 2、再选择所要进行的操作,如进行课程增加,结果如下: 下面可以进行继续增加课程或者退出: 3、选择课程浏览,可以分页查看相应的课程信息: 第一页: 第二页: 4、课程查询 查找结果: 4、管理员课程删除操作: 删除后可以进行浏览,观察删除后的结果: 可见删除后只有一条记录。删除操作完成正确。下面进行学生操作的使用方法: 1、学生登陆界面: 2、选择学生选课选项: 3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。 第五部分:程序的优缺点 【程序的优点】 算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。 [算法上的优点]主要体现在以下三点: 1.程序采用main主函数方式设计,程序的主体的功能大都由该功能 完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。 2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。 3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。 [功能上的优点] 主要体现在以下两点: 1. 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2. 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。 【程序的缺点】 主要表现在以下两点: 1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。 2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。 第六部分:心得体会 选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。 本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。 通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。 程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。 对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。 总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。 第七部分:附录 一、参考文献: 1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社 2、严蔚敏主编,数据结构(C语言),清华大学出版社 3、崔单主编,C语言程序设计案例精粹,电子工业出版社 4、谭浩强主编,程序设计(第三版),清华大学出版社 二、源程序 #include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h” void index();//首页 void login();void bye_sys();//退出界面 void stu_login();//学生登录菜单 void c_select();void c_view();//课程浏览 void c_add();//增加课程 void c_delete();void c_searchs();//学生查询函数 void c_searchm();//管理员查询函数 void c_viewm();//管理员浏览函数 void c_views();//学生浏览函数 struct course//定义课程结构体 { int c_num; char c_name[20]; int c_score; int c_nelepeo;//课程已选人数 int c_melepeo;//课程人数上限 };struct student { char s_number[10]; char s_password[10];};struct manager { char m_name[10];char m_password[10];}; void index()//首页 { char input; printf(“nnttt*****************************n”); printf(“ttt 湖南大学学生选课系统n”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt**********设计者:刘晓斌******nnn”); input=getchar(); system(“cls”);} void login()//登陆界面 { void stu_login(); void man_login(); void bye_sys(); int input; do { system(“cls”); printf(“nnnt1.学生登录n”); printf(“t2.管理员登陆n”); printf(“t3.退出本系统n”); printf(“t请选择服务类别:”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3)//输入数不等于选项的时候打印画面 { printf(“nt输入出错!请重新选择~n”); printf(“nt按任意键返回选择页面~nt”); getchar();getchar(); system(“cls”); } if(input==3)//如果输入3退出系统 { bye_sys(); } }while(input!=1&&input!=2&&input!=3); switch(input) { case 1:stu_login();break; case 2:man_login();break; } } void bye_sys()//退出界面 { exit(0);} void man_login(){ void c_add(); void c_delete(); void c_view(); void c_searchm(); int in; do { system(“cls”); printf(“nnt1.新增课程n”); printf(“t2.删除课程n”); printf(“t3.课程浏览n”); printf(“t4.课程查询n”); printf(“t5.退出n”); printf(“nnt请选择服务种类:”); scanf(“%d”,&in); if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5) { printf(“nt没有这项服务t按任意重新选择”); getchar();getchar(); } }while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5); switch(in) { case 1:c_add();break; case 2:c_delete();break; case 3:c_viewm();break; case 4:c_searchm();break; case 5:login();break; } } void stu_login()//学生登录菜单 { void c_select(); void c_view(); void c_searchs(); void login(); int input; do { system(“cls”); printf(“nnnt--学生登陆--”); printf(“nnt1.学生选课n”); printf(“t2.课程浏览n”); printf(“t3.课程查询n”); printf(“t4.退出n”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3&&input!=4) { printf(“nt没有这项服务~n”); printf(“t按任意键重新选择”); getchar(); getchar(); } }while(input!=1&&input!=2&&input!=3&&input!=4); switch(input) { case 1:c_select();break; case 2:c_views();break; case 3:c_searchs();break; case 4:login();break; } } void c_select(){ int n,in,i=0,j;int flag=0; FILE *fp; FILE *fp1; char input; struct course courses[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); input=getchar(); input=getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 } printf(“nntt请输入你要选课程的编号:”); scanf(“%d”,&n); if((fp1=fopen(“courseselect.dat”,“rb”))==NULL) { fp1=fopen(“courseselect.dat”,“wb”); } else { fclose(fp1); fp1=fopen(“courseselect.dat”,“ab”); } for(j=0;j if(courses[j].c_num==n) flag++; if(flag==0) { printf(“nntt不存在对应课程n”); printf(“nntt继续选课请按1,退出请按2:n”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default: printf(“输入错误,将返回登录界面!n”); login();break; } } else { fwrite(&courses[j],sizeof(struct course),1,fp1); fclose(fp1); printf(“nntt选课成功t请选择:”); printf(“nntt1.继续选课”); printf(“nntt2.退出,返回登录界面!”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default:break; } } } void c_viewm()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); man_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{man_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_views()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); stu_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{stu_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_searchs(){ void stu_login(); void c_searchs(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1); } void c_searchm(){ void stu_login(); void c_searchm(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1);} void c_add()//增加课程 { void c_add(); void man_login(); int i=0,j,inp; FILE *fp; struct course course_new; struct course courses[10]; system(“cls”); printf(“nntt请输入课程信息”); printf(“nntt1.课程编号:”); scanf(“%d”,&course_new.c_num); printf(“nntt2.课程名字:”); scanf(“%s”,course_new.c_name); printf(“nntt3.课程学分:”); scanf(“%d”,&course_new.c_score); printf(“nntt4.课程已选人数:”); scanf(“%d”,&course_new.c_nelepeo); printf(“nntt5.课程人数上限:”); scanf(“%d”,&course_new.c_melepeo); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); for(j=0;j<=i-1;j++) if(course_new.c_num==courses[j].c_num) { system(“cls”); printf(“nnttt对不起,这个编号已经使用过nntt按任意键返回管理菜单”); getchar();getchar(); man_login(); break; } } if((fp=fopen(“course.dat”,“rb”))==NULL) { fp=fopen(“course.dat”,“wb”); } else { fclose(fp); fp=fopen(“course.dat”,“ab”); } fwrite(&course_new,sizeof(struct course),1,fp); fclose(fp); printf(“nntt信息输入完毕t按任意键继续”); getchar();getchar(); do { system(“cls”); printf(“nntt1.继续输入”); printf(“nntt2.返回管理菜单”); printf(“nntt请选择”); scanf(“%d”,&inp); if(inp!=1&&inp!=2) { printf(“输入不符合要求t按任意键重新选择”); getchar();getchar(); } }while(inp!=1&&inp!=2); switch(inp) { case 1:c_add();break; case 2:man_login();break; } } void c_delete()//查询后删除 { FILE *fp; int i=0,j,n,k,flag=0; struct course courses[10]; void c_delete(); void man_login(); printf(“nntt请输入你要删除的课程编号:”); scanf(“%d”,&n); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } else { printf(“nntt不存在任何课程t按任意键返回”); getchar();getchar(); man_login(); } for(j=0;j { if(courses[j].c_num==n) { flag=1; fp=fopen(“course.dat”,“wb”); for(k=0;k fwrite(&courses[k],sizeof(struct course),1,fp); fclose(fp); fp=fopen(“course.dat”,“ab”); for(k=j+1;k { fwrite(&courses[k],sizeof(struct course),1,fp); } printf(“nntt记录已删除!t按任意键返回ntt”); getchar();getchar(); man_login(); fclose(fp); } } if(flag==0) { printf(“nntt不存在对应的课程t按任意键返回”); getchar();getchar(); man_login(); } // printf(“nntt记录已删除!t按任意键返回ntt”); } int main(){ 一、题目内容的描述 学生通讯录管理系统设计 设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现。 功能要求如下: 1、能建立、修改和增删学生通讯录 2、能够按多种方式进行查询,例如按姓名、按电话号码等。 3、通讯录的数据保存在文件中,运行程序时将通讯录数据从文件读取到内存中。对通讯录进行增加、删除、修改学生数据后,提供功能菜单,可以将内存中修改过的通讯录重新保存至文件。 二、应用程序功能的详细说明 1、应用程序实现了可视化的系统操作界面。 2、对学生通讯录形成了系统化的管理,操作简便明了。 3、程序具有系统帮助,添加、显示、查询、刷新、删除、排序、保存、修改、读取学生通讯录的功能。各项功能均可按照文字提示操作,浅显易懂。 4、系统的各个功能模块都用函数的形式来实现(readfile()、seek()、modify()、sort()、insert()、del()、save()、menu())方便查看。 5.可以将信息保存在文件(“student.txt“)中,亦可将信息从文件中读取出来,灵活方便。 三、主要模块的算法描述 学生通讯录管理系统 刷新学生信息readfile() 查询学生信息seek() 增加学生信息insert() 显示学生信息display() 退出系统 修改学生信息modify() 删除学生信息del() 保存当前学生信息save() 汇总当前学生数目number() 系统帮助help() 查询学生信息 按姓名查询 退出 按学号查询 开始 以可读写的方式打开一个数据文件 将此文件的内容读出,并存入一个新的结构体类型的数组中。 调用menu()菜单函数 进入while()主循环 输入1-8中的一数值,选择相应操作。 输入是否为0 判断键值,调用相应函数,完成相应功能。 是否已对修改存盘 调用函数save()函数,进行写数据文件操作 结束 模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明。 模块二:录入学生信息 声明函数void readfile(),说明一个文件指针FILE *fp打开文 件“student.txt“。 模块三:学生信息的查找 声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支。 模块四:学生信息的修改 声明void modify()为学生信息修改函数,通过switch(item)设定 所要修改的项目。 模块五:刷新学生信息 声明void sort()将录入学生系按升序排列,用的是“冒泡排序法” 实现排序。 模块六:增加学生信息 声明void insert()插入学生信息,先通过判断学生是否存在,若 否则继续输入,若是则跳出,重新循环。 模块七:删除学生信息 声明void del()实现学生信息删除,通过学号对比确定要删除的信 息,然后用后一个替换掉。 模块八:显示学生信息 通过display()函数输出学生信息。 模块九:保存信息 通过fp=fopen(“student.txt“,“w“);写入信息。 模块十:汇总学生数目 通过number()函数将已有男女生及总学生数目汇总出来。 模块十一:系统帮助 通过help()函数帮助操作。 模块十二:界面菜单 通过switch(num)调用以上各函数,实现功能。 1、程序采用模块化设计,各模块独立,可分块调试,个模块由主函数控制调用。 2、其中主要模块(readfile()、seek()、modify())都是利用数组,指针来实现数据结构设计。 3、数据库设计的任务是确定系统所需要的数据库。数据库是表的集合,通常一个系统只需一个数据库。设计人 是根据需求分析,确定数据库所包含的表及字段、表间的关系,然后具体确定表的结构,包括字段名、字段类型及宽度,需要的索引等。根据对需求得到的数据结构进行分析,按数据输入输出的要求,确定表和表间的关系,进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求。通讯信息表包括以下字段:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。学号为主索引。 四、结束语 我设计的程序总体功能大都能够运行顺利,但有许多地方比较复杂,需要进一步修改,进行简化。通过这次课程设计的锻炼,我收获很多,具体归纳为以下几点: 1、首先,也是最重要的一点,学会如何将一个复杂的问题简化,将一个较大的问题分成几个小问题,再一一解决这些小问题。在设计一个程序之前,要学会对程序功能进行规划,将其分为几个不同的功能模块,要思路清晰,简单易用; 2、学会灵活运用已有的知识,同时适当的拓展一些知识;比如,这次设计过程中,有一些函数以前就很少用到,甚至没有见过,但对程序的设计及用户界面的改善带来方便; 3、解决问题时,要尽可能考虑全面。每一个细节都很重要,既要避免功能的重复,也要避免功能疏漏的地方! 4、在这次课程设计过程中,参考了许多资料,发现C语言真的很有意思!比如我看到一个关于用C语言编写的小程序:五子棋、俄罗斯方块、推箱子等,等这次课程结束后,我就想利用C语言编写这些小游戏。曾经认为C是个挺枯燥的课程,现在发现这不仅仅是个简单的课程,而是个很实用的计算机工具! 五、程序源代码清单 #include #include #include #define BUFLEN #define LEN #define N struct record { char code[LEN+1]; char name[LEN+1]; int age; char sex[3]; char time[LEN+1]; char add[30]; char tel[LEN+1]; char mail[30]; }stu[N]; int k=1,n,m; void readfile(); void seek(); void modify(); void insert(); void del(); void display(); void save(); void number(); void menu(); int main() { while(k) menu(); system(“pause“); return 0; } void readfile()//刷新学生信息 { char *p=“student.txt“; FILE *fp; int i=0; if ((fp=fopen(“student.txt“,“r“))==NULL) { printf(“Open file %s error! Strike any key to exit!“,p); system(“pause“); exit(0); } while(fscanf(fp,“%s %s%d%s %s %s %s %s“,stu[i].code,stu[i].name,&stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8) { i++; i=i; } fclose(fp); n=i; printf(“录入完毕!\n“); } void seek()//查询学生信息 ......void modify()//修改学生信息 ......void sort()//对学生信息按学号排序 { int i,j,*p,*q,s; char temp[10]; for(i=0;i { for(j=n-1;j>i;j--) if(strcmp(stu[j-1].code,stu[j].code)>0) { strcpy(temp,stu[j-1].code); strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp); strcpy(temp,stu[j-1].name); strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp); strcpy(temp,stu[j-1].sex); strcpy(stu[j-1].sex,stu[j].sex); strcpy(stu[j].sex,temp); strcpy(temp,stu[j-1].time); strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp); strcpy(temp,stu[j-1].add); strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j].add,temp); strcpy(temp,stu[j-1].tel); strcpy(stu[j-1].tel,stu[j].tel); strcpy(stu[j].tel,temp); strcpy(temp,stu[j-1].mail); strcpy(stu[j-1].mail,stu[j].mail); strcpy(stu[j].mail,temp); p=&stu[j-1].age; q=&stu[j].age; s=*q; *q=*p; *p=s; } } } void insert()//增加学生信息 ......void display()//显示当前学生信息 { int i; printf(“所有学生的信息为:\n“); printf(“学生学号,学生姓名,年龄,性别,出生年月,地址,电话,E-mail\n“); printf(“--------------------------------------------------------------------\n“); for(i=0;i { printf(“%6s,%7s,%5d,%5s,%9s,%8s,%10s,%14s\n“,stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } } void save()//保存当前学生信息 { int i; FILE *fp; fp=fopen(“student.txt“,“w“); for(i=0;i { fprintf(fp,“%s,%s,%d,%s,%s,%s,%s,%s\n“,stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } fclose(fp); } void number()//汇总学生数目 { int i,girl,boy=0; for(i=0;i if(strcmp(stu[i].sex,“1“)==0) {boy++;} girl=n-boy; printf(“男生人数是:%d\n女生的人数是:%d\n“,boy,girl); printf(“总的学生人数为:%d“,n); } void help()//系统帮助 { printf(“输入性别时男为1,女为2“); printf(“\n3.增加学生信息后,切记保存按7;\n“); printf(“\n4.谢谢您的使用!\n“); } void menu()//可视化的系统操作界面 { int num; printf(“ \n\n 学生通讯录管理系统 \n\n“); printf(“ *********************系统功能菜单************************ \n“); printf(“ -------------------------------- ------------------------------- \n“); printf(“ 1.刷新学生信息 2.查询学生信息 \n“); printf(“ ********************************************* \n“); printf(“ 3.修改学生信息 4.增加学生信息 \n“); printf(“ ********************************************* \n“); printf(“ 5.按学号删除信息 6.显示当前信息 \n“); printf(“ ********************************************* \n“); printf(“ 7.保存当前学生信息 8.汇总学生数目 \n“); printf(“ ********************************************* \n“); printf(“ 9.系统帮助 10.退出系统 \n“); printf(“ --------------------------------- ------------------------------ \n“); printf(“ ************************************************************ \n“); printf(“请选择菜单编号:“); scanf(“%d“,&num); switch(num) { case 1:readfile();break; case 2:seek();break; case 3:modify();break; case 4:insert();break; case 5:del();break; case 6:display();break; case 7:save();break; case 8:number();break; case 9:help();break; case 10:k=0;break; default:printf(“请在1-10之间选择\n“); } 一、关于账号 (一)账号生成 全国教师管理信息系统是按“两级建设,五级管理”来建设的,即国家搭建平台,省级二次建设;中央、省、市、县、校五级不同权限进行管理,各级账号是按《事业单位人员统计报表》上报的机构信息生成。 (二)账号分类 各级账号均设有四类账号,具有不同的管理权限和功能: (三)改名学校的账号 部分学校因故改名的,按下发账号的原学校名进行采集,同时各地做好此类学校的梳理和登记,此次采集结束后,省教育厅一并汇总报请教育部修改。 (四)附设班的账号 在各地账号内大部分划分了附设班账号,若该班与原学校为“一套人马,两块牌子”,建议启用原学校账号,附设班账号不使用。若为两支教师队伍,则分别采集信息。 二、关于采集范围 (一)学校范围 由政府、企业事业组织、社会团体、其他社会组织及公民个人依法举办的幼儿园、中小学校、中等职业学校、特殊教育学校、高等学校。具体范围见参考附件1。 (二)教师范围 学校在编教职工和签订一年以上合同的教师岗位、其他专业技术岗位和管理岗位教职工,离退休教职工信息不采集。 请注意:公办学校以教师所占编制为准,借调、挂职、交流等人员均由编制所在学校进行采集;公民个人依法举办学校的教师或公办学校临聘人员(各校自行确定是否采集),则采集签订一年以上劳动合同、缴纳社保的人员。 (三)信息范围 根据学校类别不同,相应采集教师基本信息、学习经历、工作经历、岗位聘任、教育教学、培训研修等方面的基础信息。具体指标见参考附件2。 三、关于采集流程 各地可根据实际情况,采取学校统一填报信息或教师上线填报信息的方式,进行信息采集,具体流程如下: (一)生成教师账号 学校系统管理员通过录入本校教师姓名、性别、出生日期、身份证件号码等4项基本信息,为教师生成账号。教师可使用账号登录系统,填报、查询个人相关信息。 (二)录入教师信息 学校信息管理员负责录入本校教师信息,可采取批量导入信息表或在线填报方式进行。 (三)审核教师信息 学校认真审核教师信息,信息审核无误后确认,报省级教育行政部门审核。 (四)做好监控管理 各校信息管理员要有效利用系统,及时掌握下级单位数据采集情况,做好督促监管工作,确保信息采集按进度开展。 四、关于时间节点 (一)测试时间 2016年10月30日前为各地培训、演练、测试时间,11月1日系统正式上线,正式采集信息。 (二)信息采集时间 2016年12月15日前各校完成本地信息采集审核,提交省级教育行政部门。 五、关于部分突出问题 采集信息量 1 C/S结构 在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网,Client/Server(C/S)。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源[3]。 这里客户和服务器都是指通信中所涉及的两个应用进程(软件)。使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。但在许多国外文献中,也经常把运行客户程序的机器称为client(这种情况下也可把client译为“客户机”),把运行服务器程序的机器称为server。所以有时要根据上下文判断client与server是指软件还是硬件。 它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件,因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统[4]。C/S模式的结构如下图1所示。 2 需求分析 需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答“系统必须做什么?”这个问题。 需求分析的任务还不是确定系统怎么样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求[5,6]。为了能够完成项目监控和管理的功能,经过需求分析,本系统必须具备如下功能: 1)员工、负责人修改密码; 2)添加、删除员工; 3)新建、编辑项目; 4)任务分配。 3 系统设计 3.1 系统总体设计 本系统通过对软件项目开发的各个环节进行设置,包括对员工信息的查询、添加、删除功能;项目的新建、编辑功能;负责人与员工、员工与员工之间交互操作的功能等。系统总体功能模块图如下图2所示。 3.2 主要功能模块实现 3.2.1 登录模块 运行程序时,启动登录界面,用户需要输入用户名以及密码,然后点击“登陆”按钮。当用户点击“登录”按钮时,判断是否输入了用户名和密码,若用户名或密码为空则提示“请输入用户名和密码”;若输入的用户名或密码与数据库中的记录不一致,则“提示用户名或密码输入有误”。若输入用户名和密码正确,当输入的用户名为负责人姓名时,则进入负责人主界面,当输入的用户名为员工姓名时,则进入员工主界面。该界面主要是的对数据库表的查询操作,将输入的信息与数据库中的记录相匹配,若成功则进入系统主界面。如图3所示为登录模块的实现流程图。 3.2.2 新建项目模块 主要功能及实现:实现项目的添加功能,并将项目信息添加到数据库中。输入项目基本信息中的各项,点击选择按钮将datagridview中显示的数据库中的员工姓名添加到相应的textBox中,点击确认按钮将设置了员工信息的项目信息界面添加到主界面的panel中,并将项目信息添加到数据库中,点击重置按钮,清空所有信息。点击退出按钮,则关闭新建项目界面。该界面中获取主窗体上的panel缓存在窗体的tag属性里,获取project_info界面上的groupBox,将groupBox中的组件赋值,将groupBox添加到panel中。新建项目界面如下图4所示。 3.2.3 任务操作模块 主要功能及实现:实现对员工进行任务分配的功能,窗体加载时从数据库中将数据绑定到datagridview中,该过程用到binding()函数,从datagridview中选择员工,点击添加按钮,添加到listview中,输入工作名称及备注,点击分配按钮,提示分配成功,并在flowLayoutPanel1组件中动态生成一个button组件,记录工作的信息,点击这个button,将信息显示到label中。动态生成button组件时用到组件的委托事件。任务操作界面如下图5所示。 3.2.4 项目信息模块 主要功能及实现:显示参与项目的人员,点击显示员工的按钮,弹出简介界面,点击编辑项目,弹出编辑界面,点击删除项目则将项目从数据库中删除。项目信息界面如下图6所示。 3.3 数据库设计 本系统使用的数据库软件为Sql Server2005。该数据库中一共包含5张表,即项目信息表ProjectInfo、项目状态表Projec tOprLog、员工信息表StuffInfo、员工状态表StuffOprStatusLog、用户信息表userInfo。以项目信息表ProjectInfo、项目状态表Pro jectOprLog为例具体说明其字段的设计。 (1)项目信息表ProjectInfo:用来保存项目基本信息等。其部分字段设计如下表1所示。 (2)项目状态表ProjectOprLog:用来保存项目交互操作信息。其部分字段设计如下表2所示。 4 结束语 项目管理信息系统从实践的角度出发,进行了需求分析,总体设计,详细设计,编码,测试,比较完整的实现了员工信息的查询、添加、删除功能,项目的新建、编辑功能,负责人与员工、员工与员工之间交互操作等功能,具有一定的实用价值,但其还有不足的地方,需要进一步的完善。 摘要:传统的项目信息的管理办法是采用人工方式,这种方式工作量大,工作效率低,造成人力、物力的浪费,针对这一问题,该文设计并实现了基于C/S的用户登录、人员信息管理、项目信息管理、任务分配等功能为一体的项目信息管理系统,该系统的实现对于企业中大量信息的管理具有一定的实用价值。 关键词:C/S,项目信息,管理系统 参考文献 [1]王德相.基于软件工程方法的信息工程监理的研究与应用[D].福建:厦门大学,2014. [2]曾显峰,梁俊杰,何花燕.基于B/S的高校毕业论文管理系统设计与实现[J].电脑与知识,2015,4(11):1-3. [3]胡怡之.基于C/S模式的工程信息管理系统的设计实现[J].铁道工程学报,2012(9):93-97. [4]冉林.基于C/S模式的学生信息管理系统的设计与实现[D].成都:电子科技大学,2007. [5]孟亚辉.浅谈软件项目开发过程中的需求分析[J].科技信息,2009(11):435-436. 【学生信息管理系统c版】推荐阅读: 简单学生信息管理系统10-11 VB课程设计--学生信息管理系统06-15 地理信息系统专业学生求职自我介绍07-25 基于ASP的学生信息管理系统的设计与实现07-15 信息管理系学生会生劳部期末工作总结10-04 学生教学信息反馈07-13 信息技术学生素质09-16 学生工作信息交流09-065.学生信息管理系统c版 篇五
6.学生信息管理系统c版 篇六
7.学生信息管理系统c版 篇七