毕业设计管理系统.docx
《毕业设计管理系统.docx》由会员分享,可在线阅读,更多相关《毕业设计管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
毕业设计管理系统
毕业设计管理
一、系统开发的背景
随着计算机及计算机网络的普及和全国各院校的校园网络的日益完善、健全,各种工作的计算机网络化将逐步取代繁重的传统办公模式。
毕业设计作为大学生四年学习的重要环节,也有必要实行计算机网络化管理,从而减轻设计指导老师的承重负担,简化立题、选题、评分等过程,让繁冗的课题设计信息采用计算机数据库统筹管理。
因此,设计一种毕业设计综合管理系统是我校教学管理发展的一项任务,也是各院校教学发展的趋势。
该系统为学生、教师、管理员提供一个交互的接口,大大方便了学生、老师及管理员的管理人员。
毕业设计是学生在校期间的最后一个教学环节,是学习深化和提高的一个重要过程,也是综合检验所学理论知识的一个重要环节。
本设计从课题的申报、课题的审核、学生选题、调剂、指导、评阅、答辩、归档等环节进行管理,实现了毕业设计的整个流程的管理工作。
系统实现了学生自主选题和教师自主选择学生的网上双向选择,并增加了留言板、文件上传与下载、新闻发布等功能,能够保证毕业设计期间管理员、老师、学生之间信息的联通,对保证毕业设计的质量有非常重要的现实意义。
随着网络化的普及,全国高校的校园网络日益健全,实现无纸化办公成为未来的趋势,并且随着天津城市建设学院的教学体制改革不断加深,本系统的建立为参加毕业设计的教师、学生提供接口。
二、系统分析与设计
(一)系统功能要求
根据功能分为教师、学生的前台操作和管理员的综合管理。
系统有三个主要的角色组成:
学生、教师、管理人员。
1.教师完成的操作:
个人信息的管理;课题的申报、修改、选择学生,设计期间与学生的交流与辅导、实习/指导、评阅和答辩成绩的评定。
2.学生完成的操作:
个人信息的管理,选择课题,查询成绩。
3.管理人员:
对教师、学生的信息查询,添加和删除;系统开放管理;选课期间调。
E-R图:
(二)系统模块结构设计
通过对系统功能的分析,毕业设计管理系统功能如图2.2所示。
图2.2毕业设计管理系统功能图
通过上图的功能分析,把整个系统划分为5个模块:
1、文件
1)新建:
新建窗口;
2)打开:
打开本地图片;
3)保存:
保存图形;
4)退出:
关闭窗体
2、编辑
1)撤销
2)重做
3、帮助
1)关于
4、工具栏:
如上图所示。
5、状态栏:
显示鼠标位置、显示本地时间、作者
三、系统的设计与实现
(一)概要设计
3.1.1系统数据流程设计
概要设计阶段的基本目标是用比较抽象的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。
从数据流图出发设想完成系统功能的若干种合理的物理方案,从中选择一个最佳方案。
然后进行软件结构设计,确定软件由哪些模块组成以及这些模块的动态调用关系。
本设计包括管理员、学生模块功能的设计。
首先管理员登录系统,对系统进行初始化,并可设置系统的开放与关闭。
系统初始化后教师可以出题,教师出题完毕管理员审核课题,审核通过后学生才可进行选题,学生选题完后教师可以选择符合题目要求的学生,形成双向选择。
如当出题选题完毕,教师和学生建立了双向的关系后,进入到做题阶段。
管理员和教师通过文件上传与下载、留言板、新闻发布和邮箱联系等方式对学生完成毕设的情况进行监督。
指导教师指导学生完成设计后,进入到评阅阶段。
管理员分配评阅教师后。
系统数据流图如下:
图3-1系统数据流图
3.1.2数据字典设计
1.管理员信息数据字典
表3-1管理员信息数据字典
名字:
管理员信息
别名:
person
描述:
管理员的相关信息
定义:
管理员信息=管理员id+管理员name+管理员password
位置:
存于数据库,在维护系统时应用
2.教师信息数据字典
表3-2教师信息数据字典
名字:
教师信息
别名:
teacher
描述:
教师的相关信息
定义:
教师信息=教师id+教师姓名
位置:
存于数据库,在出题和进程控制时应用
表3-3学生信息数据字典
名字:
学生信息
别名:
student
描述:
学生的相关信息
定义:
学生信息=学生id+学生姓名+学生性别+学生密码
位置:
存于数据库,在选题和进程控制时应用
表3-4课题信息数据字典
名字:
课题信息
别名:
title
描述:
课题的相关信息
定义:
课题信息=课题id+课题名+出题教师+需求人数+课题要求
位置:
存于数据库,在出题、选题时应用
(二)详细设计
3.2.1系统概述
详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。
除了应该保证软件的可靠性之外,使将来编写出的程序可读性好、容易理解、容易测试和维护,是详细设计阶段最重要的目标。
设计的模块有出题、选题子系统、系统维护子系统和评阅答辩管理等。
最初时管理员应对系统进行初始化,初始化完后,教师拥有权限进行出题操作,教师出题完毕,管理员应对该课题进行审核,审核通过后学生这时拥有权限进行选课操作,学生选课操作完毕,这时,教师可以从选择他所出课题的学生中选择适合该课题的学生,达到一种双向的自主选择。
操作完毕后,可能存在某些学生没有选上题目,这时可以通过管理员的调剂操作来处理,把没选题的学生调剂到缺少人数的课题或者重新出题来满足要求,是每个学生都有题可做。
这时,指导教师应指导学生完成毕业设计,完成后应由评阅教师进行评阅。
选题阶段首先由学生通过登录自己的界面,可以看到题目的全部信息并且进行选择。
在达到限定时间后,由管理员通过人工干预的方式确定最终的选题结果。
在确定的时间内和学生完成选题后,由管理员根据题目和学生的具体情况,通过人工干预的方式,进行处理,确定每一个学生的题目,协调学生和题目之间的关系。
图4-4选题流程图
3.2.2系统流程图
图4-7系统流程图
四、系统测试
(一)管理员功能
测试该按钮的使用方法,测试的具体步骤,测试用例的选取,测试的结果。
(如图4.1-4.4)
4.1
\
4.2
4.3
图4.4
(二)学生模块功能测试
测试模块的使用方法,测试该按钮实现的功能,测试的结果。
(如图4.2.1)
4.2.1
4.2.1
图4.2..2
4.2.3
五、总结
系统完成了可画“三角形、四边形、圆形、直线、弧形”等;可选择画图线条颜色;可画图线条粗细;可按钮清除所画图形;可撤销,重做功能。
系统唯一的缺点就是在鼠标指针点击画笔和橡皮擦工具时指针无法变成画笔和橡皮擦的图标。
在这两周的编程过程中,我的的确确学到了不少的东西,无论是从课外书,还是网上资料,或是同学给我的帮助,都大有收获。
对于我们大一新生来说,学到的东西本来就不算不多,跟别谈运用了,这样的实习给我们的收获远远是书上所不能给的。
只有当真真正正运用的时候,才是查漏补缺的最佳时机,知道自己有哪些不足和知识点的遗漏。
并且知识是需要自己去总结的,一本书上的知识是远远不够的,只有从多本书中总结出对自己有用的信息,才能最大的学习到知识。
在这周的实习课中我还总结出了,学习不单单是学习书本上的知识,更重要的是付诸于实践,实践能让我们学到更多更实用的东西,在实践中我能感受到学到的东西不一定会运用,所以,我希望我们能够把实践与学习相结合,让我们能够全面发展。
六、附件(代码、部分图表)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Drawing.Imaging;
namespace课设picturebox
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privateboolf=false;
privateGraphicsig;
privateintx1,y1,x2,y2,x3,y3,x4,y4;
privatePenpen,eraser;
privateBitmapbt,sbt;
privateinttype=0;
privateColorpencolor=Color.Black;
privateColorbgcolor=Color.White;
privateintpenwidth=1;
privateCursorcurearser,curpen;
privateStackhistory,now;
privatevoidForm1_Load(objectsender,EventArgse)
{
Graphicsg1=pictureBox1.CreateGraphics();
pen=newPen(pencolor,penwidth);
eraser=newPen(bgcolor,30);
bt=newBitmap(pictureBox1.Width,pictureBox1.Height,g1);
ig=Graphics.FromImage(bt);
pictureBox1.Cursor=curpen;//设置picturebox的光标为铅笔
history=newStack();
now=newStack();
}
privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse)
{
Application.Exit();
}
//打开图片格式的文件
privatevoid打开ToolStripMenuItem_Click(objectsender,EventArgse)
{
OpenFileDialogopenPic=newOpenFileDialog();
openPic.InitialDirectory="C:
\\users\\public\\pictures";//打开文件的途径
openPic.Filter="ImageFiles(*.jpg,*.png,*.gif,*.bmp)|*.jpg;*.png;*.gif;*.bmp|AllFiles(*.*)|*.*";//打开文件的格式
openPic.FilterIndex=2;
openPic.RestoreDirectory=true;
if(openPic.ShowDialog()==DialogResult.OK)
{
bt=newBitmap(openPic.FileName);
pictureBox1.Image=bt;
ig=Graphics.FromImage(bt);
}
}
//新建画板
privatevoid新建ToolStripMenuItem_Click(objectsender,EventArgse)
{
pictureBox1.Refresh();
Graphicsg=pictureBox1.CreateGraphics();
g.Clear(bgcolor);
ig.Clear(bgcolor);
toolStripStatusLabel2.Text=“新建画板”;
}
//保存文件
privatevoid保存ToolStripMenuItem_Click(objectsender,EventArgse)
{
SaveFileDialogsvImg=newSaveFileDialog();
svImg.InitialDirectory="C:
\\users\\public\\pictures";
svImg.Filter="BMP文件(*.bmp)|*.bmp";
svImg.FilterIndex=2;
svImg.RestoreDirectory=true;
if(svImg.ShowDialog()==DialogResult.OK)
{
pictureBox1.Image.Save(svImg.FileName);
}
}
privatevoidpictureBox1_MouseMove(objectsender,MouseEventArgse)
{
intx,y,w,h;
if(toolStrip1.Enabled==true)
{
toolStripStatusLabel3.Text=string.Format("x:
{0},y:
{1}",e.X,e.Y);//显示鼠标位置
}
if(f)
{
switch(type)
{
//初始画笔
case0:
x2=e.X;y2=e.Y;
ig.DrawLine(pen,x1,y1,x2,y2);
x1=x2;y1=y2;
pictureBox1.Image=bt;
break;
//画三角形
case1:
x2=e.X;y2=e.Y;
x3=x1*2-x2;y3=y2;
ig.Clear(bgcolor);
ig.DrawImage(sbt,0,0);
ig.DrawLine(pen,x1,y1,x2,y2);
ig.DrawLine(pen,x1,y1,x3,y3);
ig.DrawLine(pen,x2,y2,x3,y3);
pictureBox1.Image=bt;
break;
//画矩形
case2:
x2=e.X;y2=e.Y;
ig.Clear(bgcolor);
ig.DrawImage(sbt,0,0);
x=x1x1:
x2;y=y1y1:
y2;
w=Math.Abs(x1-x2);h=Math.Abs(y1-y2);
ig.DrawRectangle(pen,x,y,w,h);
pictureBox1.Image=bt;
break;
//画圆
case3:
x2=e.X;y2=e.Y;
ig.Clear(bgcolor);
ig.DrawImage(sbt,0,0);
x=x1x1:
x2;y=y1y1:
y2;
w=Math.Abs(x1-x2);h=Math.Abs(y1-y2);
ig.DrawEllipse(pen,x,y,w,h);
pictureBox1.Image=bt;
break;
//画直线
case4:
x2=e.X;y2=e.Y;
ig.Clear(bgcolor);
ig.DrawImage(sbt,0,0);
ig.DrawLine(pen,x1,y1,x2,y2);
pictureBox1.Image=bt;
break;
//画弧线
case5:
x2=e.X;y2=e.Y;
x3=x1*2-x2;y3=y2;
x4=x3;y4=y3*2-y2;
ig.Clear(bgcolor);
ig.DrawImage(sbt,0,0);
ig.DrawBezier(pen,x1,y1,x2,y2,x3,y3,x4,y4);
pictureBox1.Image=bt;
break;
//橡皮
case6:
x2=e.X;y2=e.Y;
eraser.Color=bgcolor;
ig.DrawLine(eraser,x1,y1,x2,y2);
x1=x2;y1=y2;
pictureBox1.Image=bt;
break;
}
}
}
privatevoidpictureBox1_MouseDown(objectsender,MouseEventArgse)
{
Bitmapmjl=newBitmap(bt);
history.Push(mjl);
f=true;
x1=e.X;y1=e.Y;//给坐标变量赋值
if(type!
=0)
sbt=newBitmap(bt);
}
privatevoidpictureBox1_MouseUp(objectsender,MouseEventArgse)
{
f=false;
//当stack中包含的元素不为0时撤销和重做图标可用
if(now.Count!
=0)
{
撤销ToolStripMenuItem.Enabled=true;
撤销toolStripButton.Enabled=true;
}
if(history.Count!
=0)
{
重做ToolStripMenuItem.Enabled=true;
重做toolStripButton.Enabled=true;
}
}
privatevoidtoolStripButton1_Click(objectsender,EventArgse)
{
//实先画三角形功能,并点击三角形图标后背景颜色为绿色
type=1;
pictureBox1.Cursor=curpen;
toolStripButton1.BackColor=Color.LawnGreen;
toolStripButton2.BackColor=Color.Transparent;
toolStripButton3.BackColor=Color.Transparent;
toolStripButton4.BackColor=Color.Transparent;
toolStripButton5.BackColor=Color.Transparent;
toolStripButton11.BackColor=Color.Transparent;
toolStripButton9.BackColor=Color.Transparent;
toolStripStatusLabel2.Text="三角形”;
}
privatevoidtoolStripButton2_Click(objectsender,EventArgse)
{
//实现画矩形功能,并点击矩形图标后背景颜色为绿色
type=2;
pictureBox1.Cursor=curpen;
toolStripButton2.BackColor=Color.LawnGreen;
toolStripButton1.BackColor=Color.Transparent;
toolStripButton3.BackColor=Color.Transparent;
toolStripButton4.BackColor=Color.Transparent;
toolStripButton5.BackColor=Color.Transparent;
toolStripButton11.BackColor=Color.Transparent;
toolStripButton9.BackColor=Color.Transparent;
toolStripStatusLabel2.Text=“矩形”;
}
privatevoidtoolStripButton3_Click(objectsender,EventArgse)
{
//实现画圆功能,并点击圆图标后背景颜色为绿色
type=3;
pictureBox1.Cursor=curpen;
toolStripButton3.BackColor=Color.LawnGreen;
toolStripButton2.BackColor=Color.Transparent;
toolStripButton1.BackColor=Color.Transparent;
toolStripButton4.BackColor=Color.Transparent;
toolStripButton5.BackColor=Color.Transparent;
toolStripButton11.BackColor=Color.Transparent;
toolStripButton9.BackColor=Color.Transparent;
toolStripStatusLabel2.Text="圆";
}
privatevoidtoolStripButton4_Click(objectsender,EventArgse)
{
//实现画直线功能,并点击直线图标后背景颜色为绿色
type=4;
pictureBox1.Cursor=curpen;
toolStripButton4.BackColor=Color.LawnGreen;
toolStripButton2.BackColor=Color.Transparent;
toolStripButton3.BackColor=Color.Transparent;
toolStripButton1.BackColor=Color.Transparent;
toolStripButton5.BackColor=Color.Transparent;
toolStripButton11.BackColor=Color.Transparent;
toolStripButton9.BackColor=Color.Transparent;
toolStripStatusLabel2.Text="直线";
}
privatevoidtoolStripButton5_Click(objectsender,EventArgse)
{
//实现画弧线功能,并点击弧线图标后背景颜色为绿色
toolStripButton5.BackColor=Color.LawnGreen;
toolStrip