您的位置:首页 > 其它

第三次作业

2013-12-12 21:24 148 查看


软件工程实验报告

一、实验名称

系统详细设计

二、实验目的

根据需求分析、概要设计,完成系统的详细设计

三、实验主要内容

详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。

四、实验原理

1、模块说明。说明该模块需要实现什么功能,还有设计要点。

2、流程逻辑。用流程图说明该模块的处理过程。

3、算法。不一定有,如果涉及一些比较特殊的算法或关键模块,就写一下算法的伪代码或用流程图说明。

4、限制条件。该模块的功能有哪些限制,比如用户ID不能重复,只能查询自己权限范围内的用户。

5、输入项。每个子模块可以看做一个”方法“,我传给你什么,你给我输出什么。比如删除用户,输入项就是用户ID。

6、输出项。删除用户的输出项,就是不能在查询模块里查询到已删除的用户

7、界面设计。用visio或者其他工具画一些界面图

8、需要操作的数据表。

五、实验结果

详细设计

目录

一、用户界面设计

二、系统实现.

2.1通用功能类的实现

2.2用户模块的实现

2.3学生模块的实现

三、总结和展望

3.1总结

3.2展望

一:用户界面设计

本系统的设计思路主要是实用、简便、灵活、稳定。整个系统有完整的组织框架和模块分工,但由于我没有学过界面设计以及没有时间去学所以我的界面仍旧在小黑屏中,我的界面非常简单,但对于界面设计我遵循以下几个原则:

1. 合理利用空间,保持界面的简洁

我的每个界面都是通过多次调试后选择了一个我认为最舒服的界面,非常简洁明了

2. 合理利用颜色、刷屏和显示效果来达成内容与形式的统一

每个界面颜色不同,一个界面操作完成后,选择刷屏来使界面干净些,有时很难实现就采用了延迟器来帮助完成







二、系统实现

本项目在开发过程中,针对所有包、类、窗口、数据窗口、对象的命名都有明确规定,为了减少工作量,保证程序的一致性,我们建立了2个公共友元类,友元类对象主要用来实现将私有数据共享功能,如在写文件的类函数中就使用到用户类的私有数据。本系统中是以从友元类中借用私有数据和添加新代码实现的,同时我们也大量使用了面向对象的新技术,比如后面将要提到的自定义类和用户对象等等。

class denglu(friend gkm_wenjian1;):类,实现了主界面以及解决了用户登入一系列问题。例如:用户验证以及注册、登入

class zhudr:类,实现了次界面的显示

class student(friend gkm_wenjian2;)类,实现了对于学生操作的一系列问题。例如:学生平时成绩的增删改以及排序

class gkm_wenjian1 :类,将用户的所有信息存入文件中,例如用户名,密码等等

class gkm_wenjian2 :类,将学生的所有信息存入文件中,例如,学号,姓名,成绩等等

重要函数:

int gkm_fopen1(); 将用户数据读入到文件中

void gkm_fopen2();将文件中有关用户的信息读出来

int gkm_fopen11();将学生的数据读入到文件中

void gkm_fopen12();将文件中有关学生的信息读出来

void paixu(int a);对每门课成绩的排序,利用冒泡排序法

void paixu1(int a);对平均成绩的排序,利用冒泡排序法

由于本系统包含内容很多,不能展现全部实现过程,这里仅拿代表性较强的学生操作模块中功能类student展开介绍。

3.1通用功能函数的实现

通用功能函数主要由void input();void search();void deletes();void list();void renew();void paixu(int a);6个函数组成,之所以分成6个函数是因为增加,删除,查询,修改。排序刚好功能比较独立,为了便于管理和识别,按照不同功能和作用范围进行了划分。下面就以void paixu(int a);中部分代码为例展示如何进行代码实现。

总体函数实例如下(仅作参考):











有冒泡算法的一个函数(个人觉得挺难的)

void student::paixu(int a)

{

int i,j;

struct q temp;

char select;

if(kongzhi==1) {cout<<"温馨提示:目前只有任何一位学生,无法排序!"<<endl;Sleep(3000);} //少一个任意或延迟

else{

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

{paix[i].num1=stud[i].num;

paix[i].score1=stud[i].score[a];

}

//cout<<paix[1].score1;

for(j=0;j<=kongzhi-1;j++)

{ for (i=0;i<kongzhi-j-1;i++)

if (paix[i].score1>paix[i+1].score1)

{ temp.num2=paix[i].num1;

paix[i].num1=paix[i+1].num1;

paix[i+1].num1=temp.num2;

temp.score2=paix[i].score1;

paix[i].score1=paix[i+1].score1;

paix[i+1].score1=temp.score2;

}

}

system("cls");

cout<<"1.升序 2.降序(注意是对学号)"<<endl;

cin>>select;

while (select!='1'&&select!='2'){

printf("请输入1~2的数\n");

scanf("%s",&select);

}

cout<<endl<<endl<<endl<<endl<<endl;

cout<<" 排序结果显示"<<endl<<endl<<endl<<endl;

if(select=='1') for(j=1,i=kongzhi;i>0;i--,j++) cout<<"第"<<j<<"名 "<<"学号:"<<paix[i-1].num1<<" "<<kename[a]<<"的成绩为"<<paix[i-1].score1<<endl;

else for(j=kongzhi,i=0;i<kongzhi;i++,j--) cout<<"第"<<j<<"名 "<<"学号:"<<paix[i].num1<<" "<<kename[a]<<"的成绩为"<<paix[i].score1<<endl;

}

}

三、总结和展望

3.1总结

分析方法与设计模式因需求的不同而多种多样。不同的方法,有的可能带来非常明显的优点,而有的可能带来不利的因素。在本次项目的开发过程中,分析与设计的全阶段均完全采用了UML面向对象的先进建模方法,使系统在遵循面向对象原理与软件工程学的基础上,还具有一些使用其它面向对象方法时所不具备的优点。

本次项目的开发过程分成分析与设计两大部分。前一部分以功能为导向,着重于系统要达到的功能。而后一部分以结构为导向,着重于将业务逻辑抽象为类及其之间的关系,这些业务逻辑所要达到的功能,也正是前一部分分析的结果。分析与设计的各阶段均采用了UML面向对象的建模方法,使整体设计更具系统化、标准化、模块化。使用UML设计出来的管理系统,有很多基于业务逻辑抽象出来的类,具有广泛性的、重用性。采用UML进行设计,结合PowerDesigner进行数据库设计,为车船使用税征管系统开发设计提供了较合理的模式。

现在存在的管理系统非常多且十分厉害,各种各样的功能都有,而且处理起来十分方便,但是,现存的管理系统操作太复杂了,不过私人化

3.2展望

每个学校都有自己的管理系统,但绝大多数适合大规模学生,而不适合老师个人使用(即不够私人化);我们的程序将在以下几方面突破:

1.对每门成绩进行排序

2.具有较强的鲁棒性(即健壮性)

3.有一定智能化

4,。界面比较人性化

通过本次项目,我们总结了很多利用UML进行项目设计开发的经验。

参考文献

[1] 《电子商务系统分析与设计》 清华大学出版社出版

[2] 《UML基础教程》张瑜 清华大学出版社

[3] 《信息系统开发方法教程》 陈佳著 清华大学出版社

[4] 《UML和模式应用》姚淑珍 机械工业出版社

[5] 《UML系统分析设计与应用案例》冀振燕 人民邮电出版社
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: