软件工程导论 实验三

来源:互联网 发布:mac口红a17是什么颜色 编辑:程序博客网 时间:2024/05/21 22:44

一、实验名称

系统详细设计

二、实验目的

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

三、实验主要内容

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

四、实验原理

1、模块说明。说明该模块需要实现什么功能,还有设计要点。
2、流程逻辑。用流程图说明该模块的处理过程。
3、算法。不一定有,如果涉及一些比较特殊的算法或关键模块,就写一下算法的伪代码或用流程图说明。
4、限制条件。该模块的功能有哪些限制,比如用户ID不能重复,只能查询自己权限范围内的用户。
5、输入项。每个子模块可以看做一个”方法“,我传给你什么,你给我输出什么。比如删除用户,输入项就是用户ID。
6、输出项。删除用户的输出项,就是不能在查询模块里查询到已删除的用户
7、界面设计。用visio或者其他工具画一些界面图
8、需要操作的数据表。

五、实验结果

详细设计

目录

一、数据库设计

二、用户界面设计

三、系统实现.

3.1通用功能类的实现

3.2申报开票模块的实现

四、总结和展望

4.1总结

4.2展望

 

一、数据管理

本通讯录管理系统录入的联系人信息存储在指定的文本文档中,可对文档中的信息进行读取、修改等操作。



二、用户界面设计

本系统的设计思路主要是实用、简便、灵活、稳定。

一、控件的位置拖放安排 
  在绝大多数的程序界面设计中,并不是所有的元素都具有相同的重要性,所以应抓住重点,将较重要的元素定位在对用户来说处在一目了然的位置是非常重要的,可以尝试根据“功能”和“关系”来组成一个逻辑信息组。按照控件在功能上的联系,将它们放在一起,在视觉效果上也要比将它们分散在屏幕的各处要好得多。
  二、控件的大小与一致性编排 
  控件的大小设置是程序设计时经常遇到的问题,虽然操作非常简单,却很难决定控件的大小。合理设置控件的大小以达成一致性是界面设计中的重要问题之一,一致性的外观将体现应用程序的协调性。如果缺乏一致性就会使界面混乱无序,会对用户的使用带来不便。
  三、合理利用空间,保持界面的简洁 
  界面设计最重要的原则就是简洁与明了。对于应用程序而言,如果界面看上去很难,则可能程序使用本身也比较复杂,而在设计时稍稍深入考虑一下,便有助于创建看上去和用起来都很简单的界面。

四、合理利用颜色、图像和显示效果来达成内容与形式的统一 
  依据许多程序设计人员的经验,应当尽量限制应用程序所用颜色的种类,而且色调也应该保持一致。

 

 

主菜单界面:



浏览界面:



查询界面:



三、系统实现

添加函数:

void add(){data person;printf("姓名:");scanf("%s",&person.name);printf("手机:");scanf("%s",&person.mobile);printf("电话:");scanf("%s",&person.telephone);printf("QQ:");scanf("%s",&person.qq);printf("邮箱:");scanf("%s",&person.email);fp=fopen("C:\\Users\\u\\Desktop\\通讯录.txt","a");fprintf(fp,"%-10s%-16s%-15s%-15s%-20s\n",person.name,person.mobile,person.telephone,person.qq,person.email);getchar();getchar();system("cls");printf("操作完成,请再次选择\n\n");printf("通讯录管理系统\n");return menu();}

浏览函数:

void scan(){printf("**********通讯录名单**********\n");printf("姓名      手机            电话           QQ             邮箱\n");                                                                              printf("------------------------------------------------------------------------\n");fp=fopen("C:\\Users\\u\\Desktop\\通讯录.txt","r");for(int i=0;feof(fp)==0;i++){    fscanf(fp,"%s%s%s%s%s\n",person[i].name,person[i].mobile,person[i].telephone,person[i].qq,person[i].email);    printf("%-10s%-16s%-15s%-15s%-20s\n",person[i].name,person[i].mobile,person[i].telephone,person[i].qq,person[i].email);printf("------------------------------------------------------------------------\n");}getchar();system("cls");printf("操作完成,请再次选择\n\n");return menu();}

