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

《软件工程》实验报告******学号:*********班级:网133指导老师:***一.实验目的1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。
2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。
3.培养良好的软件开发习惯,了解软件企业文化。
4.掌握结构化数据流分析技术。
5.掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。
6.掌握单元测试的一般步骤及技术。
7.掌握集成测试的一般步骤和技术。
二.实验内容1.软件需求分析①、功能需求分析·输入一个年份(1-3000),然后显示12个月的月历·能解决闰年和平年问题·能输出显示结果②、运行需求分析·操作系统:Windows9x, Windows2000, Windows XP及更高版本③、数据流图软件结构图:2.软件设计与编码#include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <math.h>#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输入错误!。
软件工程实验报告简版

软件工程实验报告软件工程实验报告实验目的本实验旨在通过实践,加深对软件工程基本理论和方法的理解,提高软件开发能力。
具体目的包括:1. 熟悉软件开发过程中的需求分析、系统设计、编码和测试等阶段;2. 学习使用软件工程中常用的工具和方法;3. 实践软件工程实验,提高解决问题的能力。
实验背景随着信息技术的快速发展,软件已成为现代社会中不可或缺的一部分。
而软件工程作为一门学科,研究软件开发过程中应用工程原理和方法,旨在提高软件开发的效率和质量。
本实验从实践角度出发,通过设计和开发一个简单的软件系统,来加深对软件工程的理解和掌握。
实验内容1. 需求分析在需求分析阶段,我们需要明确软件系统的功能需求、非功能需求和用户需求等。
根据实验要求,本系统需要具备以下功能:- 用户登录和注册功能;- 商品管理功能,包括商品的增加、删除、修改和查询等;- 订单管理功能,包括订单的、查询和取消等。
2. 系统设计在系统设计阶段,我们需要进行系统结构设计、数据库设计和接口设计等。
具体设计如下:- 系统结构设计:本系统采用分层架构,包括表示层、应用层和数据层,实现了模块间的解耦和易扩展性。
- 数据库设计:使用关系型数据库存储用户信息、商品信息和订单信息等。
- 接口设计:设计了用户登录、商品管理和订单管理等接口,使得系统功能模块化和重复利用性增强。
3. 编码实现在编码实现阶段,我们需要根据需求和设计,使用合适的编程语言进行编码。
这里我们选择使用Python语言进行开发,使用Django框架进行Web应用开发。
具体编码实现的步骤包括:1. 搭建开发环境:安装Python运行环境和Django框架,并进行环境配置;2. 创建Django项目和应用;3. 根据系统设计细化的接口,编写视图函数和URL映射;4. 创建数据库模型并进行迁移,确保数据的持久化;5. 编写模板文件,实现页面的动态展示;6. 编写表单验证逻辑和数据库操作逻辑;7. 运行和测试系统,根据测试结果进行调试和优化。
安徽工业大学汇编第二次实验报告

