软件工程课程设计实验报告学生信息管理系统.docx

上传人:b****7 文档编号:26687607 上传时间:2023-06-21 格式:DOCX 页数:42 大小:964.47KB
下载 相关 举报
软件工程课程设计实验报告学生信息管理系统.docx_第1页
第1页 / 共42页
软件工程课程设计实验报告学生信息管理系统.docx_第2页
第2页 / 共42页
软件工程课程设计实验报告学生信息管理系统.docx_第3页
第3页 / 共42页
软件工程课程设计实验报告学生信息管理系统.docx_第4页
第4页 / 共42页
软件工程课程设计实验报告学生信息管理系统.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

软件工程课程设计实验报告学生信息管理系统.docx

《软件工程课程设计实验报告学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计实验报告学生信息管理系统.docx(42页珍藏版)》请在冰豆网上搜索。

软件工程课程设计实验报告学生信息管理系统.docx

软件工程课程设计实验报告学生信息管理系统

软件工程课程实验报告

系统名称___学生信息管理系统___

学院___计算机学院信息___

          

学生信息管理系统设计文档

1.可行性研究

1、1技术可行性

已经有人开发过,并且我们也都使用过相类似系统,对其一般性的软件与操作环境、编译环境都比较熟悉,所以说在技术上来说就是可行的。

1、2经济可行性

当前系统只对服务器有关的要求,在服务费用方面,支出在您那个承担的范围,以后的维护及其她设备的总共费用在可以承担的范围。

用当前系统可以节约出能够支付当前系统的直接支出,以后维护费用更就是比以前的机制节约很多钱。

1、3操作可行性

系统的操作方式在这个用户组织内能行得通。

2.需求分析

2、1输入

让学生在纸面上填写相关内容,然后等待辅导员或管理员的审批确认后,再输入数据库中保存。

2、2输出

学生选择用户选项进入系统后,系统可经有算法程序输出学生基本信息表,学习成绩表等。

2、2、1打印输出

可打印基本信息、学习成绩等各种表格以及在对相应信息进行统计操作后的表格。

2、2、2文件输出

可将所有打印表格输出到EXCEL文件中,以便用户使用其它的EXCEL软件改变表格的大小及字体。

2、3故障处理

2、3、1内部故障处理

在开发阶段可以随即修改数据库里的相应内容。

2、3、2外部故障处理

对编辑的程序进行重装载时,第一次装载认为错,修改。

第二次运行,在需求调用时出错,有错误提示,重试。

2、4性能要求分析

2、4、1系统易操作性

所开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。

2、4、2系统具有可维护性

由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,学院可以对系统数据及一些简单的功能进行独立的维护及调整。

2、4、3系统具有开放性

该系统能够在开放的硬件体系结构中运行,并且能与其她系统顺利连接,不会因外部系统的不同面要做在量的修改工作。

 

3、概要设计

3、1基本设计概念与处理流程

管理员通过密码认证,进入信息管理页面对学生相关信息的录入、更新、修改、添加等操作,也可以通过查询界面对学生信息进行完全的查询,而学生与相关人员只能通过公共的查询界面对学生信息进行查询,如要对学生信息进行完全查询就需要得到管理员的同意。

3、2接口设计

 本系统采用快速原型开发工具VisualBasic6、0进行开发,所提供的不同层次的接口,都具有高度的集成性,本系统没有采用低级语言设计与完成自定义接口,因此接口设计部分已经由不同方式的组件来完成了,以下只做简单说明。

3、2、1用户接口

说明将向用户提供的命令与它们的语法结构,以及软件的回答信息。

命令

语法

信息正确

信息错误

提交

IFELSE

进入系统

返回到当前界面

重设

点击事件

清空输入的数据

取消

点击事件

返回到当前界面

3、2、2外部接口

说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件直接的关系。

硬件接口

软件接口

键盘

鼠标

打印机

主模块

管理模块

查询模块

3、2、3内部接口

说明本系统之内的各个系统元素之间的接口的安排。

