软件课程设计面向过程

合集下载

软件工程 软件工程概述

软件工程 软件工程概述

计划
评价
运行速成原型的工作模型是一个循 环的模型。
1.快速分析 快速确定软件系统 的基本要求,确定原型所要体现的 特征(界面,总体结构,功能,性 能)
2.构造原型 考虑主要特征,快 速构造一个可运行的系统。有三类 原型:用户界面原型,功能原型, 性能原型。
3.运行和评价原型
螺旋模型将开发过程 分为几个螺旋周期,每 个螺旋周期可分为4个工 作步骤:
开发可通过使用现成的可复用构件组装
1、第一代软件工完提程成高,效—而率无和传需质统从量的头,软开降件始低构成工造本程,的以目此的达。到称
为构件工程。
2、第二代软件工程 — 对象工程
3、第三代软件工程 — 过程工程
4、第四代软件工程 — 构件工程
软件工程是一门新兴的边缘学科,涉及的学科多, 研究的范围广,研究的主要内容有以下几方面:
软件工程的发展已经历了四个重要阶段:
1.第一代软件工程 — 传统的软件工程 2.第二代软件工程 — 对象工程 3.第三代软件工程 — 过程工程 4.第四代软件工程 — 构件工程
软件工程的发展已经历了四个重要阶段:
1.第一代软件工程 — 传统的软件工程
60年代末到70年代为了
2.第二代软件工程 — 克对象服工“程软 件 危 机 ”
结构化设计方法 SD法(Structured Design) 结构化分析方法 SA法(Structured Analysis)
SA,SD,SP 法相互衔接,形成了一整套开发方 法。
原型化方法及其工作模型
什么是原型化方法(Prototyping Method)
原型——是软件的一个早期可运行的版本,它 反映了最终系统的部分重要特性。
本课程学习的主要内容

东北大学本科软件工程培养计划

东北大学本科软件工程培养计划

2013版软件工程一、统编序号:0841二、专业代码:X080902三、学位、学制:工学学士学位,学制为4年四、专业简介软件工程是研究大规模软件开发方法、工具和管理的一门工程科学。

其特点是按工程化的原则和方法来组织和规范软件开发过程,主要研究软件开发方法与环境、软件工具及集成技术、软件自动化及自动测试技术、软件质量控制、软件重用技术等内容。

软件工程专业培养系统掌握本专业所必需的基本理论、基本知识,掌握本专业的基本技能和方法,掌握较新的软件开发技术和软件项目管理方法,能熟练使用流行的软件环境与工具,特别是具备较强的软件开发实践能力和良好的软件工程素养,受到系统的软件开发技术的训练,具有获取新知识的能力,具有一定的软件工程职业技能,能在软件企业及其它企事业单位从事软件开发与应用、项目管理等工作的应用型高级技术人才。

五、培养目标及专业范围培养掌握软件工程领域基础理论知识和先进的开发技术,具备软件开发和管理能力,能从事软件系统分析、设计、开发和项目管理,适应社会主义市场经济和信息产业发展需要的实用性、复合型、国际化高级软件设计、开发及管理人才。

六、毕业生应获得知识和能力本专业毕业生应掌握软件工程领域坚实的基础理论和宽广的专业知识;具备工程实践能力,具备软件分析、设计、开发、维护能力,具备良好的系统分析与设计及项目管理能力,具备创新能力,具备国际竞争能力,具备独立工作能力和团队合作精神。

七、课程设置及学时分配比例注1:比例是本课群要到达的至少学分数占毕业要求至少总学分数的百分比注2:对于人文类选修课群至少到达学分的要求,除了本表所列出课程学分外,还包含其他的人文类选修课程(参见附表1)学分。

八、人文类选修课群4学分以上(特指以数字“3”开头的人文类选修课程)。

九、创新创业及技能选修课群凡完成学校规定的创新创业内容,按照《东北大学关于大学生创新学分工作的实施办法(讨论稿)》(东大教字[2009]17号)文件精神执行。

保龄球计分管理课程设计报告-孙魏东

保龄球计分管理课程设计报告-孙魏东

合肥学院计算机科学与技术系课程设计报告2016 ~2017 学年第1 学期课程面向过程综合设计课程设计名称保龄球计分管理系统学生姓名孙魏东学号1504092006专业班级软件工程(2)班指导教师周艳玲2016 年9 月一、需求分析1、问题描述打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。