汇编语言实验报告姓名:黄国荣专业:软件工程班级:104班学号:109074254指导老师:陆勤内容一编写一个程序,显示AL寄存器中的两位16进制数1、思路:首先将要十六进制数放到AL寄存器中,将AL中的数据放到DL中,将DL中的数逻辑右移4位,判断是否大于9,如果小于9则加30H将其转化为对应数字的ascii码输出,如果大于9就加37H将其转化为对应字母的ascii码输出。
2、写出源程序清单。
CODE SEGMENTASSUME CS:CODESTART:MOV AL,3EHPUSH AXMOV DL,ALMOV CL,4SHR DL,CL ;逻辑右移CMP DL,9JBE NEXT1 ;如果小于9ADD DL,7NEXT1:ADD DL,30H ;转化为对应的ascii码,显示数字MOV AH,2INT 21HPOP AXMOV DL,ALAND DL,0FH;将低位取出CMP DL,9JBE NEXT2 ;如果小于9ADD DL,7NEXT2:ADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START内容二编写一个程序,判别键盘上输入的字符;若是1—9字符,则显示之;若为A—Z或a—z字符,均显示“c”;若为回车字符<CR>(其ascii码为0DH),则结束程序,若为其他字符则不显示,继续等待新的字符输入。
DATA SEGMENTMESSAGE DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AH,1 ; 接收并回显INT 21HCMP AL,0DH ;如果输入的是回车键,退出JZ DONECMP AL,'0' ;判断是否在‘0~9’范围内JB NEXTCMP AL ,'9'JA CHARUPMOV DL,ALMOV AH,2 ;如果在‘0~9’范围内则输原样输出INT 21HLEA DX,MESSAGE ;换行MOV AH,9INT 21HJMP STARTCHARUP:CMP AL,41H ;与’A‘比较JB NEXTCMP AL,5AH ;与‘Z’比较JA CHRDNDISPC: ;显示‘C’MOV DL,'C'MOV AH,2INT 21HLEA DX,MESSAGE ;换行MOV AH,9INT 21HNEXT:JMP STARTCHRDN:CMP AL,61HJB NEXTCMP AL,7AHJA NEXTJMP DISPCDONE:MOV AH,4CHINT 21HCODE ENDSEND START补充实验统计不同成绩段学生的人数一、实验目的:1、掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。
软件工程实验报告

软件工程实验报告软件工程实验报告一、实验目的本次实验的目的是通过实践,熟悉软件工程的基本知识和方法,掌握软件开发的流程和规范。
通过完成一个小规模的软件开发项目,培养学生的软件开发能力和团队合作能力。
二、实验步骤2.1 需求分析,我们需要明确软件的需求,确定软件的功能和特性。
通过与项目发起人的沟通,了解他们的需求和期望,进而进行需求分析和规划。
在这个阶段,我们需要明确软件的功能模块、用户界面设计等。
2.2 技术选型根据需求分析的结果,我们需要选择合适的技术栈来实现软件的开发。
我们需要评估各种技术的优缺点,选择适合自己团队的技术。
,我们还需要评估各种开发工具和框架,选择合适的工具来提高开发效率。
2.3 设计阶段在设计阶段,我们需要进行系统设计和详细设计。
系统设计阶段确定软件的整体框架和结构,包括软件的层次结构、模块划分和接口设计等。
详细设计阶段则重点关注各个模块的实现细节,包括算法设计和数据结构设计等。
2.4 编码实现在完成系统设计和详细设计后,我们就可以开始进行编码实现了。
在编码实现阶段,我们需要按照事先确定的设计进行代码编写,并进行代码的和调试。
,我们还需要关注代码的质量和可读性,使用一些良好的编码规范和设计模式。
2.5 阶段在编码实现完成后,我们需要对软件进行,确保软件的功能和性能都符合要求。
阶段包括单元、集成和系统等。
我们需要编写用例,并执行用例进行,发现并修复软件中的bug。
2.6 部署与维护在通过后,我们可以将软件部署到目标机器上进行运行。
在部署之前,我们需要进行一些配置和优化工作,确保软件能够在目标环境中正常运行。
,我们还需要进行软件的维护工作,及时修复bug和优化性能。
三、实验结果经过团队的共同努力,我们成功完成了本次实验的软件开发项目。
我们按照软件工程的流程和规范进行开发,保证了软件的质量和可维护性。
软件具备了项目发起人的需求,功能和性能都符合要求。
四、实验通过本次实验,我们对软件工程的基本知识和方法有了更深入的理解。
软件工程实验总结(四个实验)