数据库接口设计采用ADO连接方式。

模块名称

主模块

管理员验证模块

用户查询界面

管理界面

主模块

管理员验证模块

用户查询界面

管理界面

4、详细设计

4、1控制流程图

4、1、1主模块软件结构

4、1、2管理员登陆软件结构

4、1、3用户查询软件结构

4、2源程序流程图

5、项目测试

功能截图:

5、1登陆界面

5、2学生用户功能界面

5、3学生查询功能

5、4管理员管理界面

5、5管理员输入功能

5、6管理员删除功能

5、7管理员查询功能

5、8管理员修改功能

5、9管理员插入功能

5、10统计功能

5、11分类功能

5、12显示功能

5、13管理员保存功能

文件保存名为:

STUDENT路径为:

C:

\

6、项目管理

6、1人员管理

团队负责人:

陶修赟

小组成员:

万富,洪鑫,汪贤惠,项鑫

6、2产品管理

本产品工作于Win-TC工作环境,用于对学生成绩的管理。

学生用户,可进行查询课程成绩;管理员可对学生及其成绩进行录入、修改、查询、排列等功能。

本系统可进行维护,修改。

6、3进程管理

可行性分析:

5月23日-5月24日标志:

提交可行性分析报告

项目开发计划:

5月25日-5月26日标志:

提交项目开发计划

需求分析:

5月27日-5月27日标志:

完成需求分析报告

软件设计:

5月30日-6月1日标志:

完成软件分析与设计文档

编程实现:

6月2日-6月10日标志:

代码编写全部完成

软件测试:

6月13日-6月14日标志:

完成软件测试,可投入使用

6、4项目计划甘特图

7、编码

#include

#include

#include"string、h"

#include"conio、h"

#defineHEADER1"----------------------------STUDENT----------------------------------\n"

#defineHEADER2"|number|name|Comp|Math|Eng|sum|ave|mici|\n"

#defineHEADER3"|---------------|---------------|----|----|----|--------|-------|-----|"

#defineFORMAT"|%-10s|%-15s|%4d|%4d|%4d|%4d|%、2f|%4d|\n"

#defineDATAp->data、num,p->data、name,p->data、egrade,p->data、mgrade,p->data、cgrade,p->data、total,p->data、ave,p->data、mingci

#defineEND"---------------------------------------------------------------------\n"

intsaveflag=0;/*就是否需要存盘的标志变量*/

typedefstructstudent/*标记为student*/

{

charnum[10];/*学号*/

charname[15];/*姓名*/

intcgrade;/*C语言成绩*/

intmgrade;/*数学成绩*/

integrade;/*英语成绩*/

inttotal;/*总分*/

floatave;/*平均分*/

intmingci;/*名次*/

};

typedefstructnode/*定义每条记录或结点的数据结构,标记为node*/

{

structstudentdata;

structnode*next;

}Node,*Link;

voidmenuchoice()

{

system("cls");/*清屏、与clrscr()功能相同*/

textcolor(10);/*在文本模式中选择新的字符颜色*/

gotoxy(7,5);

cprintf("TheStudents'GradeManagementSystem\n");

gotoxy(7,8);

printf("\nPleaseEnteryourchoice;0enterstudents'system\n\t\t\t");

printf("");

printf("1enterteachers'system\n");

}

voidmenu()/*菜单函数*/

{

system("cls");/*清屏、与clrscr()功能相同*/

textcolor(10);/*在文本模式中选择新的字符颜色*/

gotoxy(7,5);/*在文本窗口中设置光标,下同*/

cprintf("TheStudents'GradeManagementSystem\n");

gotoxy(7,8);

cprintf("*************************Menu********************************\n");

gotoxy(7,9);

cprintf("*1inputrecord2deleterecord*\n");

gotoxy(7,10);

cprintf("*3searchrecord4modifyrecord*\n");

gotoxy(7,11);

cprintf("*5insertrecord6countrecord*\n");

gotoxy(7,12);

cprintf("*7sortreord8saverecord*\n");

gotoxy(7,13);

cprintf("*9displayrecord0quitsystem*\n");

gotoxy(7,14);

cprintf("*************************************************************\n");/*cprintf()送格式化输出至文本窗口屏幕中*/

}

