安徽工业大学软件工程实验报告

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

《软件工程》实验报告

******

学号:*********

班级:网133

指导老师:***

一.实验目的

1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。

2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。

3.培养良好的软件开发习惯,了解软件企业文化。

4.掌握结构化数据流分析技术。

5.掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。

6.掌握单元测试的一般步骤及技术。

7.掌握集成测试的一般步骤和技术。

二.实验内容

1.软件需求分析

①、功能需求分析

·输入一个年份(1-3000),然后显示12个月的月历

·能解决闰年和平年问题

·能输出显示结果

②、运行需求分析

·操作系统:Windows9x, Windows2000, Windows XP及更高版本

③、数据流图

软件结构图:

2.软件设计与编码

#include

#include

#include

#include

#define firstdayof1 1

/* 定义第一年的第一天,星期日=7 */ #define gap " "

/* set gap between numbers of dates */

#define dent " "

/* set right margin. */

struct info {

int month;

int firstdayofmonth;

int daysofmonth;

int leap;

}monthinfo;

int checkinput(void);

int inputyear(void);

int isleap(int y);

void output(struct info);

void printhead(struct info );

void printmonth(struct info);

struct info setinit(int);

struct info setmonthinfo(struct info );

/* 这个作用是判断年, 如果是闰年, return 1, 否则

return 0 */

int isleap(int y)

{

return ((y%4==0 && y%100!=0) || y%400==0);

}

/* This module is to accept inputyear() and check if it is correct. if it is correct it return int year, otherwise ask user reenter */

int checkinput(void)

{

int y;

do{

y=inputyear();

if(y<1 || y >3000)

{

printf("\n输入错误!。\n\n");

y=0;

}

}while(y<1);

return y;

}

/* This function is to accept the input year, if it is the integer, it returns

it, otherwise it return -1 */

int inputyear(void)

{

char s[80];

int i, y;

y=-1;

printf("请输入年份(1-3000):");

for(i=0;i<80;++i)

{

s[i]=getchar();

if(s[i]==27)

exit(0);

if(s[i]==10)

break;

}

for(i=0;i<80;++i)

{

if(s[i]==10) break;

else if(!isdigit(s[i]))

return y;

}

y=atoi(s);

return y;

}

/*This module is to accept monthinfo, and print the whole year calender. */

void output(struct info monthinfo)

{

char ch;

do{

printhead(monthinfo);

printmonth(monthinfo);

printf("按任意键显视下一月, 按Esc键退出. \n");

ch=getchar();

if(ch==27)

exit(0);

monthinfo=setmonthinfo(monthinfo);

}while(monthinfo.month<13);

}

/* This module is to accept monthinfo, amd print monthly head like"一月" */

void printhead(struct info monthinfo)

{

char *ss;

printf("%s",dent);

switch(monthinfo.month)

{

case 1: ss="一月";

break;

case 2: ss="二月";

break;

case 3: ss="三月";

break;

case 4: ss="四月";

break;

case 5: ss="五月";

break;

case 6: ss="六月";

break;

case 7: ss="七月";

break;

case 8: ss="八月";

break;

case 9: ss="九月";

break;

case 10: ss="十月";

break;

case 11: ss="十一月";

break;

case 12: ss="十二月";

}

printf(" %s%s%s%s\n\n",gap,gap,gap,ss);

}

相关文档
最新文档