软件工程实验报告实验一结构化分析实验1实验目的:通过此实验了解结构化分析的特点和步骤,以及结构化分析所采用的基本图形工具。
2. 实验内容:假设你在一所职业髙中工作,负贵该校信息系统的建设和维护。
财务科长请你研宂用学校拥有的PC机生成工资明细表和各种财务报表的可能性。
3. 实验要求:1. 问题定义:谙在这个阶段描述你需要解决的问题。
包括用户面临的问题和预期的项目规模。
最后生成一份问题定义报告书。
2. 可行性研宂:在这个阶段产生处理工资事务的大致过程,画出髙层逻辑模型,并且画出相应的数据流图,建立数据字典。
3. 对此系统进行成本效益分析。
4. 实验步骤:4.1问题定义报告书1. 项目名称:工资支付2. 问题描述:该校一直由会计人工计算工资并编制财务报表,随着学校规模扩大工作量也越來越大。
目前每个月都需要两名会计紧张工作半个月才能完成,不仅效率低而且成本髙。
今后学校规模将进一步扩大,人工计算工资的成本还会进一步提髙。
3. 项目目标:1)研宂开发费用较低的新工资支付系统的可能性。
4项目规模:1)开发成本应该不超过7.2万元5. 初步设想:1)用学校自己的计算机系统生成工资明细表和财务报表6. 可行性研宂:为了更全面地研究工资支付项目的可能性,建议进行大约历时两周的可行性研宂。
这个研宂的成本不超过4000元。
4.2可行性研究:1.处理工资事务的大致过程:1)每月月末教师把他们当月实际授课时数登记在课时表上,由各系汇总后交给财务科,职工把他们当月完成承包任务的情况登记在任务表上,汇总后交给财务科。
2)两名会计根据这些原始数据计算每名教职工的工资,编制工资表、工资明细表和财务报表。
然后,把记有每名教职工工资总额的工资表报送银行。
3)由银行把钱打到每名教职工的工资存折上,同时把工资明细表发给每名教职工。
2髙层逻辑模型,4. 数据字典:1)名字:授课情况登记表别名:描述:记录每个教师的当月完成的课时及任务。
定义:授课情况登记表=教职工编号+姓名+职务+职称+基本工资+生活补贴+ 书报费+交通费+洗理费位罝:输出到打印机字名述义置名别描定位 名别描 :教职工编号 :唯一的标识一个教职工 :教职工编号=8{字符}8 :授课情况登记表: 义 定S .字名⅛义位 名别描定 每个人当月的实发工资数记录每个教师当月应发的工资数每个人当月的实发工资数=课时费+岗位津貼-个人所得税-住房公积金-保险费 工资明细表 工资明细表 置 位 记录每个教职工每个月应得的和应扣除的费用 工资明细表=每个人当月的实发工资数+课时费+岗位津貼+个人所得税+住 房公积金+保险费 输出到打印机 4.3成本效益分析:1. 低成本系统:解决方案:把每月发一次工资改为每两个月发一次工资,则人工计算工资的成本大约可 减少一半,即每年可节省1.2万元。
软件工程 实验报告

软件工程实验报告软件工程实验报告一、引言在当今信息化时代,软件已经成为人们生活和工作中不可或缺的一部分。
软件工程作为一门学科,旨在通过系统化的方法和工具,提高软件的质量、可靠性和可维护性。
本实验旨在通过实际操作,加深对软件工程的理解和应用。
二、实验目的本实验的主要目的是通过软件开发过程中的需求分析、设计、编码和测试等环节,掌握软件工程的基本原理和方法。
同时,通过实验操作,培养学生的团队合作能力和解决问题的能力。
三、实验内容本次实验的内容是开发一个简单的学生信息管理系统。
该系统主要包括学生信息的录入、查询和删除功能。
具体的实验步骤如下:1. 需求分析:明确系统的功能需求和性能需求,了解用户的需求和期望。
2. 系统设计:根据需求分析的结果,设计系统的架构和模块,确定数据结构和算法。
3. 编码实现:根据系统设计的结果,使用合适的编程语言和开发工具,编写系统的源代码。
4. 软件测试:对编写完成的系统进行测试,包括单元测试、集成测试和系统测试等。
5. 系统部署:将测试通过的系统部署到实际的运行环境中,进行性能测试和用户验收测试。
四、实验结果与分析经过团队的共同努力,我们成功地完成了学生信息管理系统的开发。
系统具有良好的用户界面和交互性,能够满足用户的基本需求。
在需求分析阶段,我们与用户进行了充分的沟通和交流,确保了系统的功能和性能需求的准确性和完整性。
在系统设计阶段,我们采用了模块化设计的思想,将系统分为若干个模块,每个模块负责一个具体的功能。
这样不仅提高了系统的可维护性,还便于团队成员之间的合作和协作。
在编码实现阶段,我们选择了Java作为开发语言,并使用Eclipse作为开发工具。
通过合理地划分和组织代码,提高了代码的可读性和可重用性。
同时,我们也注重代码的注释和文档的编写,方便后续的维护和修改。
在软件测试阶段,我们采用了黑盒测试和白盒测试相结合的方法,对系统进行了全面的测试。
通过测试,我们发现了一些潜在的问题和bug,并及时修复和优化。
软件工程实验报告完整版(最终)

