1、软件工程课程设计报告实验报告学生信息管理系统软件工程课程实验报告系统名称 学生信息管理系统学 院 计算机学院信息学生信息管理系统设计文档1.可行性研究1.1技术可行性已经有人开发过,并且我们也都使用过相类似系统, 对其一般性的软件和操 作环境、编译环境都比较熟悉,所以说在技术上来说是可行的。1.2经济可行性当前系统只对服务器有关的要求,在服务费用方面,支出在你那个承担的范 围,以后的维护及其他设备的总共费用在可以承担的范围。用当前系统可以节约 出能够支付当前系统的直接支出,以后维护费用更是比以前的机制节约很多钱。1.3操作可行性系统的操作方式在这个用户组织内能行得通。2.需求分析2.1输入让学
2、生在纸面上填写相关内容,然后等待辅导员或管理员的审批确认后, 再 输入数据库中保存。2.2输出学生选择用户选项进入系统后,系统可经有算法程序输出学生基本信息表, 学习成绩表等。2.2.1打印输出可打印基本信息、学习成绩等各种表格以及在对相应信息进行统计操作后的 表格。2.2.2文件输出可将所有打印表格输出到EXCEL文件中,以便用户使用其它的 EXCEL软件 改变表格的大小及字体。2.3故障处理2.3.1内部故障处理在开发阶段可以随即修改数据库里的相应内容。2.3.2外部故障处理对编辑的程序进行重装载时,第一次装载认为错,修改。第二次运行,在需 求调用时出错,有错误提示,重试。2.4性能要求分
3、析2.4.1系统易操作性所开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的 限制。242系统具有可维护性由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空 间及性能也随之下降,为了使系统更好地运转,学院可以对系统数据及一些简单 的功能进行独立的维护及调整。243系统具有开放性该系统能够在开放的硬件体系结构中运行, 并且能与其他系统顺利连接,不 会因外部系统的不同面要做在量的修改工作。3概要设计3.1基本设计概念和处理流程管理员通过密码认证,进入信息管理页面对学生相关信息的录入、更新、修改、添加等操作,也可以通过查询界面对学生信息进行完全的查询, 而学生和相 关人
4、员只能通过公共的查询界面对学生信息进行查询,如要对学生信息进行完全 查询就需要得到管理员的同意。3.2接口设计本系统采用快速原型开发工具Visual Basic 6.0进行开发,所提供的不同层 次的接口,都具有高度的集成性,本系统没有采用低级语言设计和完成自定义接 口,因此接口设计部分已经由不同方式的组件来完成了,以下只做简单说明。3.2.1用户接口说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。命令语法信息止确信息错误提交IF ELSE进入系统返回到当前界面重设点击事件清空输入的数据无取消点击事件返回到当前界面无322外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接
5、口、 本系统与各支持软件直接的关系。硬件接口 软件接口 -、键盘鼠标打印机主模块VV管理模块VVV查询模块VVV3.2.3内部接口说明本系统之内的各个系统元素之间的接口的安排。数据库接口设计采用ADO连接方式模块名称主模块管理员验证模块用户查询界面管理界面主模块VVV管理员验证模块VV用户查询界面V管理界面VV4.详细设计4.1控制流程图4.1.1主模块软件结构4.1.2管理员登陆软件结构4.1.3用户查询软件结构4.2源程序流程图运行主程序新建保存文件调用 menuchoiceN调用menu ()调用menu ()k saveflag=1输入F保存*:吒.操作选择select* 1:Del(
6、)2:Add()3:Qur()4:Modify()+ 5:lnsert()6:Tongji()+ 7:Sort()8:Save()9:System()wrong()调用 menustudent()menustudent()保存输入selectQur()wrong()5、项目测试功能截图:5.1 登陆界面5.2 学生用户功能界面5.3 学生查询功能5.4 管理员管理界面5.5 管理员输入功能5.6 管理员删除功能C J 1 i A j 1 Z rtkto M AW - L.ejte= Sf!r)n h hy r imhr =? Search by ne plecise choicell121:2
7、input the existing student nane:honquress 曰ny key to return5.7管理员查询功能C LJserEAD!V:N- 1, DesHodi fy suLce!:;*STUDENTruinbcrflrineComp!Math;sun1 J 二i mci1 Qei%1371 1xin1 _ f Hl lH一I99 ;一1981一12931 11 197. QB1 11 10 11 ipres nv kev to return文件保存名为:STUDENT 路径为:C:修改、查询、排列等功能。本系统可进行维护,标志:提交可行性分析报告标志:提交项目开
8、发计划标志:完成需求分析报告标志:完成软件分析与设计文档 标志:代码编写全部完成标志:完成软件测试,可投入使用6、项目管理6、1人员管理团队负责人:陶修赟小组成员:万富,洪鑫,汪贤惠,项鑫6、2产品管理本产品工作于W in-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项目计划甘特图:0l:r5
9、=!2= 洌:卑駆弓纭1程月田 ;3lL2h-|2 iimitih0332 f.-1zne:011=5130ai常阳日VElite测駁吐日jme2ILl5j;zrEauMziQ 23I1EEHL康胭冃v-ri甲远l盼E3aftHSlB i$斛#iii lit 132I1BELJL144fl3HJULWrlJUq i3U1科月诟5w :;5厨曲甕an筲朋冃(7、编码#i nclude #in elude #include string.h #in elude coni o.h| sum | ave |mici | n#defi ne HEADER3 | 1 1|1| 1 1| #define F
10、ORMAT | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f|%4d |n#defi ne DATAp-data .nu m,p-data .n ame,p-data.egrade,p-data.mgrade,p-data.cgrade, p-data.total,p-data.ave,p-data. min gci#defi ne END nint saveflag=0; /*是否需要存盘的标志变量 */typedef struct student /* 标记为 student*/char num10;/*学号*/char n ame15;/*姓名*/int cg
11、rade;/*C语言成绩*/int mgrade;/*数学成绩*/int egrade;/*英语成绩*/int total;/*总分*/float ave;/*平均分*/int min gci;/*名次*/*定义每条记录或结点的数据结构,标记为 node*/;typedef struct nodestruct stude nt data; struct node *n ext;Node,*Li nk;void menu choice。system(cls); /* 清屏与 clrscr()功能相同 */textcolor(IO); /*在文本模式中选择新的字符颜色 */gotoxy(7,5);
12、cpri ntf(” The Stude nts Grade Man ageme nt System n);gotoxy(7,8);prin tf(nPlease En ter your choice; 0 en ter stude nts systemnttt);printf(” );prin tf(1 en ter teachers systemn);void menu() /* 菜单函数 */ system(cls); /* 清屏与 clrscr()功能相同 */ textcolor(10); /*在文本模式中选择新的字符颜色 */gotoxy(7,5); /*在文本窗口中设置光标,下同
13、 */cpri ntf(” The Stude nts Grade Man ageme nt System n);gotoxy(7,8);cpri ntf(”* 1in putrecord2delete*n);gotoxy(7,10); cpri ntf(”* 3searchrecord4modify*n);gotoxy(7,11);cpri ntf(”* 5in sertrecord6cou nt*n);gotoxy(7,12);cpri ntf(”* 7sortreord8save*n);gotoxy(7,佝; cpri ntf(”* 9displayrecord0quit*gotoxy(
14、7,9);* n);recordrecordrecordrecordsystem/*cprintf()送格式化输出至文本窗口屏幕中 */ void menu stude nt()system(cls); /* 清屏与 clrscr()功能相同 */textcolor(IO); /*在文本模式中选择新的字符颜色 */gotoxy(7,5); /*在文本窗口中设置光标,下同 */cpri ntf(”The Stude nts Grade Man ageme nt System n ”);gotoxy(7,8);gotoxy(7,9);system* n);gotoxy(7,10); cpri nt
15、f(”*n)/*cprintf()送格式化输出至文本窗口屏幕中 */void printheader() /* 格式化输出表头*/prin tf(HEADER1);prin tf(HEADER2);prin tf(HEADER3);void prin tdata(Node *pp) /* 格式化输出表中数据 */Node* p;p=pp;prin tf(FORMAT,DATA);void Wrong() /*输出按键错误信息*/prin tf(nnnnn *Error:i nput has wrong! press any key tocontin ue* n);getchar();void
16、Nofind() /*输出未查找此学生的信息 */prin tf(n=Not find this stude nt!n);void Disp(Link l) /*显示单链表I中存储的学生记录,内容为student结构中定义的数据项*/Node *p;p=l-next; /*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息 */if(!p)prin tf(n=Not stude nt record! n);getchar();return;prin tf(nn);printheader(); /* 输出表格头部*/while(p) /*逐条输出链表中存储
17、的学生信息 */prin tdata(p);p=p-next; /*移动至下一个结点*/prin tf(HEADER3);getchar();Node* Locate(Link l,char findmess,char nameornum) /* 用于定位链表中符合要求的节点,并返回指向该节点的指针,findmess保存要查找的具体内容;nameornum 保存按什么查找;在单链表I中查找;*/Node *r;if(strcmp(nameornum,num)=0) /* 按学号查询 */r=l-n ext;while(r)if(strcmp(r-data.num,findmess)=0) /*
18、 若找至U findmess 值的学号 */return r;r=r-n ext;else if(strcmp(nameornum,name)=0) /* 按姓名查询 */r=l-n ext;while(r)if(strcmp(r-data.name,findmess)=0) /* 若找至U findmess 值的学生姓名*/return r; r=r-n ext;return 0;void stringinput(char *t,int lens,char *notice) /* 输入字符串,并进行长度验证 (长度lens)printf(n Exceed the required lengt
19、h! n); /* 进行长度校验,超过lens值重新输入*/while(strle n(n )le ns);strcpy(t,n); /* 将输入的字符串拷贝到字符串 t中*/int numberinput(char *notice) /* 输入分数,0 =分数 100 | t100 | tn ext;system(cls);Disp(l); /*先打印出已有的学生信息 */while(r- next!=NULL)r=r- next; /*将指针移至于链表最末尾,准备添加记录 */while(1) /* 一次可输入多条记录,直至输入学号为 0的记录结点添加操作*/while(1) /*输入学号
20、,保证该学号没有被使用,若输入学号为 0,则退出添加记录操作*/格式化输入stri ngin put (nu m,10,l nput nu mber(press Oretur n menu):); /*学号并检验*/flag=0;if(strcmp(num,0)=0)/* 输入为0,则退出添加操作,返回主界面 */return;s=l-n ext;while(s) /*查询该学号是否已经存在, 若存在则要求重新输入一个未被占用的学号*/if(strcmp(s-data. nu m, nu m)=0)flag=1;break;s=s-n ext;if(flag=1) /* 提示用户是否重新输入*
21、/getchar();prin tf(=The nu mber %s is not exist in g,try aga in?(y/n):, nu m); scan f(%c,&ch);if(ch=y|ch=Y)con ti nue;elsereturn;elsebreak; p=(Node *)malloc(sizeof(Node);if(!p)prin tf(n Allocate memory failure ); /* 如没有申请到,打印提示信息 */return ;strcpy(p-data.num,num); /* 将字符串 num 拷贝至U p-data.num 中*/stri
22、ngin put(p-data .n ame,15,Name:);p-data.cgrade=numberinput(C language Score0-100:); /* 输入并检验分数,分数必须在 0 100之间*/p-data.mgrade=nu mberi nput(Math Score0-100:);p-data.egrade=nu mberi nput(E nglish Score0-100:);p-data.total=p-data.egrade + p-data.cgrade + p-data.mgrade; /*计算总分*/p-data.ave=(float)(p-data.
23、total/3); /* 计算平均分 */p-data. min gci=0;p- next=NULL; /* 表明这是链表的尾部结点 */r-next=p; /*将新建的结点加入链表尾部中 */r=p;saveflag=1; /*在ma in ()有对该全局变量的判断,若为 1,则进行存盘操作*/return ;void Qur(Li nk l) /* 按学号或姓名,查询学生记录 */int select; /*1:按学号查,2 :按姓名查,其他:返回主界面(菜单) */char search in put20; /* 保存用户输入的查询内容 */Node *p;if(!l-next) /*
24、 若链表为空 */system(cls);prin tf(n=No stude nt record!n);getchar();return;system(cls);prin tf(n =1 Search by nu mber =2 Search by n amen);prin tf( please choice1,2:);scan f(%d, &select);if(select=1) /* 按学号查询 */stri ngin put(search in put,1O,l nput the existi ng stude nt nu mber:);p=Locate(l,searchi nput, nu m);/* 在 I 中查找学号为 search in put 值的节点,并返回节点的指针*/if(p) /* 若 p!=NULL*/prin theader();prin tdata(p);prin tf(END);prin tf(press any key to retur n);getchar();elseNo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1