软件体系结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京信息工程大学实验(实习)报告
实验(实习)名称软件体系结构设计实验(实习)日期11.9.2010 得分指导教师潘锦基
系计算机专业软件工程年级2009 班次 1 姓名武奎俊学号20092344022 1实验目的.
(1)熟练使用环境进行小规模软件体系结构设计。
(2)进一步掌握软件体系结构的描述。
(3)掌握常用的软件体系结构风格。
(4)培养团队协作精神。
2.实验内容
学生成绩管理系统用于学生成绩的管理和查询,该系统能完成成绩的录入、修改、查询、统计等基本功能以及用户的管理。
根据具体情况,选择合适的软件体系结构风格,设计该系统的软件体系结构。
3.实验准备
(1)合理分组,确定负责人。
(2)熟悉常用的软件体系结构风格及其优缺点。
(3)熟悉软件体系结构描述方法。
(4)熟悉学生成绩管理系统的需求。
4.实验步骤
现有学生成绩信息,内容如下:
姓名学号语文数学英语
张明明 01 67 78 82
李成友 02 78 91 88
张辉灿 03 68 82 56
王露 04 56 45 77
陈东明 05 67 38 47
设计要求:(1) 信息维护:要求学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息
(2) 信息查询:要求查询时可实现按姓名查询、按学号查询
(3) 成绩统计:要求输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4) 排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)
(5) 至少采用文本菜单界面(如果能采用图形菜单界面更好)
(6) 学生可自动增加新功能模块(视情况可另外加分)
主要技术指标及特点
程序流程图如下:
登录界面显示
此登录界面是预先设定好作为菜单来显示的,在主函数中以menu()来实现的,在函数中,是通过switch……case来实现选择功能的,用户可以通过需要进行选择,方便了用户的使用,非常人性化。
登记学生资料
当系统中没有保存学生信息时,就会提示没有学生记录!也就是说不能从文件中导出,这时就需要用户进行学生资料的导入,当输入的学号已经存在时,系统会提示用户重新输入一个未被占用的学号信息,否则就重新分配内存空间。
保存学生资料
该操作是将用户输入的学生信息进行保存,用文件的方法进行调试,当用户输入对象的个数超过0时,显示保存成功,否则提示,系统连接为空。
删除学生资料
删除后结果紧随其后
这里又是通过switch……case函数的调用,让用户进行选择,共有两种方法:1.按照学号2.按照姓名,操作完成后,系统会自动提示,该学生已经成功删除,当再次显示的时候,函数中的链表就不再指向该学号,从而起到删除的作用。删除完成后,再次保存一下学生资料,不然系统仍然默认为原始人数。
修改学生资料
通过选择到达修改界面:此时将呈现出现有的学生资料,按照要求将新的信息输入其中,再保存资料,如果输入的学号系统中未显示,那么系统则提示没有资料可以修改。
这个为修改完的图片查询学生资料
按照选择,则会呈现出用户需要查找的所有信息,每次呈现出来的时候都要用之前定义的printheader()函数,这个很好地将数据按照格式化的形式显现出来。此为按照学号查找的例子,按照姓名查找是同样道理。
统计学生资料
统计学生资料主要还是用的switch……case函数,通过选择,用printheader(),printdata(r),printf(END)等函数用表格的形式将符合条件的学生信息全部显示出来,不过唯一不足的就是所有的学生信息没有能够连贯起来,每个学生信息前面都有表头,没处理好。
对学生资料进行排序
该图显示的是按照语文成绩排序完的结果,用链表将数据进行一个接一个的比较,按照降序将学生信息排列下来,最后提示排序已经完成,并将所有结果按照用户要求显示出来。
程序主要代码
#include "stdio.h" /*标准输入输出函数库*/
#include "stdlib.h" /*标准函数库*/
#include "string.h" /*字符串函数库*/
#include "conio.h" /*屏幕操作函数库*/
#define HEADER1 " ----------------------------学生成绩---------------------------- \n"
#define HEADER2 " | 学号| 姓名|语文|数学|英语| 总分| 均分| \n"
#define HEADER3 " |---------------|---------------|----|----|----|--------|-------|"
#define FORMA T " | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |\n"
#define DA TA p->data.num,p->,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.a ve
#define END " -------------------------------------------------------------- \n"
int shoudsave=0; /* */
struct student
{
char num[10];/* 学号*/
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int total;
float ave;
char neartime[10];/* 最近更新时间*/
};
typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;
void menu()
{
system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/
cprintf("\n");
cprintf(" 学生成绩管理系统\n\n");
cprintf(" *************************菜单**************************\n");