河北工业大学软件工程课程实验实验报告题目:宿舍管理系统专业:计算机科学与技术班级:081班组:第一组组长:张震南成员:刘浔,倪娜,李冬冬,王帅,陈清轩,蒲清龙指导教师:马建红完成日期:2010年12月20号目录1 项目开发计划书……………………………………………………(页码)2 软件需求规格说明书………………………………………………(页码)3设计规格说明书……………………………………………………(页码)4 源程序清单…………………………………………………………(页码)5 测试报告……………………………………………………………(页码)6 用户手册……………………………………………………………(页码)一、项目开发计划书完成人:张震南1.引言(Introduction)1.1项目概述(Project Summary)该系统是由管理员通过系统管理学生信息,能根据学生学号、院系、寝室号等来查询学生的其他相关信息,新生入住能录入新生的住宿信息,能查询房间的信息如入住人数、人员等。
学生遇毕业退学等原因迁出宿舍,可以删除其住宿信息。
1.2 术语定义(Terms Glossary)入住管理:要包括入住人员详细的学籍信息。
房间信息:包括宿舍门号,电话号码以及可住人数,已住人数。
信息查询:通过学生宿舍信息可以查询学生的详细信息。
1.3 相关文档(Related Documents)[1] 软件需求规格说明书[2] 设计规格说明书2.软件生存周期(Software Life Cycle)本节记录项目策划生存期定义的工作结果,需要描述的主要内容:(1)项目生存期框图(2)项目生存期说明需求分析→需求规格说明书( 用例图,数据流图)设计阶段→界面设计( 界面规格说明) 数据库设计编码阶段→具体实现测试阶段→测试报告3.任务与工作产品(Task and Work Products)任务工作产品需求分析需求规格说明书、界面规格说明书系统设计系统设计说明书系统实现源程序测试测试报告产品交付用户手册4.工作产品、任务规模、工作量估计(Estimates of Work Product,Task Size and Workload)任务规模估计需求分析整组同时参加讨论系统设计整组同时参加讨论系统实现两人负责一个大模块测试两人测试产品交付由一人写用户手册5.资源需求计划(Resource Requirement Plan)资源需求开发环境Microsoft Visual Studio 2005SQL Server 2005Windows 7测试环境SQL Server 2005Windows 7,xp用户目标环境Windows 7,xp,2000计算机硬件资源CPU 2GHZ内存2GB6.软件项目进度计划(Software Project Schedule)项目具体内容软件项目任务分解需求、系统设计、编码、测试设定的里程碑需求确定:11月1日界面设计、数据库设计完成:11月20日编码:11月21——12月5号测试:12月10号——12月18号开始和结束时间10月21日------ 12月18号缓冲时间15天人员分配需求分析:刘浔设计规格书:张震南界面设计:倪娜,刘浔编码:全组人员数据库:王帅,陈清轩测试:刘浔,倪娜二、需求规格说明书完成人:王帅陈青轩1.概述(Summary)1.1项目的目的与目标(Purpose and Aim of Project)为各集体宿舍管理人员提供,方便对宿舍楼进行管理,以便使用者能够更全面的,更迅速的了解宿舍住宿情况的所有情况。
安徽工业大学软件工程实验报告.docx