查询函数;

void search(){fp=fopen("C:\\Users\\u\\Desktop\\通讯录.txt","r");int n=0;for(int i=0;feof(fp)==0;i++){n++;    fscanf(fp,"%s%s%s%s%s\n",person[i].name,person[i].mobile,person[i].telephone,person[i].qq,person[i].email);}char s[30];int i=0;printf("请输入想查询的姓名:");scanf("%s",&s);while(strcmp(person[i].name,s)!=0&&i<n)i++;if(i==n){printf("查无此人!\n");getchar();getchar();    system("cls");    printf("操作完成,请再次选择\n\n");    return menu();}printf("\n");printf("姓名      手机            电话           QQ             邮箱\n");printf("------------------------------------------------------------------------\n");printf("%-10s%-16s%-15s%-15s%-20s\n",person[i].name,person[i].mobile,person[i].telephone,person[i].qq,person[i].email);printf("------------------------------------------------------------------------\n");getchar();getchar();system("cls");printf("操作完成,请再次选择\n\n");return menu();}

编辑函数:

void edit(){fp=fopen("C:\\Users\\u\\Desktop\\通讯录.txt","r");int n=0;for(int i=0;feof(fp)==0;i++){n++;    fscanf(fp,"%s%s%s%s%s\n",person[i].name,person[i].mobile,person[i].telephone,person[i].qq,person[i].email);}char s[30];int a=0;printf("输入想修改的记录的【姓名】:");scanf("%s",&s);while(strcmp(person[a].name,s)!=0&&a<n)a++;if(a==n){printf("查无此人!\n");getchar();getchar();        system("cls");        printf("操作完成,请再次选择\n\n");        return menu();}printf("姓名      手机            电话           QQ             邮箱\n");printf("------------------------------------------------------------------------\n");printf("%-10s%-16s%-15s%-15s%-20s\n",person[a].name,person[a].mobile,person[a].telephone,person[a].qq,person[a].email);printf("------------------------------------------------------------------------\n\n");printf("**********修改选项**********\n");printf("     <1>.修改【姓名】\n");printf("     <2>.修改【手机】\n");printf("     <3>.修改【电话】\n");printf("     <4>.修改【Q Q】\n");printf("     <5>.修改【邮箱】\n");printf("****************************\n");printf("请输入修改选项:");int j;scanf("%d",&j);if(j==1){printf("输入新【姓名】:");scanf("%s",&person[a].name);}if(j==2){printf("输入新【手机】:");scanf("%s",&person[a].mobile);}if(j==3){printf("输入新【电话】:");scanf("%s",&person[a].telephone);}if(j==4){printf("输入新【Q Q】:");scanf("%s",&person[a].qq);}if(j==5){printf("输入新【邮箱】:");scanf("%s",&person[a].email);}fp=fopen("C:\\Users\\u\\Desktop\\通讯录.txt","w");for(int i=0;i<n;i++){fprintf(fp,"%-10s%-16s%-15s%-15s%-20s\n",person[i].name,person[i].mobile,person[i].telephone,person[i].qq,person[i].email);}printf("**********修改成功!**********");getchar();getchar();system("cls");printf("操作完成,请再次选择\n\n");printf("通讯录管理系统\n");return menu();}


四、总结和展望

4.1总结

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

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


4.2展望

通过本次项目,我总结了很多利用UML进行项目设计开发的经验,在以后的改造项目中,将继续尝试使用UML技术指导软件工程的进展,严格按照设计规范和步骤组织实施,充分发挥J2EE架构的优势。

 

参考文献 

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

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

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

[4] 《UML系统分析设计与应用案例》冀振燕 人民邮电出版社



0 0
原创粉丝点击