安工大软件工程实验指报告

更新时间:2023-11-08 23:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《软件工程》实验报告

指导老师:周兵 专业班级:软件工程班 学号: 姓名:

安徽工业大学计算机学院

2015年5月

1

实验题目:编制一个万年历程序

要求:输入一个年份(1-3000),然后显示12个月的月历,如屏幕显示不下,则应提供翻页功能。

一. 实验目的

1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。 2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。

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

二. 实验内容 1. 软件需求分析

1、功能需求分析

输入一个年份(1-3000),然后显示12个月的月历 ·能解决闰年和平年问题 ·能输出显示结果

2、运行环境需求分析: 操作系统:Windows7 3、数据流程图:

2

判断闰年 输入年份 初始化一月 显示一月 显示二月 输入表头 判断年份是否非法 …….. 显示十二月

4、程序函数结构

Main() intYear() isRun() output() checkYear() setMonth() setNextMonth() printheadr() Printmonth()

2. 软件设计与编码

#include #include #include

3

#include

void output(struct wanNianLi); void printhead(struct wanNianLi); void printmonth(struct wanNianLi); //定义月份结构体, struct wanNianLi{ int month;//月份

int weekdayOfmonth;//某月第一天是星期几 int tians;//一月的天数 int leap;//闰年为1,平年为0 }months;

//初始化结构体,根据年份初始化一月 struct wanNianLi setMonth(int year) {

struct wanNianLi months; months.month=1;

months.weekdayOfmonth=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+1)%7; if(months.weekdayOfmonth==0)

months.weekdayOfmonth=7;

months.tians=31; months.leap=isRun(year); return months; }

//根据前一个月计算下一个月的结构体

struct wanNianLi setNextMonth(struct wanNianLi months) {

months.weekdayOfmonth= (months.weekdayOfmonth+months.tians-1)%7+1; months.month=months.month+1; months.tians=30;

if(months.month==1 || months.month==3 || months.month==5 || months.month==7 || {

if(months.leap) else

months.tians=28; months.tians=29;

months.month==8 || months.month==10 || months.month ==12) months.tians=31;

if(months.month==2)

4

}

return months; }

void main(){ int year ;

struct wanNianLi months;//定义结构体 year = checkYear();//输入并检查年份 months = setMonth(year); output(months); }

//根据年份判断是否是闰年 int isRun(int year) {

return((year%4==0&&year0!=0)||year@0==0); }

//输入年份 int intYear(void) { int year;

printf(\请输入一个年份(>1)\ scanf(\ return year; }

//判断年份是否输入正确 int checkYear(void) {

int y; do{

y=intYear(); if(y<1 || y >3000) {

printf(\输入错误!。\\n\\n\ y=0; } }while(y<1); return y; }

//接受结构体,输出全年日历

5

void output(struct wanNianLi months) {

char ch; do{

printhead(months);//输出月头

printmonth(months);//输出每月日期情况

printf(\按任意键显视下一月, 按Esc键退出. \\n\ ch=getchar(); if(ch==27) exit(0);

months=setNextMonth(months); }while(months.month<13); }

//打印表头

void printhead(struct wanNianLi months) {

char *ss;

printf(\ switch(months.month) {

case 1: ss=\一 月\ case 2: ss=\二 月\ case 3: ss=\三 月\ case 4: ss=\四 月\ case 5: ss=\五 月\ case 6: ss=\六 月\ case 7: ss=\七 月\ case 8: ss=\八 月\ case 9: ss=\九 月\ case 10: ss=\十 月\ case 11: ss=\十一 月\ case 12: ss=\十二 月\ }

printf(\}

void printmonth(struct wanNianLi months) {

int i,j,k;

6

printf(\ \

printf(\周日 周一 周二 周三 周四 周五 周六\\n\\n\ printf(\ \ if(months.weekdayOfmonth==7) { months.weekdayOfmonth=0; k=months.weekdayOfmonth; for(j=1;j<=months.tians;j=j+1) { if(k>6) { k=k-7;

printf(\ }; k=k+1;

printf(\ \

}

}

else{ printf(\ \

for(i=1;i

{ if(k>6) { k=k-7;

printf(\ } k=k+1;

printf(\ \

}

}

printf(\}

\ \ 7

3. 单元测试

4. 集成测试

2015年

8

2014年

9

三. 总结

1. 实验内容总结

实验时参照实验步骤,从此语言入手,运用结构体编写每个月的信息,循环输出。此实验重点考察了对c语言的理解,以及C语言面向过程的编程思想。加深了对C语言的了解。

2. 心得体会与建议

通过这次试验,让我对这门课又有了全新的认识。作为一门计算机科学的双语教学科目,初学时感到很多的困惑,感到好高深。然而通过实验了解到其仅仅是换了一种语言来表述同一们学科,只不过讲的更加标准化国际化。 在实验中采用面向过程的编程思想,开发出一个万年历的小程序,并严格按照软件开发思想与路线,培养了良好的软件开发习惯,并同时了解了一点企业中软件开发的习惯,感到很有利于将来更迅速的适应到该行业的工作环境。同时这门课也提高了我的英语阅读能力。

1.

10

本文来源:https://www.bwwdw.com/article/kqyv.html

Top