教务处系统学生信息管理系统.docx
- 文档编号:9344545
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:28
- 大小:600.63KB
教务处系统学生信息管理系统.docx
《教务处系统学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《教务处系统学生信息管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
教务处系统学生信息管理系统
目录
一设计目的1
二设计内容1
三设计要求1
四设计过程1
4.1系统分析1
4.1.1概要分析1
4.1.2可行性分析2
4.2系统设计3
4.3系统实现5
4.3.1数据模型(ER图)5
4.3.2功能模型(数据流图)6
4.3.3数据字典的定义8
4.3.4行为模型(状态转换图)9
4.4测试10
五设计总结12
参考文献13
附录14
一设计目的
学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是让管理员使用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,以及对每学期成绩的显示与计算总分和排序。
二设计内容
(1)题目分析,查找资料和总体设计。
(2)详细设计、代码编制、程序调试。
系统功能要求如下:
①具有登录功能
②具有录入功能
③具有查询功能
④具有修改功能
⑤具有删除功能
(3)结果分析、完成课程设计报告。
三设计要求
(1)可选用任何语言,要求设计良好的结构编写程序,源程序要有适当的注释,是程序容易阅读。
(2)程序的界面、逻辑功能和数据的存储分开,至少采用文本菜单界面(如果能采用图形菜单界面更好)。
(3)学生可根据自身情况酌情增加新功能(视情况可另外加分)。
(4)独立完成课程设计,并完成课程设计报告,报告应记录设计的过程,尤其是分析/设计/实现过程中的决策。
四设计过程
4.1系统分析
4.1.1概要分析
通过对学生信息管理系统的设计实现:
管理员通过密码认证,进入信息管理页面对学生相关信息的录入、更新、修改、添加等操作,也可以通过查询界面对学生信息进行完全的查询,而学生和相关人员只能通过公共的查询界面对学生信息进行查询,如要对学生信息进行完全查询就需要得到管理员的同意。
(1)输入
让学生在纸面上填写相关内容,然后等待辅导员或管理员的审批确认后,再输入数据库中保存。
(2)输出
学生选择用户选项进入系统后,系统可经有算法程序输出学生基本信息表,学习成绩表等。
4.1.2可行性分析
(1)技术可行性
要开发该系统必须会用到有关软件工程的知识,而且还需要熟练掌握一门编程语言。
到目前为止,我们已经学习C和C++两门程序设计语言,其中C++就是一种很好的开发语言,它引入了类、继承、多态和重载等新机制,而且它模拟了对象之间的通信,就像人们之间互通信息一样,对象之间也可以通过消息进行通信。
另外,应用C++时进行抽象和封装比较容易,所以从理论上来说,技术上没问题。
(2)经济可行性
学校图书馆、实验室和教学楼都有电脑,学生可以随时去查看所需资料,当然,如果学生有个人电脑,也可以随时免费的查询所需信息,另外,学校还给管理者配有电脑,可以对该系统进行管理,所以总体上来看,基本上学生和管理员都无需投入个人经费。
(3)操作可行性
开发该系统软件所用的工具简单,主要是通过编程实现相关功能,再加上界面的相关设计,都比较简单,所以操作上是可行的。
(4)法律可行性
学生信息管理系统是学校进行管理时必不可少的一款软件,对老师管理学生、学生选课、查询成绩等都非常方便,简单可视化操作,易于管理。
4.2系统设计
1、主模块软件结构
图4.2.1主模块结构
2、管理员登陆软件结构
图4.2.2管理员登陆结构
3、用户查询软件结构
图4.2.3用户查询结构
4、源程序流程图
图4.2.4程序流程图
4.3系统实现
4.3.1数据模型(ER图)
(1)、学籍管理的ER图设计
分析这个问题的实体,从系统分析可以知道,该ER图涉及的实体有学生、班级、系、档案资料、辅导员、导师。
提取实体以后再分析各个实体之间的联系。
一个系有多个班级,每个班有多名学生组成,每个辅导员管理多个班级,每个导师指导多名学生,每个学生有多种档案材料。
根据上述分析得出学籍管理的ER图如下:
图4.3-1学籍管理局部ER图
其中关于图中各实体的属性如下:
系(名称,编号) 班级(所在院系名称,专业名称,编号,人数)
学生(姓名,学号,性别,籍贯) 辅导员(姓名,编号)
导师(姓名,编号)
(2)、课程管理ER图设计
经过分析,提取涉及的实体有系、课程、学生、教室、教材、教师。
提取出实体后,再对各实体之间的联系进行分析:
每个系开设多门课程,每个学生可以选修多门课程,每门课程可以被多个学生选修,不同的课程可以在不同的时间选择同一个教室上课,每个教师可以担任多门课程的教学,每门课程可以有多个老师教授。
根据上述分析得出课程管理的ER图如下:
图4.3-2课程管理局部ER图
其中各实体的相关属性如下:
课程(名称,编号,学分)
选课(学生学号,课程号,成绩)
4.3.2功能模型(数据流图)
1、学生信息管理的数据流图设计
通过问题分析,得出学生信息管理的外部实体有学工处和学生,处理有录入、删除、修改、查询、学生查询,文档有学生档案。
学生信息管理的工作过程大致如下:
(1)当有新生入学或有学生转入时,学工处需要将其基本信息,比如姓名、学号、所在院校、专业班级、入学时间、性别、籍贯等录入到学生档案中。
(2)当学生毕业或有学生退学时,学工处需要将其基本信息从学生档案中删除。
(3)当有学生转专业时,需要将其基本信息进行修改。
(4)当需要得到某个学生相关信息时就要进行查询。
(5)当对学生信息进行添加、删除、修改、查询时都需要将其基本信息显示出来。
(6)当学生要对个人信息查询时,首先根据学号、密码,然后通过调出学生档案中的个人信息并显示出来。
2、课程信息管理的数据流图设计
通过问题分析,得出课程信息管理的外部实体有教务处和学生,处理有录入、删除、修改、查询、学生查询,文档有课程档案。
课程信息管理的工作过程大致如下:
(1)当要开设某门新的课程时,教务处要把新课程的相关信息录入到课程管理档案中。
(2)当要对已有课程进行删除、修改、打印、查询时,需要浏览课程的相关信息,当浏览完成时,退出浏览界面。
(3)当学生要对个人课程信息进行查询时,首先根据学号、密码,然后通过调出课程档案中的课程信息并显示出来。
3、成绩信息管理数据流图设计
通过问题分析,得出成绩信息管理的外部实体有教务处和学生,处理有录入、成绩浏览、成绩查询、违规浏览、违规增加和查询,文档有成绩档案和违规档案,成绩信息管理的工作过程大致如下:
(1)当成绩录入错误需要修改或当成绩无效需要删除时,首先要对成绩进行浏览,当操作完成时,即可退出。
(2)当某科考试结束,教师将该科成绩单交给教务处,然后教务处将成绩进行录入。
(3)当教师或者辅导员等需要了解关于某科的成绩时,就可以对其成绩进行查询,统计,必要时也可以把成绩单打印出来。
(4)当学生要对成绩信息进行查询时,首先根据学号、密码,然后通过调出成绩档案中的成绩信息并显示出来。
根据上述详细的分析过程,再结合软件工程课上老师教授的相关知识,得出数据流图如下所示:
图4.3-3学生信息管理数据流图
图4.3-4课程信息管理数据流图
图4.3-5成绩信息管理数据流图
4.3.3数据字典的定义
(1)名称:
学生档案
描述:
描述学生相关信息
定义:
学生档案=姓名+学号+所在院校+专业班级+入学时间+性别+籍贯
位置:
显示给用户
(2)名称:
课程档案
描述:
描述课程相关信息
定义:
课程档案=课程名称+课程编号+任课教师
位置:
显示给用户
(3)名称:
成绩档案
描述:
描述学生成绩信息
定义:
成绩档案=学生学号+课程号+分数
位置:
显示给用户
(5)名称:
违规档案
描述:
描述违规信息
定义:
违规档案=学生学号+违规信息
位置:
显示给用户
4.3.4行为模型(状态转换图)
首先进入登录界面,即初始状态,然后输入用户名和密码,如果输入错误,则显示重新输入,如果选择退出则回到登录界面,如果输入正确则进入在线管理界面,此时选择退出则回到登录界面。
处在在线管理界面时,如果选择学生信息查询,则进入学生信息管理页面,此时可以返回在线管理界面。
同理,在在线管理界面上,选择不同的操作即可进入不同的页面,在不同的页面上选择返回时都可以回到在线管理页面。
有关此过程的具体状态转换图如图4.3-6
图4.3-6学生状态转换图
4.4测试
功能截图:
图4.4-1登陆界面
图4.4-2学生用户功能界面
图4.4-3学生查询功能
图4.4-4管理员管理界面
图4.4-5管理员输入功能
图4.4-6管理员删除功能
图4.4-7管理员查询功能
图4.4-8统计功能
五设计总结
不知不觉一周的课程设计就要结束了,学生信息管理系统,本质上是对学生信息的管理和检索。
刚开始我对系统的理解很模糊,不知道从何入手,我通过查找相关资料并参考学校的教务系统,初步了解了这个系统的功能需求和较详细的工作流程。
由于我们课程设计时间较短不能完全实现学生信息管理的全部流程,只是尽我们最大的努力把课程设计题目中提到的该系统要实现的功能进行了一定的划分。
通过这一课程设计,我对学过的软件工程的知识有了进一步的认识,基本上了解了整个软件设计的过程,对数据流程图、状态转换图、ER图、用例图、功能层次图等开发工具的应用更加熟练。
同时我深刻认识到了需求分析阶段的重要性,它是整个系统设计过程的主线,如果在需求分析阶段对系统功能理解错误,那设计的软件就会完全失败。
整个设计过程是对系统的一点点加深理解的过程,在此过程中当我遇到不太清楚的问题时,先是向同学请教,解决不了时再向赵老师请教,经过老师细心耐心的指导,很多问题得以解决。
这使我们的发现问题、分析问题、处理问题的能力得到很好的锻炼和提高。
总之,经过这一周的课程设计,我各方面的能力都有所提升,受益颇多。
参考文献
[1].张海藩.软件工程导论(第五版).北京:
清华大学出版社,2008.2
[2].张荣梅,梁晓林,赵宝琴.VisualC++实用教程.北京:
中国铁道出版社,2008.9
[3]C语言程序设计案例教程(沈大林主编张晓蕾杨旭王锦朱立编著)
[4]C++语言程序设计(第4版)(郑莉董渊何江舟编著)
[5]杨文龙,姚淑珍,吴云.软件工程.北京:
电子工业出版社,1997
[6]陈松乔,任胜兵,王国军.现代软件工程.北京:
清华大学出版社,2004
附录
#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;}}
return;}
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教务处 系统 学生 信息管理