voidmenustudent()

{

system("cls");/*清屏、与clrscr()功能相同*/

textcolor(10);/*在文本模式中选择新的字符颜色*/

gotoxy(7,5);/*在文本窗口中设置光标,下同*/

cprintf("TheStudents'GradeManagementSystem\n");

gotoxy(7,8);

cprintf("*************************Menu********************************\n");

gotoxy(7,9);

cprintf("*3searchrecord0quitsystem*\n");

gotoxy(7,10);

cprintf("*************************************************************\n");/*cprintf()送格式化输出至文本窗口屏幕中*/

}

voidprintheader()/*格式化输出表头*/

{

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

}

voidprintdata(Node*pp)/*格式化输出表中数据*/

{

Node*p;

p=pp;

printf(FORMAT,DATA);

}

voidWrong()/*输出按键错误信息*/

{

printf("\n\n\n\n\n***********Error:

inputhaswrong!

pressanykeytocontinue**********\n");

getchar();

}

voidNofind()/*输出未查找此学生的信息*/

{

printf("\n=====>Notfindthisstudent!

\n");

}

voidDisp(Linkl)/*显示单链表l中存储的学生记录,内容为student结构中定义的数据项*/

{

Node*p;

p=l->next;/*l存储的就是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/

if(!

p)

{

printf("\n=====>Notstudentrecord!

\n");

getchar();

return;

}

printf("\n\n");

printheader();/*输出表格头部*/

while(p)/*逐条输出链表中存储的学生信息*/

{

printdata(p);

p=p->next;/*移动至下一个结点*/

printf(HEADER3);

}

getchar();

}

Node*Locate(Linkl,charfindmess[],charnameornum[])/*用于定位链表中符合要求的节点,并返回指向该节点的指针,findmess[]保存要查找的具体内容;nameornum[]保存按什么查找;在单链表l中查找;*/

{

Node*r;

if(strcmp(nameornum,"num")==0)/*按学号查询*/

{

r=l->next;

while(r)

{

if(strcmp(r->data、num,findmess)==0)/*若找到findmess值的学号*/

returnr;

r=r->next;

}

}

elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/

{

r=l->next;

while(r)

{

if(strcmp(r->data、name,findmess)==0)/*若找到findmess值的学生姓名*/

returnr;

r=r->next;

}

}

return0;

}

voidstringinput(char*t,intlens,char*notice)/*输入字符串,并进行长度验证(长度

{

charn[255];

do{

printf(notice);/*显示提示信息*/

scanf("%s",n);/*输入字符串*/

if(strlen(n)>lens)printf("\nExceedtherequiredlength!

\n");/*进行长度校验,超过lens值重新输入*/

}while(strlen(n)>lens);

strcpy(t,n);/*将输入的字符串拷贝到字符串t中*/

}

intnumberinput(char*notice)/*输入分数,0<=分数<=100)*/

{

intt=0;

do{

printf(notice);/*显示提示信息*/

scanf("%d",&t);/*输入分数*/

if(t>100||t<0)printf("\nScoremustin[0,100]!

\n");/*进行分数校验*/

}while(t>100||t<0);

returnt;

}

voidAdd(Linkl)/*增加学生记录*/

{

Node*p,*r,*s;/*实现添加操作的临时的结构体指针变量*/

charch,flag=0,num[10];

r=l;

s=l->next;

system("cls");

Disp(l);/*先打印出已有的学生信息*/

while(r->next!

=NULL)

r=r->next;/*将指针移至于链表最末尾,准备添加记录*/

while

(1)/*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/

{

while

(1)/*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/

{

stringinput(num,10,"Inputnumber(press'0'returnmenu):

");/*格式化输入学号并检验*/

flag=0;

if(strcmp(num,"0")==0)/*输入为0,则退出添加操作,返回主界面*/

{return;}

s=l->next;

while(s)/*查询该学号就是否已经存在,若存在则要求重新输入一个未被占用的学号*/

{

if(strcmp(s->data、num,num)==0)

{

flag=1;

break;

}

s=s->next;

}

if(flag==1)/*提示用户就是否重新输入*/

{

getchar();

printf("=====>Thenumber%sisnotexisting,tryagain?

(y/n):

",num);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

continue;

else

return;

}

else

{break;}

}

p=(Node*)malloc(sizeof(Node));

if(!

p)

{

printf("\nAllocatememoryfailure");/*如没有申请到,打印提示信息*/

return;

}

strcpy(p->data、num,num);/*将字符串num拷贝到p->data、num中*/

stringinput(p->data、name,15,"Name:

");

p->data、cgrade=numberinput("ClanguageScore[0-100]:

");/*输入并检验分数,分数必须在0-100之间*/

p->data、mgrade=numberinput("MathScore[0-100]:

");

p->data、egrade=numberinput("EnglishScore[0-100]:

");

p->data、total=p->data、egrade+p->data、cgrade+p->data、mgrade;/*计算总分*/

p->data、ave=(float)(p->data、total/3);/*计算平均分*/

p->data、mingci=0;

p->next=NULL;/*表明这就是链表的尾部结点*/

r->next=p;/*将新建的结点加入链表尾部中*/

r=p;

saveflag=1;/*在main()有对该全局变量的判断,若为1,则进行存盘操作*/

}

return;

}

voidQur(Linkl)/*按学号或姓名,查询学生记录*/

{

intselect;/*1:

按学号查,2:

按姓名查,其她:

返回主界面(菜单)*/

charsearchinput[20];/*保存用户输入的查询内容*/

Node*p;

if(!

l->next)/*若链表为空*/

{

system("cls");

printf("\n=====>Nostudentrecord!

\n");

getchar();

return;

}

system("cls");

printf("\n=====>1Searchbynumber=====>2Searchbyname\n");

printf("pleasechoice[1,2]:

");

scanf("%d",&select);

if(select==1)/*按学号查询*/

{

stringinput(searchinput,10,"Inputtheexistingstudentnumber:

");

p=Locate(l,searchinput,"num");/*在l中查找学号为searchinput值的节点,并返回节点的指针*/

if(p)/*若p!

=NULL*/

{

printheader();

printdata(p);

printf(END);

printf("pressanykeytoreturn");

getchar();

}

else

Nofind();

getchar();

}

elseif(select==2)/*按姓名查询*/

{

stringinput(searchinput,15,"inputtheexistingstudentname:

");

p=Locate(l,searchinput,"name");

if(p)

{

printheader();

printdata(p);

printf(END);

printf("pressanykeytoreturn");

getchar();

}

else

Nofind();

getchar();

}

else

Wrong();

getchar();

}

voidDel(Linkl)/*删除学生记录:

先找到保存该学生记录的节点,然后删除该节点*/

{

intsel;

Node*p,*r;

charfindmess[20];

if(!

l->next)

{

system("cls");

printf("\n=====>Nostudentrecord!

\n");

getchar();

return;

}

system("cls");

Disp(l);

printf("\n=====>1Deletebynumber=====>2Deletebyname\n");

printf("pleasechoice[1,2]:

");

scanf("%d",&sel);

if(sel==1)

{

stringinput(findmess,10,"inputtheexistingstudentnumber:

");

p=Locate(l,findmess,"num");

if(p)/*p!

=NULL*/

{

r=l;

while(r->next!

=p)

r=r->next;

r->next=p->next;/*将p所指节点从链表中去除*/

free(p);/*释放内存空间*/

printf("\n=====>Deletesuccess!

\n");

getchar();

saveflag=1;

}

else

Nofind();

getchar();

}

elseif(sel==2)

{

stringinput(findmess,15,"inputtheexistingstudentname");

p=L

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1