一局分10 轮,每轮可滚球1次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。

计分规则如下:(1)若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。

(2)若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。

(3)若某一轮2次滚球未击倒全部10个瓶,则本轮不再滚球,该轮得分为这2次滚球所击倒瓶数之和。

2、程序有如下几个功能(1)从键盘录入比赛数据(2)计算总分排名并向屏幕输出排名信息(3)向自定义文件写入比赛数据保存到指定目录(4)退出系统二、算法设计1、设计思想因为这是一个计分系统 所以在主函数中采用switch结构来达到输入数字来进行选项操作。

然后通过定义大量的函数然后在swtich中来一个个调用函数来进行运算和处理。

由于要使得系统能一次输入多个人比赛记录并保存,读写文件时先把每局每个人数据存入一个能存放比赛数据的结构体链表中然后将整个结构体链表存入文件file中,读写文件一律采用字符读写方式读写。

输入比赛数据以及输出比赛最终数据时利用链表遍历依次输出,对于保龄球第十格击球的特殊性再加入if语句判断然后根据不同情况进行输入计算总分。

c语言课程设计影院管理系统

c语言课程设计影院管理系统

c语言课程设计影院管理系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计并实现一个简单的影院管理系统。

具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。

–理解函数的定义和调用。

–了解面向过程的编程思想。

2.技能目标:–能够使用C语言编写简单的程序。

–能够运用函数封装和模块化编程。

–能够设计和实现一个简单的影院管理系统。

3.情感态度价值观目标:–培养学生的编程兴趣和自信心。

–培养学生的问题解决能力和创新思维。

–培养学生的团队合作和沟通能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数的定义和调用,以及面向过程的编程思想。

具体安排如下:1.C语言的基本语法:–变量和常量的声明和使用。

–运算符和表达式的使用。

–控制语句的运用。

2.数据结构:–数组的声明和操作。

–链表的创建和操作。

–栈和队列的应用。

3.函数的定义和调用:–函数的声明和定义。

–函数的参数传递和返回值。

–函数的调用和调用栈。

4.面向过程的编程思想:–模块化编程和函数封装。

–程序的流程控制和错误处理。

–面向过程的编程实践。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:教师通过讲解和示例来传授知识,引导学生理解和掌握C语言的基本语法和数据结构。

2.讨论法:学生通过小组讨论和分享,互相学习和交流,培养团队合作和沟通能力。

3.案例分析法:教师通过分析真实的影院管理系统的案例,引导学生运用C语言编程解决实际问题。

4.实验法:学生通过编写和运行C语言程序,实践和巩固所学的知识,培养问题解决能力和创新思维。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C语言程序设计》或《C语言入门教程》。

2.参考书:《C Primer Plus》或《C和指针》。

3.多媒体资料:教学PPT、视频教程、编程案例和示例代码。

《C语言程序设计》课程标准

《C语言程序设计》课程标准

《C语言程序设计》课程标准课程名称:C语言程序设计课程编码:60415001总学时数:84适用专业:网络技术,软件技术,多媒体技术,电子技术等一、课程概述1.课程定位《C语言程序设计》课程是高职高专计算机类和电子信息类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。

所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。

学生毕业后工作岗位主要有程序员、计算机管理员、数据库管理员、软件测试等,在计算机各专业等相关行业中都将使用C语言作为应用系统开发设计语言,C语言也是计算机应用专业中《Java程序设计》、《C#程序设计》及其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试要求的主要程序设计语言。

2.课程设计思路本课程以“学生成绩管理系统”项目作为主线,采用边讲边练的教学互动形式,同时应用案例教学法,在课堂上导入贴近实际的程序设计实例。

教学过程中,首先提出项目目标,然后通过知识讲解、方法演示、实践演练、复习归纳,以解决实际问题的学习方法来学习软件开发。

二、课程目标1.总体目标通过本课程的学习,使学生能够具有结构化程序设计的思想,能够用C语言进行简单程序的编写,能够熟练的进行程序的调试和修改,同时具备软件开发所需要的协作精神,较强的上进心和责任感。

