软件工程课程设计实验报告学生信息管理系统.docx
- 文档编号:26687607
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:42
- 大小:964.47KB
软件工程课程设计实验报告学生信息管理系统.docx
《软件工程课程设计实验报告学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计实验报告学生信息管理系统.docx(42页珍藏版)》请在冰豆网上搜索。
软件工程课程设计实验报告学生信息管理系统
软件工程课程实验报告
系统名称___学生信息管理系统___
学院___计算机学院信息___
学生信息管理系统设计文档
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 实验 报告 学生 信息管理 系统