版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程课程实验报告系统名称一学生信息管理系统学 院计算机学院信息一学生信息管理系统设计文档1. 可行性研究1.1技术可行性已经有人开发过,并且我们也都使用过相类似系统, 对其一般性的软件和操 作环境、编译环境都比较熟悉,所以说在技术上来说是可行的。1.2经济可行性当前系统只对服务器有关的要求,在服务费用方面,支出在你那个承担的范 围,以后的维护及其他设备的总共费用在可以承担的范围。用当前系统可以节约 出能够支付当前系统的直接支出,以后维护费用更是比以前的机制节约很多钱。1.3操作可行性系统的操作方式在这个用户组织内能行得通。2. 需求分析2.1输入让学生在纸面上填写相关内容,然后等待辅导员或
2、管理员的审批确认后, 再 输入数据库中保存。2.2输出学生选择用户选项进入系统后,系统可经有算法程序输出学生基本信息表, 学习成绩表等。2.2.1打印输出可打印基本信息、学习成绩等各种表格以及在对相应信息进行统计操作后的 表格。2.2.2文件输出可将所有打印表格输出到EXCEL文件中,以便用户使用其它的EXCELS件改 变表格的大小及字体。2.3故障处理2.3.1内部故障处理在开发阶段可以随即修改数据库里的相应内容。2.3.2外部故障处理对编辑的程序进行重装载时,第一次装载认为错,修改。第二次运行,在需 求调用时出错,有错误提示,重试。2.4性能要求分析2.4.1系统易操作性所开发的系统应做到
3、操作简单,尽量使系统操作不受用户对电脑知识水平的 限制。242系统具有可维护性由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空 间及性能也随之下降,为了使系统更好地运转,学院可以对系统数据及一些简单 的功能进行独立的维护及调整。243系统具有开放性该系统能够在开放的硬件体系结构中运行, 并且能与其他系统顺利连接,不 会因外部系统的不同面要做在量的修改工作。3.概要设计3.1基本设计概念和处理流程管理员通过密码认证,进入信息管理页面对学生相关信息的录入、更新、修改、添加等操作,也可以通过查询界面对学生信息进行完全的查询,而学生和相关人员只能通过公共的查询界面对学生信息进行查询,
4、如要对学生信息进行完全 查询就需要得到管理员的同意。3.2接口设计本系统采用快速原型开发工具Visual Basic 6.0进行开发,所提供的不同 层次的接口,都具有高度的集成性,本系统没有采用低级语言设计和完成自定义 接口,因此接口设计部分已经由不同方式的组件来完成了,以下只做简单说明。3.2.1用户接口说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。命令语法信息正确信息错误提交IF ELSE进入系统返回到当前界面重设点击事件清空输入的数据无取消点击事件返回到当前界面无3.2.2外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件直接的关系。f硬件
5、接口 软件接口、键盘鼠标打印机主模块VV管理模块VVV查询模块VVV323内部接口说明本系统之内的各个系统元素之间的接口的安排。数据库接口设计采用ADO连接方式模块名称主模块管理员验证模块用户查询界面管理界面主模块VVV管理员验证模块VV用户查询界面V管理界面VV4.详细设计4.1控制流程图4.1.1主模块软件结构4.1.2管理员登陆软件结构4.1.3用户查询软件结构打印出结果返 回 重 新 输 入 条 件返 回 重 新 输 入 条 件4.2源程序流程图9:System()5、项目测试功能截图:5.1 登陆界面琴 C:UitrAADMNl -lDeikt-o 內STUM A N -1 .txt
6、I 回u生5.2 学生用户功能界面5.3 学生查询功能妲C:UstrsADMINl-lDesktopSTUMAN-l.exeThe Students Grade Management System1 input record 3 search re匚ord 5 insert record1 sort record 9 display record24 680delete recara Modifv record count record save record quit systemNKMMHMKMMHM-KHMMHMKMM-MIIHKMMHHHMMMMHKMHHHKMMPlease Ente
7、r your choice(09):5.4管理员管理界面卸 CAUer5ADMNlfclDesktopSTlJMAN 亠 1 心匕=1 Search b# number =2 Search by name please choieell,?!:2input the existing student name:hong :STUDENT7-7-I nuhb(;r | ridrae Coup i Mdth| En1 _ 一 I _一 1I I-一 ! 一一I=-=-1 Delete by number=-2 Delete by nameplease choice1,21:1input the ex
8、isting student number:0B196198=-Delete success?5.6管理员删除功能C:UwrsADMiNlDE7ktapSTu MAN-1=1 Search by number =2 Search bp nane please choiceLlF21:1Input the existing student number:08196197 STUDFNT lumber Iname |Comp IMdihI Eng | sun j ave |miciiiiiiiiii031%197|hong:97;93!99129498,00 |fipress any key to
9、 return空C;User5ADMhlI-l&r5ktopSTUMAN - l.exc=1 Search by numher =;=:2 Search by nane; please choicells21:2input the existing student name:honq STUDENTnumbernonei| Comp|Hath|Eng iiiiSUMeveI mici08196197Ihongii97|ii98!ii99j2%98.00i9 !press any ke to return5.7管理员查询功能辱 C;MIrDMEMIlktopSTUMAN-l.ejModifv s
10、uccess?5.8管理员修改功能STUDENTinumber1name1 1I Conp|IMathllEng |unfive1 , 1jmici 1iii08196197I1 11!Ixin1111%l111 19911198|29397.001 11 11 10 JG3 叵I零二. 二丁CJ、愿段6附叩厲曲二1-TSTUDENTnumbernamejCompi! |INathSEngsum I aveiraici110 i1!08196197kIllIhony; 97|1 111 198991Il111II1294S98B00iii1i!liPl ecise input Insert l
11、ocation after the Nuraber : 08196197 Input new student Number:081961%Name:xinC language Scors0-1001:99Nqth Scoref9-1001:96English ScoreL0-1061:93STUDEhlT-numbernamejConp|HaIhrEngSLim i aveImici !1 1j08196197hongi 97 9B 99iiiiI 294| 98.R01 10081961961 1Ixin93196J99111I11II1Ii12881 96.601I11 10 !11115
12、.9管理员插入功能5.10统计功能5.11分类功能5.12显示功能5.13管理员保存功能文件保存名为:STUDENT路径为:C:STUDENT2011/6/17 20,26 袁样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、13日- 6月14日修改、查询、排列等功能。本系统可进行维护,标志:提交可行性分析报告 标志:提交项目开发计划 标志:完成需求分析报告 标志:完成软件分析与设计文档 标志:代码编写全部完成 标志:完成软件测试,可投入使用】Ulim2顶目刑讹!3 詩瀏i 耕设计s 讎訥IjlRam申月22日| an l聊月刘日mu轲貼日细i画別汨打吐二巨初五厨日卜二四五尢日三真五黄置X二住叫丘因-H 0 CH CQ An An 琲琲琲琲琲琲琲 n.L n.L 11 nJ H. fi.L flrL30LL年5月怎日SOIL年5月典日2011525020】阵5脳日 L30L闲脑日20】年脑日230H年5月30日20
14、LL年询日$20M年朋2日 201审月10日4 2011130 20】审月阴5 20LL年頤阴 30 16 fl 160 66、4项目计划甘特图7、编码#i nclude #in elude #i nclude stri ng.h #in elude coni o.h#defi ne HEADER1 #define HEADER2 ave |mici | n#defi ne HEADER3 #defi ne FORMAT #defi neSTUDENT n| number |name|Comp|Math|Eng | sum |%-10s |%-15s|%4d|%4d|%4d| %4d| %.2
15、f |%4d |nDATAp-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 ENDnint saveflag=O;/*是否需要存盘的标志变量*/typedef struct student /* 标记为 student*/char num10; char n ame15; int cgrade;int mgrade; int egrade;/*学号*/*姓名*/*C语言成绩*/*数学成绩*/*英语成绩*/int
16、total;/* 总分 */float ave; int min gci;/*平均分*/*名次*/typedef struct node/*定义每条记录或结点的数据结构,标记为n ode*/struct stude nt data; struct node *n ext;Node,*Li nk;void menu choice()system(cls); textcolor(10); gotoxy(7,5); cpri ntf(” gotoxy(7,8);/*清屏与clrscr()功能相同*/*在文本模式中选择新的字符颜色*/The Stude nts Grade Man ageme nt S
17、ystem n);prin tf(nPlease En ter your choice;0 en ter stude nts systemnttt);prin tf();prin tf(1 en ter teachers systemn);void menu()/* 菜单函数 */system(cls); /* 清屏与 clrscr()功能相同 */ textcolor(IO);/*在文本模式中选择新的字符颜色*/gotoxy(7,5);/*在文本窗口中设置光标,下同*/cpri ntf(”The Stude nts Grade Man ageme nt System n);gotoxy(7,
18、8);cpri ntf(”Menu*n);cprin tf(*1 in putrecord2 delete record*n);gotoxy(7,10);cprin tf(*3 searchrecord4 modify record*n);gotoxy(7,11);cprin tf(*5 in sertrecord6 countrecord* n);gotoxy(7,12);cprin tf(*7 sortreord8 saverecord* n);gotoxy(7,佝;cprin tf(*9 display record0 quitsystem*n);*gotoxy(7,9);gotoxy(
19、7,14); cpri ntf(”*n);/*cpri ntf()送格式化输出至文本窗口屏幕中*/void menu stude nt()system(cls); textcolor(10); gotoxy(7,5); cpri ntf(” gotoxy(7,8);/*清屏与clrscr()功能相同*/*在文本模式中选择新的字符颜色*/*在文本窗口中设置光标,下冋*/The Stude nts Grade Man ageme nt System n);cpri ntf(”*Menu*n);gotoxy(7,9);cpri ntf(”*3 search recordgotoxy(7,10);0
20、quitsystem* n);cpri ntf(”*n格式化输出至文本窗口屏幕中*/*cpri ntf()送void printheader() /*格式化输出表头*/prin tf(HEADERI);prin tf(HEADER2);prin tf(HEADER3);void printdata(Node *pp) /*格式化输出表中数据 */Node* p;p=pp;printf(FORMA T,DATA);void Wron g()/*输出按键错误信息*/prin tf(nnnnn *Error:i nputhas wrong! press any key tocontin ue* n)
21、;getchar();void Nofi nd()/*输出未查找此学生的信息*/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)
22、 /*逐条输出链表中存储的学生信息*/prin tdata(p);p=p- next;/*移动至下一个结点*/prin tf(HEADER3);getchar();Node* Locate(Link l,char findmess,char nameornum)/* 用于定位链表中符合要求的节点,并返回指向该节点的指针,fin dmess保存要查找的具体内容;nameornum保存按什么查找;在单链表I中查找;*/Node *r;if(strcmp(nameornum,num)=0) /* 按学号查询 */r=l-n ext;while(r)if(strcmp(r-data.num,findm
23、ess)=0) /* 若找至U findmess 值的学号 */ return r;r=r-n ext;else if(strcmp(nameornum,name)=0)/* 按姓名查询 */r=l-n ext;while(r)if(strcmp(,findmess)=0)/* 若找到 findmess 值的学生姓名 */return r;r=r-n ext;return 0;void stri ngi nput(char *t,i nt le ns,char *n otice)/* 输入字符串,并进行长度验证(长度 lens)printf(n Exceed the re
24、quired length! 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) /
25、*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/stringinput(num,10,lnputnumber(press 0return 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) /*提示用户是否重新输入*/getchar
26、();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 ngin put(
27、p-data .n ame,15,Name:);p-data.cgrade=numberinput(C Ianguage 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.total/3);
28、/* 计算平均分 */p-data. min gci=0;p-next=NULL; /*表明这是链表的尾部结点*/r-n ext=p; /*将新建的结点加入链表尾部中*/r=p;saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/return ;void Qur(Link l) /*按学号或姓名,查询学生记录*/int select; /*1:按学号查,2:按姓名查,其他:返回主界面(菜单)*/char searchinput20; /*保存用户输入的查询内容*/Node *p;if(!l-next)/* 若链表为空 */system(cls);prin
29、tf(n=No stude nt record!n);getchar();return; system(cls);prin tf(n=1 Search by nu mber =2 Search by n amen);printf(”please choice1,2:);scan f(%d, &select);if(select=1)/* 按学号查询 */stri ngin put(search in put,10,I nput the existi ng stude nt nu mber:);p=Locate(l,searchinput,num);/*在I中查找学号为 searchinput值
30、的节点,并返回节 点的指针*/if(p) /* 若 p!=NULL*/prin theader();prin tdata(p);prin tf(END);prin tf(press any key to retur n);getchar();elseNofi nd();getchar();else if(select=2) /* 按姓名查询 */stri ngin put(search in put,15,i nput the existi ng stude nt n ame:); p=Locate(l,search in put, name);if(p)prin theader();prin
31、 tdata(p);prin tf(END);prin tf(press any key to retur n); getchar();elseNofi nd();getchar();elseWron g();getchar();*/void Del(Li nk l)/*删除学生记录:先找到保存该学生记录的节点,然后删除该节点int sei;Node *p,*r;char fin dmess20;if(!l- next)system(cls);prin tf(n=No stude nt record! n); getchar();return;system(cls);Disp(l);prin
32、tf(n=1 Delete by nu mber=2 Delete by n amen);printf(”please choice1,2:);scan f(%d, &sel);if(sel=1)stri ngin put(fi ndmess,10,i nput the exist ing stude nt nu mber:);p=Locate(l,fi ndmess, nu m);if(p) /*p!=NULL*/r=l;while(r- n ext!=p)r=r-n ext;r-next=p-next;/*将p所指节点从链表中去除*/free(p); /*释放内存空间*/prin tf(n
33、=Delete success! n);getchar();saveflag=1;elseNofi nd();getchar();else if(sel=2)stri ngin put(fi ndmess,15,i nput the existi ng stude nt n ame);p=Locate(l,fi ndmess, name);/*先按姓名查询到该记录所在的节点*/if(p)r=l;while(r- n ext!=p)r=r-n ext;r-n ext=p-n ext;free(p);prin tf(n=Delete success! n);getchar();saveflag=1
34、;elseNofi nd();getchar();elseWron g();getchar();void Modify(L ink l)/*修改学生记录。先按输入的学号查询到该记录,然后提示用户修改学号之外的值,学号不能修改*/Node *p;char fin dmess20;if(!l- next)system(cls);prin tf(n=No stude nt record!n);getchar();return;system(cls);prin tf(Modify stude nt recorder:);Disp(l);stri ngin put(fi ndmess,10,nln pu
35、t the exist ing stude nt number:); /* 输入并检验该学号 */ p=Locate(l,findmess,num); /* 查询至U该节点 */if(p) /*若p!=NULL,表明已经找到该节点*/prin tf(Number:%s,n,p-data .nu m);prin tf(Name:%s,p-data .n ame);stri ngin put(p-data .n ame,15,i nput new n ame:);printf(C Ian guage score:%d,p-data.cgrade);p-data.cgrade=nu mberi np
36、ut(C Ian guage Score0-100:);prin tf(Math score:%d,p-data.mgrade); p-data.mgrade=nu mberi nput(Math Score0-100:);prin tf(E nglish score:%d,p-data.egrade);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.total/3);
37、p-data. min gci=0;prin tf(n=Modify success! n);Disp(l);saveflag=1;elseNofi nd();getchar();void Insert(Link l) /*插入记录,按学号查询到要插入的节点的位置,然后在该学号之后插入一个新节点*/Link p,v,newinfo; /*p 指向插入位置,newinfo 指新插入记录 */char ch,num10,s10;/*s保存插入点位置之前的学号,num保存输入的新记录的学号*/int flag=0;v=l-n ext;system(cls);Disp(l);while(1)stri
38、ngin put(s,10,nPlease in put In sert locati on after the Number:);flag=0;v=l-n ext;while(v) /*查询该学号是否存在,flag=1表示该学号存在*/if(strcmp(v-data .nu m,s)=0)flag=1;break;v=v- n ext;if(flag=1)break; /*若学号存在,则进行插入之前的新记录的输入操作*/elsegetchar();prin tf(n=The nu mber %s is not existi ng,try aga in?(y/n):,s); scan f(%
39、c, &ch);if(ch=y|ch=Y)con ti nue;elsereturn;stringinput(num,10,lnput new student Number:);I* 以新记录的输入操作与Add()相同 */v=l-n ext;while(v)if(strcmp(v-data .num,num)=O)prin tf(=Sorry,the new nu mber:%s is exist ing !n, nu m);prin theader();prin tdata(v);prin tf(n);getchar();return;v=v- n ext;n ewi nfo=(Node
40、*)malloc(sizeof(Node); if(! newi nfo)prin tf(n Allocate memory failure ); /* 如没有申请到,打印提示信息 */ return ;/*返回主界面*/strcpy( newi nfo-data. nu m, nu m);stri ngi nput( newi nfo-data. name,15,Name:);newin fo-data.cgrade=nu mberi nput(C Ian guage Score0-100:);newi nfo-data.mgrade=nu mberi nput(Math Score0-10
41、0:);newin fo-data.egrade=nu mberi nput(E nglish Score0-100:);newin fo-data.total=newin fo-data.egrade+newin fo-data.cgrade+newin fo-data.mgrade;newin fo-data.ave=(float) (newin fo-data.total/3);newin fo-data. min gci=0;newinfo-n ext=NULL;saveflag=1;p=l-next;/*将指针赋值给p,因为I中的头节点的下一个节点才实际保存着学生的记录 */whil
42、e(1)if(strcmp(p-data.num,s)=0)/* 在链表中插入一个节点*/newinfo-n ext=p-n ext; p-n ext =newinfo; break;p=p-n ext;Disp(l); prin tf(nn); getchar();void Tongji(Link l)/*统计总分,单科第一和各科不及格人数*/Node *pm,*pe,*pc,*pt; /*用于指向分数最高的节点*/Node *r=l-n ext;int countc=0,countm=0,counte=O; /*保存三门成绩中不及格的人数*/if(!r)system(cls);prin t
43、f(n=No stude nt record!n);getchar();return ;system(cls);Disp(l);pm=pe=pc=pt=r;while(r)if(r-data.cgradedata.mgradedata.egradedata.cgrade=pc-data.cgrade)pc=r;if(r-data.mgrade=pm-data.mgrade) pm=r; if(r-data.egrade=pe-data.egrade)pe=r;if(r-data.total=pt-data.total)pt=r;r=r- n ext;printf(nthe Ton gJi resultn);prin tf(C Lan guage60:%d (ren )n ,cou ntc);prin tf(Math60: %d (ren )n,cou ntm);prin tf(E nglishdata .n ame,pt-data.total);prin tf(Thehighest stude nt byEn glishscoren ame:%stotoalscore:%dn,pe-data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于PID的直流电机调速系统在控制策略课程设计
- 梅花鹿养殖技术员岗位技能考试试卷及答案
- 【一年级上册数学】每日10分钟睡前计算小纸条
- 公共场所防灾避险课件
- 电厂钢梁安装方案范本
- 幼儿遵守时间不迟到好习惯养成课堂
- 2026年中秋节假期幼儿园画一画中秋月亮
- 2026年11月感恩节 感恩身边每一个人
- 2026 年新学期:智慧校园管理平台实操培训
- 第12课 从明朝建立到清军入关 课件(共21张) 高中历史统编版(部编版)必修 中外历史纲要(上)
- 教科版(2024)三年级上册科学全册教案
- 北京市五十七中2025-2026学年上学期九年级物理开学测试(无答案)
- (正式版)DB3301∕T 0498-2025 《小型水利工程项目划分管理规范》
- T-CFLP 0016-2023《国有企业采购操作规范》【2023修订版】
- 体外膜氧合技术 (ECMO)
- 财务人员法律风险培训课件
- 几何公差教学课件
- CJ/T 158-2002城市污水处理厂管道和设备色标
- 光荣院入住协议书
- DB37T 4706-2024事故车辆损失鉴定评估规范
- 工程结算分红协议书范本
评论
0/150
提交评论