/* This module is to accept monthinfo, and print the numbered dates of the
month. */
void printmonth(struct info monthinfo)
{
int i,j,k;
printf("%s",dent);
/* set gap between numbers of dates */
#define dent " "
/* set right margin. */
struct info {
int month;
int firstdayofmonth;
int daysofmonth;
int leap;
}monthinfo;
《软件工程》实验报告
姓 名:江文杰
学 号:139074333
班 级:网133
指导老师:周兵
一.实验目的
1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。
2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。
3.培养良好的软件开发习惯,了解软件企业文化。
4.掌握结构化数据流分析技术。
printf("一%s二%s三%s四%s五%s六%s日\n\n",gap,gap,gap,gap,gap,gap);
}
/* This module is to accept monthinfo, amd print monthly head like"一 月" */
void printhead(struct info monthinfo)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件工程》实验报告姓名:江文杰学号:139074333班级:网133指导老师:周兵一.实验目的1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。
2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。
3.培养良好的软件开发习惯,了解软件企业文化。
4.掌握结构化数据流分析技术。
5.掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。
6.掌握单元测试的一般步骤及技术。
7.掌握集成测试的一般步骤和技术。
二.实验内容1.软件需求分析①、功能需求分析·输入一个年份(1-3000),然后显示12个月的月历·能解决闰年和平年问题·能输出显示结果②、运行需求分析·操作系统: Windows9x, Windows2000, Windows XP及更高版本③、数据流图软件设计与编码#include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <math.h>#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 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. ifit iscorrect it return int year, otherwise ask user reenter */{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, itreturnsit, otherwise it return -1 */{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);}/* This module is to accept monthinfo, and print the numbered dates ofthemonth. */void printmonth(struct info monthinfo){int i,j,k;printf("%s",dent);printf("一%s二%s三%s四%s五%s六%s日\n\n",gap,gap,gap,gap,gap,gap);printf("%s",dent);for(i=1;i<monthinfo.firstdayofmonth;i=i+1) {printf("%s ",gap);}k=monthinfo.firstdayofmonth;for(j=1;j<=monthinfo.daysofmonth;j=j+1){if(k>7){k=k-7;printf("\n\n%s",dent);};k=k+1;printf("%2d%s",j,gap);}printf("\n\n");}/* This module is to accept the monthinfo, and set the monthinfo of nextmonth.*/ struct info setmonthinfo(struct info monthinfo){int m;monthinfo.firstdayofmonth= (monthinfo.firstdayofmonth+ \monthinfo.daysofmonth-1)%7+1;monthinfo.month=monthinfo.month+1;monthinfo.daysofmonth=30;m=monthinfo.month;if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m ==12)monthinfo.daysofmonth=31;if(m==2){if(monthinfo.leap)monthinfo.daysofmonth = 29;elsemonthinfo.daysofmonth = 28;}return monthinfo;}/* This module is to initialize the monthinfo. */ struct info setinit(int year){int i,days,total;struct info monthinfo;monthinfo.month=1;monthinfo.firstdayofmonth=firstdayof1;for(i=1;i<year;i=i+1){if(isleap(i))days=366;elsedays=365 ;monthinfo.firstdayofmonth=(monthinfo.firstdayofmonth+days-1)%7+1;}monthinfo.daysofmonth=31;monthinfo.leap=isleap(year);return monthinfo;}void main(){printf(" \t\t************************************ \n");p rintf(" \t\t欢迎使用万年历演示程序\n");p rintf(" \t\t************************************ \n");int year ;struct info monthinfo;year = checkinput();monthinfo = setinit(year);output(monthinfo);}3.单元测试白盒测试②.黑盒测试2015年三月四月五月六月2016年:三.总结和体会本次用C语言编写的万年历系统主要实现了年历、月历、日历的显示。
我根本就不喜欢敲代码了,看见代码就头疼。
所以感觉厌恶这门专业,对学习也不感兴趣了。
而且,还有一件更头疼的事是在写一个简单的程序时竟然老是出错,难一点的,复杂一点的程序竟然无从下手。
但是去看程序的参考答案时都看得懂,又感觉很容易。
学了软件工程以后,我就感觉我以前的学习方法是错误的。
以前我只注重于代码,而不注重理论知识以及编程的思路,程序的架构。