2.具体目标(1)职业技能目标○1培养学生编写规范化的程序代码○2自主的学习能力○3掌握面向过程编程的思想○4能够编制简单的C语言应用程序(2)知识目标○1掌握C语言的数据类型的定义与使用○2掌握程序结构设计的方法○3掌握数组定义与使用的方法○4掌握函数定义与使用的方法○5掌握指针的使用方法○6掌握文件的概念与使用方法(3)职业素质养成目标○1服务意识:能够为他人提供优质的服务○2文明、法制意识;合理利用所学知识,不做危害他人和社会的事○3吃苦精神:能承受软件开发带来的体力和脑力的压力○4合作精神:能够与他人进行合作,具有协调工作能力和组织管理能力○5较强的自我知识及技术更新能力;快速跟踪社会前沿技术及市场应用动态三、课程内容与要求表1 课程总体设计表2 学习单元设计四、实施建议(一)考核评价建议本课程采用理论考加题签的考试形式,即课程的总成绩由平时成绩(20%)+实验成绩(30%)+考试成绩(50%),课程实训单独计算成绩。

于完全工作过程的ASP

于完全工作过程的ASP

于完全工作过程的(C#)程序设计精品课程建设要点来源:互联网作者:佚名时间:2011-07-04 浏览:586摘要:联合XX省级精品课程《(C#)程序设计》的建设情况,本文总结了课程设计与开发、教学内容组织安排、教学方法和手段设计、教学队伍、实践教学环境建设、课程教学效果评价等精品课程建设要害环节建设过程,提出了加强高职高专精品课程建设的一些措施和方法。

关键词:精品课程;课程开发;教学设计;工作过程1 引言精品课程建设是高级学校教学质量与教学改革工程的重要组成部分。

《(C#)程序设计》是计算机利用专业职业技巧核心课程。

随着计算机技巧和网络互联的发展,虚拟企业联盟、移动办公等利用领域取得长足的进步。

微软配合以上技巧的发展顺应当今软件工业散布式计算、面向组件、企业级利用、软件服务化、以Web为中心等大趋势推出的.NET框架是软件开发的主流技巧,控制基础编程技巧是当今程序员和网络利用系统掩护人员必备的职业技巧之一。

本文联合省级精品课程建设的实践对如何建设精品课程进行论述和探讨。

2 课程设置2.1 课程性质与作用本课程是计算机利用专业职业技巧核心课程,从学习领域的的角度讲课程定位在散布式系统开发过程的学习。

学生在学习了面向过程的基础设计思想和面向对象的程序设计方法后,重点是通过以企业内部物流管理系统为例的一个工程实践,采用基于软件产品开发过程的教学设计,按照软件产品开发的规X与流程,造就学生的技巧利用能力和岗位职业能力。

基础定位参考根据如图1,课程定位在真实项目专业教室阶段。

2.2 课程设计的理念与思路几年来我们主动适应区域和行业经济发展的需求,以就业为导向,与企业进行了本质性接触。

通过召开专业建设研究会等多种情势,根据技巧领域和职业岗位(群)的职业能力请求,参照相干的职业资格标准和实践性专家的建议,建立突出职业能力造就的课程标准,规X课程教学的基础请求,进步课程教学质量。

在课程设计过程中邀请北大青鸟华光等企业行业专家全程参与。

课程标准

C++初级编程课程标准课程编码:COM1200 课程类别:必修课适用专业:软件技术(中加合作)授课单位:软件工程系学分:3 学时: 45编写执笔人及编写日期:审定负责人及审定日期:一、课程定位1、课程的性质与作用课程的性质:《C++初级编程》课程是软件技术(中加合作)专业的一门基础课程,是从事计算机程序设计的入门课程,同时也是培养计算机程序设计基础能力的重要课程。

本课程为实现计算机类应用型技能人才的培养奠定了坚实的基础,起到学习专业技能的引领作用。

通过本课程的学习使学生熟练掌握C++语言的基础语法结构,培养运用程序设计解决应用问题的思维,强化训练学生编程技能,从而达到培养学生的逻辑思维、编程思想、团队合作意识的目的。

课程的作用:本课程是软件技术(中加合作)专业的学生入校后开设的第一门计算机专业基础课程,其后继课程有c++中级编程、C++高级编程、Java程序设计、 程序设计、数据库技术、操作系统、软件项目等课程。

本课程是后续课程学习的基础,没有本课程的教学,很难进行后续课程——c++中级编程、数据结构、Visual C++程序设计等课程的学习和教学。

本课程的的教学对后续课程的学习起到了尤为重要的先导作用与奠基作用。

C++初级编程课程是软件技术(中加合作)专业的专业基础课程。

2、本课程与其它课程的关系阐述本课程与其他课程的关系(前导课程、后续课程)及相互所培养的职业能力支撑等,可以图表的形式来体现。

表1 前导、后续课程一览表其中,《微机基础》课程使学生掌握计算机基础知识,培养学生计算机基本操作技能,为C++课程的学习和开发工具的使用打下了基础;,C++初级编程讲述的基本语法为以后程序设计课程,如:《C++中级编程》、《C++高级编程》、《Java程序设计及实训》、《C#程序设计》等程序设计课程奠定了基础,起到了编程的支撑作用。

二、课程设计理念及思路课程设计理念:1、以应用为宗旨,以项目为载体重构课程内容高职教育是培养适应生产、建设、管理和服务一线需要的,德、智、体、美全面发展的高端技能型人才。

基于CDIO模式软件工程课程教学改革与实践田保军

内蒙古农业大学学报(社会科学版)2012年第6期(第14卷 总第66期)Journal of Inner Mongolia Agricultural University(Social Science Edition)No.6 2012(Vol.14 Sum No.66)基于CDIO模式“软件工程”课程教学改革与实践*● 田保军,刘利民(内蒙古工业大学信息工程学院,内蒙古呼和浩特010051)摘 要:软件工程课程的核心是以工程化的方法、工具和过程开发较大规模软件系统。

传统的教学模式和实践环节已经远远不能满足软件市场对人才的需要。

将国际上公认的适用于高等工科教育模式CDIO引入软件工程教学,以“做中学”和“项目案例”为载体组织教学活动,使学生不仅能知道本课程内容是什么,同时还能运用所学知识解决实际问题,真正达到学以致用的目的。

关键词:CDIO;软件工程;案例教学DOI:10.3969/j.issn.1009-4458.2012.06.046中图分类号:G642.0 文献标识码:A 文章编号:1009-4458(2012)06-0117-02一、引言 软件工程课程是IEEE-CS/ACM发布的本科生软件工程教育计划SE2004中的一门核心课程,该课程知识单元包括,软件需求、设计、构造、测试、演化、过程、软件工程管理以及软件工程标准和常用CASE工具。

[1-2]通过本课程的学习,可以使学生对软件工程的开发过程有较全面的了解,系统地掌握软件工程的基本概念、原理、实用的开发方法和技术,了解软件工程的发展动向,掌握开发软件项目的工程化方法以及在软件开发过程中应遵循的流程、准则、标准和规范等,具备计算机应用软件系统分析、设计、管理和书写文档的能力,使软件开发过程更加规范,以提高软件生产的质量与效率,进而培养学生的软件工程综合素质。

软件工程课程的特点是理论与实践是紧密结合,具有深刻的工程背景。

但传统的教学方法是以教师的书本讲授为主,学生被动地听,采用知识灌输的形式,而忽略它的工程教育本质属性,致使本来就没有软件工程实践经历的学生更加感觉到课程空洞、抽象,只能生硬地记住一些概念、原理,当进行实践时却无从下手,导致学生没有学习的主动性,反过来也影响教师教学的积极性,以至于软件工程成为国内各个高校很难上好的一门课之一。

学生籍贯信息记录簿课程设计报告

山东交通学院面向过程课程设计学生籍贯信息记录簿软件院(系)别信息工程系班级电气102班学号姓名杨其杭指导教师时间2011-8-29—2011-9-2课程设计任务书题目学生籍贯信息记录簿系(部) 信息工程系专业电气类班级102班学生姓名杨其杭学号8 月29 日至9 月 2 日共 1 周指导教师(签字)系主任(签字)年月日一、设计内容及要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。

具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(6)显示输出四川籍和非四川籍学生的信息并可分别存盘。

二、设计原始资料1、链表基础知识2、文件处理基础知识三、设计完成后提交的文件和图表1.计算说明书部分数据库设计分析#include<stdio.h>#include<string.h>#include<stdlib.h>#define LEN sizeof(struct Student)struct Student{char num[21];char name[256];char address[562];struct Student *next;};int n;//n为全局变量,本文件模块中各函数均可使用它struct Student *creat()//定义函数。

此函数返回一个指向链表头的指针{struct Student *p1,*p2;n=0;p1=p2=(struct Student *)malloc(LEN);printf("请依次输入学生的信息,输入学号为零时退出。

\n");printf("请输入学生的学号:\n");gets(p1->num);printf("请输入学生的姓名:\n");gets(p1->name);printf("请输入学生的地址:\n");gets(p1->address);head=NULL;while(p1->num[0]!='0')//当学号是0时,退出{n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(struct Student *)malloc(LEN);//开辟动态存储区,把起始地址付给p1printf("请输入学生的学号:\n");gets(p1->num);//输入其他学生的学号和成绩printf("请输入学生的姓名:\n");gets(p1->name);printf("请输入学生的地址:\n");gets(p1->address);}p2->next=NULL;system("cls");return(head);}void print_save(struct Student head){FILE *fp;struct Student *p;if(fp==NULL){printf("文件无法打开\n");exit(0);}printf("\n现在,有 %d 条记录,分别是:\n",n);p=&head;if(&head!=NULL)do{printf("\n学号:");puts(p->num);printf("\n姓名:");puts(p->name);printf("\n地址:");puts(p->address);fseek(fp,0,2);if(fwrite(p,sizeof(struct Student),1,fp)!=1)printf("文件无法写入\n");p=p->next;}while(p!=NULL);fclose(fp);//关闭文件getchar();system("cls");}struct Student *pt;//定义一个Student类型的指针char comp[3];//comp为保存输入的变量int main()//一个调用这个creat函数的main函数 c{void ShowView();//界面显示void name_surch();//按姓名查找void num_surch();//按学号查找void NativePlace_surch();//按籍贯查找void Delete_shiyan();//删除学生信息void modification_shiyan();//修改学生信息void fileout(struct Student *p);//文件输出void print_save(struct Student head);while(1){ShowView();if(strnicmp(comp,"1",3)==0)//strnicmp比较两个字符串的函数{pt=creat();//函数返回链表第一个结点的地址}else if(strnicmp(comp,"6",3)==0){print_save(*pt);}else if(strnicmp(comp,"3",3)==0)//输出文件内容{fileout(pt);}else if(strnicmp(comp,"2",3)==0){name_surch();}else if(strnicmp(comp,"7",3)==0){num_surch();}else if(strnicmp(comp,"9",3)==0){//modification();modification_shiyan();//修改学生信息}else if(strnicmp(comp,"4",3)==0){//Delete();Delete_shiyan();}{showSzechwan_No();}else if(strnicmp(comp,"8",3)==0){NativePlace_surch();}else if(strnicmp(comp,"0",3)==0){break;}else{printf("输入错误!!!!!!\n");}getchar();system("cls");}return 0;}void fileout(struct Student *p){FILE *fp;printf("现在有%d条记录,分别是:\n",n);fp=fopen("D:\\stduent.txt","rb");//0x00429af0if(fp==NULL){printf("文件无法打开\n");exit(0);}rewind(fp);while(!feof(fp)){fread(p,sizeof(struct Student),1,fp);//从文件中读取一块数据printf("%-15s",p->num);printf("%-15s",p->address);puts("\n");}fclose(fp);getchar();system("cls");}void ShowView()//主菜单{printf("*********************************************************************** ********\n");printf("**********************欢迎进入学生籍贯信息记录簿*******************************\n");printf("*********************************************************************** ********\n");printf("****1、cin添加*****\n");printf("****2、namesurch按名字搜索*****\n");printf("****3、fileout显示文件中的信息*****\n");printf("****4、delete删除学生信息*****\n");printf("****5、showSzechwan_No分别显示四川和非四川籍学生并非别存盘*****\n");printf("****6、save保存当前信息*****\n");printf("****7、numsurch按学号搜索*****\n");printf("****8、nativeplace安籍贯查询*****\n");printf("****9、modif修改学生信息*****\n");printf("****0、break退出*****\n");********\n");printf("********************请输入您的选择¥¥:");gets(comp);system("cls");//清屏}void name_surch(){FILE *fp;char surch[256];printf("请输入要查询的人的名字:\n");gets(surch);fp=fopen("D:\\stduent.txt","r");//0x00429af0if(fp==NULL){printf("不能打开文件\n");exit(0);}rewind(fp);//指向文件的开始while(!feof(fp))//查找{Student a;while(!feof(fp)){fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据if(!strcmp(,surch)){printf("%s,%s,%s\n",a.num,,a.address);break;}}if(!feof(fp)){return;}else{printf("查无此人····\n");fclose(fp);getchar();system("cls");}void num_surch(){FILE *fp;char surch[256];printf("请输入要查询的人的学号:");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x0042aab8if(fp==NULL){printf("ERROR");exit(0);}rewind(fp);//指向文件的开始while(!feof(fp))//查找{Student a;while(!feof(fp)){fread(&a,sizeof(Student),1,fp);//从p指向的文件读入一组数据if(!strcmp(a.num,surch)){printf("%s,%s,%s\n",a.num,,a.address);break;}}if(!feof(fp)){return;}else{printf("查无此人····\n");fclose(fp);getchar();system("cls");}void NativePlace_surch()//按籍贯查询{FILE *fp;char surch[256];printf("请输入要查询的人的籍贯:\n");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x00429af0if(fp==NULL){printf("文件打不开\n");exit(0);}rewind(fp);//指向文件的开始Student a;while(!feof(fp)){fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据if(!strcmp(a.address,surch))//相当于strcmp(a.address,surch)==0{printf("%s,%s,%s\n",a.num,,a.address);}}if(!feof(fp)){return;}fclose(fp);getchar();system("cls");}void showSzechwan_No()//分别显示四川和非四川籍学生并非别存盘{FILE *sfp;//指向四川籍学生文件sfp=fopen("D:\\四川stduent.txt","wb");if(sfp==NULL){printf("不能打开文件\n");exit(0);}FILE *ffp;//指向非四川籍学生文件ffp=fopen("D:\\非四川stduent.txt","wb");if(ffp==NULL)//ffp=0x0042aad8{printf("不能打开文件\n");exit(0);}fp=fopen("D:\\stduent.txt","rb");//0x00429af0if(fp==NULL){printf("不能打开文件\n");exit(0);}rewind(fp);//指向文件的开始printf("四川籍学生信息:\n");Student a;while(!feof(fp)){fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读取一组数据if(!strcmp(a.address,"四川")||!strcmp(a.address,"sichuan")||!strcmp(a.address,"sichuansheng")||!strcmp(a.addr ess,"四川省")){printf("%s,%s,%s\n",a.num,,a.address);if(fwrite(&a,sizeof(struct Student),1,sfp)!=1){printf("文件无法写入\n");break;}}else{if(fwrite(&a,sizeof(struct Student),1,ffp)!=1)printf("文件无法写入\n");}}fclose(fp);fclose(ffp);fclose(sfp);printf("非四川籍学生信息:\n");ffp=fopen("D:\\非四川stduent.txt","rb");if(NULL==ffp){printf("文件打不开\n");}while(!feof(ffp)){//此处有问题????????????????????????????????????fread(&a,sizeof(struct Student),1,ffp);//从p指向的文件读取一组数据if(a.num=="0")//ffp=0x0042aab8break;printf("%s,%s,%s\n",a.num,,a.address);}fclose(ffp);getchar();system("cls");}/*编写写入部分,完成修改,删除,四川与非四川籍分别保存的部分freab与fwrite用法的详细区别阐述*/void Delete_shiyan()//删除学生信息{FILE *fp;FILE *fptemp;char surch[256];printf("请输入要删除的人的学号:\n");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x00429af0fptemp=fopen("D:\\temp.txt","wb");if(fp==NULL){printf("文件打不开\n");exit(0);}Student a;while(!feof(fp)){mark:fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8if(0==strcmp(a.num,surch)){char p;printf("%s,%s,%s\n",a.num,,a.address);printf("如果以上信息与你要删除的人的信息对应,请输入(y/n):\n");scanf("%c",&p);if('Y'==p||'y'==p){goto mark;}}if(strcmp(a.num,surch)!=0){fwrite(&a,sizeof(struct Student),1,fptemp);}}fclose(fp);fclose(fptemp);FILE *aa;FILE *bb;aa=fopen("D:\\stduent.txt","wb");bb=fopen("D:\\temp.txt","rb");while(!feof(bb)){fread(&a,sizeof(struct Student),1,bb);fwrite(&a,sizeof(struct Student),1,aa);}getchar();system("cls");}void modification_shiyan()//修改学生信息{FILE *fp;FILE *fptemp;struct Student a;char surch[256];printf("请输入要修改的人的学号:\n");gets(surch);fp=fopen("D:\\stduent.txt","rb");//0x0042aab8fptemp=fopen("D:\\temp.txt","wb");if(fp==NULL){printf("文件打不开\n");exit(0);}rewind(fp);//指向文件的开始while(!feof(fp)){fread(&a,sizeof(struct Student),1,fp);//从p指向的文件读入一组数据fp=0x0042aab8if(0==strcmp(a.num,surch)){char p;printf("%s,%s,%s\n",a.num,,a.address);printf("如果以上信息与你要修改的人的信息对应,请输入(y/n):\n");scanf("%c",&p);if('Y'==p||'y'==p){printf("请输入要修改成的信息(学号、姓名、籍贯):\n");getchar();printf("学号:");gets(a.num);printf("姓名:");gets();printf("地址:");gets(a.address);}}fwrite(&a,sizeof(struct Student),1,fptemp);}fclose(fp);fclose(fptemp);FILE *bb;FILE *pp;bb=fopen("D:\\stduent.txt","wb");//0x0042aab8pp=fopen("D:\\temp.txt","rb");while(!feof(pp)){fread(&a,sizeof(struct Student),1,pp);fwrite(&a,sizeof(struct Student),1,bb);}getchar();getchar();system("cls");}2.图纸部分:程序流程图四、进程安排(1)第一天完成创建信息链表并以磁盘文件保存,读取磁盘文件并显示输出所有学生的籍贯信息的功能;(2)第二天完成按学号或姓名查询其籍贯,按籍贯查询并输出该籍贯的所有学生的功能;(3)第三天完成显示输出四川籍和非四川籍学生的信息并可分别存盘的功能并修饰;(4)第四天完成能添加、删除和修改学生的籍贯信息的功能并完善;五、主要参考资料[1] 马安鹏.Visual C++程序设计导学。

全套电子课件:软件工程-理论与实践(第3版)

40多年来,软件工程率已,经保证历软了件四质个量重的要关发键是展“阶软段件:过
程”,是软件开发和维护中的管理和
1.第一代软件工程 支—持传能力统,的逐软步件形工成程软件过程工程。
2.第二代软件工程 — 对象工程
3.第三代软件工程 — 过程工程
4.第四代软件工程 — 构件工程
90起年代,基于构件(Component)
螺旋模型将开发过程 分为几个螺旋周期,每 个螺旋周期可分为4个工 作步骤: 第一,确定目标、方案 和限制条件; 第二,评估方案、标识 风险和解决风险; 第三,开发确认产品; 第四,计划下一周期工 作。
6.智能模型(intelligent model)
也称为基于知识的软件开发模型,是知识工程 与软件工程相结合的软件开发模型。
软件工程是一门新兴的边缘学科,涉及的学科多, 研究的范围广,研究的主要内容有以下几方面:
软件开发方法、技术 软件开发工具及环境 软件管理技术 软件规范(国际规范)
} 软件开发技术 } 软件管理技术
1.2 软件工程过程
为了克服软件危机,人们从其他产业的工业 化生产得到启示,于是在68年北大西洋公约的软 件可靠性会议(NATO)上,首次提出了“软件工 程”的概念。提出了在软件生产中采用工程化的 方法,采用一系列科学的、现代化的方法技术来 开发软件。这种工程化的思想贯穿到软件开发和 维护的全过程。
2. 增量模型(incremental model)
增量模型是一种非整体开发的模型。是一种进 化式的开发过程。
根据增量的方式和形式的不同,分为: 基于瀑布模型的渐增模型 基于原型的快速原型模型 该模型具有较大的灵活性,适合于软件需求不 明确、设计方案有一定风险的软件项目。
增量模型和瀑布模型之间的本质区别是什么?
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、面向过程 第五题: 1. 题目: 编程序,使 用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。

2. 需求分析:

本题要求计算所给日期是星期几,需要计算该日期到一月一号有多少天,根据一星期七天的循环,然后计算所求,前提是必须给定一月一号是星期几,同时还要判断本年是否为瑞年。 测试数据: 【输入数据】:2009 1 2 一月一号:friday 【输出数据】:saturday 【输入数据】:2011 3 1 一月一号:saturday 【输出数据】:tuesday

3.设计概要: 1、编写函数体int days(int year,int month ,int day )用来统计所计算的日期到一月一号的天数; 2、编写主函数,输入日期,输入一月一号是星期几; 3、调用函数计算总天数; 4、利用一星期七天的循环 a=days(year,month,day)%7,计算该日期是星期几;

3. 详细设计与编码 (1) 流程图: 主函数

输入所判断的日期 输入一月一号是星期几 调用函数days()计算 利用数组存放星期str[],days%7,计算结果 (2)源程序: #include #include using namespace std ; int days(int year,int month ,int day ) { int d; if(((year%4==0)&&(year%100!=0))||(year%400==0)) switch(month) { case 1:d=day;break;case 2:d=31+day;break;case 3:d=60+day;break;case 4:d=91+day;break;case 5:d=121+day;break;case 6:d=152+day;break; case 7:d=182+day;break;case 8:d=213+day;break;case 9:d=244+day;break;case 10:d=274+day;break;case 11:d=305+day;break;case 12:d=335+day;break; default:cout<<"error\n"; } else switch(month) { case 1:d=day;break;case 2:d=31+day;break;case 3:d=59+day;break;case 4:d=90+day;break;case 5:d=120+day;break;case 6:d=151+day;break; case 7:d=181+day;break;case 8:d=212+day;break;case 9:d=243+day;break;case 10:d=273+day;break;case 11:d=304+day;break;case 12:d=334+day;break; default:cout<<"error\n"; } return d-1; } void main() { string str[]={"monday","tuesday","wednesday","thursday","friday","saturday","sunday"},weekday; int year,month,day,i,a;cout<<"年、月、日:">year>>month>>day;cout<<"本年一月一日是星期几 ";cin>>weekday; for(i=0;i<=6;i++) if (str[i]==weekday) break; a=days(year,month,day)%7; int h=(i+a)%7; cout<}

5.调试分析

编写此程序,主要编写一月一号到所给日期的天数,其次就是根据一星期七天的循环,计算在一月一日是星期几的基础上,实质上又过去几天。编写天数要考虑到是否为瑞年等等, 用数组str[]存放星期一到星期日,若星期i就是str[i-1],再过a天是str[(i-1+a)%7]。

6.用户使用说明

【step1】打开源程序 【step2】输入一个日期 【step3】输入一月一号是星期几

7.测试分析 输入数据: 2009 1 2 一月一号:friday 结果

输入数据: 2011 3 1 一月一号:saturday 结果:

分析:输出结果与预设值完全一致,证实了程序的正确性! 8.实验体会

通过此题的编写加深了我对switch()结构的运用,同时对瑞年的判断的算法也更为熟

悉。

第五题

1.题目:

编程序,循环进行如下的处理过程:由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。直到用户回答说不再继续做了时结束程序。

2.需求分析 可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。

3.概要设计 1、编写四个关于四则运算的正确判断的函数,其函数有统计用户做题正确与错误的个数的作用,并且用户可以控制该函数的停止与运行,同时用户可以选择一位运算或者是两位运算; 2、定义主函数,让用户选择所要测试的运算符号; 3、调用对应的函数体进行测试; 4、用户有自主停止,且改换其他运算测试的机会; 5、结束运行。

4.详细设计与编码 (1)流程图:(略)

(2)源程序: #include using namespace std; #include #include void f1(int t); void f2(int t); void f3(int t); void f4(int t); void main() { char a='+',h='Y';int t,i; for(i=1;h!='N';i++) { cout<<"选择类型(+,-,*,/):">a; cout<<"一位运算或两位运算(1或2):">t; if(a=='+') f1(t); else if(a=='-') f2(t); else if(a=='*') f3(t); else if(a=='/') f4(t); else cout<<"error!">h; } } void f1(int t) {int x,y,s,i,a=0;char h='Y'; for(i=1;h!='N';i++) { if(t==1) { x=rand()%10; y=rand()%10; cout>s; if(s==x+y) {cout<<"good!">s; if(s==x+y) {cout<<"good!">h; if(h=='N') {cout<<"做题总数:"<} } void f2(int t) {int x,y,s,i,a=0;char h='Y'; for(i=1;h!='N';i++) { if(t==1) { x=rand()%10; y=rand()%10; cout>s; if(s==x-y) {cout<<"good!">s; if(s==x-y) {cout<<"good!">h; if(h=='N') {cout<<"做题总数:"<}

相关文档
最新文档