高校学报信息管理系统 详细设计 和 核心编码与功能实现.doc_第1页
高校学报信息管理系统 详细设计 和 核心编码与功能实现.doc_第2页
高校学报信息管理系统 详细设计 和 核心编码与功能实现.doc_第3页
高校学报信息管理系统 详细设计 和 核心编码与功能实现.doc_第4页
高校学报信息管理系统 详细设计 和 核心编码与功能实现.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

三. 高校学报信息管理系统 详细设计 和 核心编码与功能实现1.引言1.1.编写目的本文档是在概要设计基础上,对概要设计中产生的功能模块进行过程描述,设计功能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明。本文档的预期读者是系统开发人员,以及使用该系统的用户和维护该系统的人员。1.2.背景a待开发的软件系统的名称:华北水利水电学院学学报信息管理系统b本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络:项目任务提出者:华北水利水电学院项目开发者:姚*阁用户:华北水利水电学报编辑部1.3.定义学报管理: 所谓学报管理,主要包括对刊用稿件的组稿、审稿、编辑加工、终审、排版、校对、发行等多个环节,涉及到的信息资源包括稿件信息、作者信息、审稿人信息、评审结果、编委会终审结论、编辑排版信息等等。SQLSERVER2005:开发系统使用的数据库名称1.4.参考资料 1实用软件工程学 庄晋林 杨志宏 中国水利水电出版社2软件工程导论 张海藩 清华大学出版社2.总体设计2.1需求概述高校学报编辑的工作主要包括对刊用稿件的组稿、审稿、编辑加工、终审、排版、校对、发行等多个环节,涉及到的信息资源包括稿件信息、作者信息、审稿人信息、评审结果、编委会终审结论、编辑排版信息等等。具体还有一些细节工作则更为烦琐,诸如:稿件的送审、回复结果登记;对编辑排版结果需要进行毛校、一校、二校和三校多次校对后才能正式出版发行。与此相关还有大量的统计、汇总工作要做,这就要求所开发的系统具有较为丰富的查询、统计功能,以方便用户。2.2软件结构学报信息管理系统系统管理稿件信息作者信息审稿人信息稿件校对统计报表经费管理费用管理评审回复稿件送审奖惩信息维护奖惩信息查询稿件评审员工就职员工调动员工离职员工调动查询修改密码费用统计评审回复学报管理信息系统软件结构3.程序描述3.1.系统管理模块3.1.1功能系统管理主要对该系统的各类使用人员的账户信息进行管理,主要由超级管理员的来完成。账户基本信息主要包括:姓名、性别、出生日期、手机号、电子邮件和地址,该系统的各类使用人员按权限大小依次为:超级管理员、审稿人、普通工作人员、作者。由超级管理员对各类使用人员的账户信息进行统一管理,主要包括对账户信息的添加、删除、修改和查询等操作。3.1.1性能该部分主要是对员工信息的查询和维护,所以对精度要求不高。但是对于时间特性要求较高,因为用户要查询,并要对查询出来的信息进行维护,所以系统响应时间要短,一般为1-2秒。因此在此段程序里,从数据库里查询员工信息的时候可以用存储过程,以节约时间。3.1.1输入项该系统中各类使用人员账户的基本信息,包括:姓名、性别、出生日期、手机号、电子邮件和地址3.1.1输出项更新后的账户信息3.1.1流程逻辑其流程图如下:3.2稿件处理模块3.2.1功能稿件处理模块主要完成对稿件的处理,首先由作者向系统提交稿件信息,稿件信息主要包括稿件编号、稿件名称、作者、类别和来稿日期,然后由审稿人进行一审、二审、终审,通过终审的稿件将由普通工作人员进行毛校、一校、二校,最后由普通工作人员将校对过的稿件出版发行。3.2.1性能由于这些程序都是对数据库的操作,所以在精度上没有过多的要求,所要求的就是对时间特性的,需要响应时间短,一般为1-2秒,为此可以将一些频繁的操作用存储过程来实现,比如说查询功能。3.2.1输入项源稿件信息,包括:稿件编号、稿件名称、作者、类别和来稿日期3.2.1输出项待出版发行的稿件3.2.1流程逻辑其流程图如下:3.3统计报表模块3.3.1功能统计报表模块主要对系统中各类信息进行统计,由超级管理员来完成,主要包括作者统计、稿件统计、审稿人统计、出版发行统计。3.3.1性能对精度没有要求,但是对时间上要求还是要响应时间短,一般为1-2秒,为此,可以把一些频繁的操作用存储过程来实现,比如说是查询。3.3.1输入项各类信息的基本信息,包括:稿件信息、作者信息、审稿人信息、评审信息、费用信息。3.3.1输出项统计分类后的各类信息3.3.1流程逻辑其流程图如下:3.4费用管理模块3.4.1功能费用管理模块主要是对各类费用信息进行管理,主要包括对费用信息的浏览和统计,费用统计包括,评审费统计、稿费统计、出版发行费统计、办公费统计。3.4.1性能对精度没有要求,但是对时间上要求还是要响应时间短,一般为1-2秒,为此,可以把一些频繁的操作用存储过程来实现,比如说是查询。3.4.1输入项所有费用信息3.4.1输出项统计分类后的费用信息3.4.1流程逻辑其流程图如下:4. 核心编码与功能实现4.1 权限控制核心代码:30 public partial class F_Main : Form DataClass.MyDataClass MyClass = new LJM.DataClass.MyDataClass(); public F_Main() InitializeComponent(); this.label2.Text = string .Format (0:现在是yyyy年M月d日,H点m分,dddd, DateTime.Now); if (LJM.DataClass.MyDataClass.Login_Limit = 1 | LJM.DataClass.MyDataClass.Login_Limit = 3) Menu_7_BianJiPaiBan.Enabled = false; #region 将StatusStrip控件中的信息添加到treeView控件中 / / 读取菜单中的信息. / / TreeView控件 / MenuStrip控件 public void GetMenu(TreeView treeV, MenuStrip MenuS) for (int i = 0; i 0) for (int j = 0; j 0) for (int p = 0; p newmenu2.DropDownItems.Count; p+) /遍历三级菜单项 /将三级菜单名称添加到TreeView组件的子节点newNode2中 /if (newmenu2.DropDownItemsp.Enabled) newNode2.Nodes.Add(newmenu2.DropDownItemsp.Text); #endregion #region 将StatusStrip控件中的信息添加到treeView控件中 / / 读取菜单中的信息. / / TreeView控件 / MenuStrip控件 public void Show_Form(string FrmName,int n) if (FrmName = 稿件统计) /判断当前要打开的窗体 F_GaoJian_Count FGaoJianCount = new F_GaoJian_Count(); FGaoJianCount.Text = 稿件统计; FGaoJianCount.ShowDialog(); FGaoJianCount.Dispose(); MyClass.con_close(); if (FrmName = 工作人员) PerForm.F_Worker FrmStaffInfo = new LJM.PerForm.F_Worker(); FrmStaffInfo.Text = 工作人员信息; /设置窗体名称 FrmStaffInfo.ShowDialog(); /显示窗体 FrmStaffInfo.Dispose(); if (FrmName = 添加职工) this.Tag = 2;/表示注册 PerForm.F_WorkerRegister FrmRegister = new PerForm.F_WorkerRegister(); /声明注册窗口,进行调用 FrmRegister.ShowDialog(); FrmRegister.Dispose(); MyClass.con_close(); if (FrmName = 稿件信息) PerForm.F_Magazine FrmMagazineInfo = new LJM.PerForm.F_Magazine(); FrmMagazineInfo.Text = 稿件信息; /设置窗体名称 FrmMagazineInfo.ShowDialog(); /显示窗体 FrmMagazineInfo.Dispose(); MyClass.con_close(); if (FrmName = 作者信息) PerForm.F_Author FrmAuthorInfo = new LJM.PerForm.F_Author(); FrmAuthorInfo.Text = 作者信息; /设置窗体名称 FrmAuthorInfo.ShowDialog(); /显示窗体 FrmAuthorInfo.Dispose(); MyClass.con_close(); if (FrmName = 审稿人信息) PerForm.F_Worker FrmStaffInfo = new LJM.PerForm.F_Worker(); FrmStaffInfo.Text = 审稿人员信息; /设置窗体名称 FrmStaffInfo.ShowDialog(); /显示窗体 FrmStaffInfo.Dispose(); MyClass.con_close(); if (FrmName = 作者统计) F_Author_Count FAuthorCount = new F_Author_Count(); FAuthorCount.Text = 作者统计; FAuthorCount.ShowDialog(); FAuthorCount.Dispose(); if (FrmName = 审稿人统计) Review fReviewCount = new Review(); fReviewCount.Text = 审稿人统计; fReviewCount.ShowDialog(); fReviewCount.Dispose(); if (FrmName = 稿件评审情况统计) F_GaoJian_Count FGaoJianCount = new F_GaoJian_Count(); FGaoJianCount.Text = 稿件评审情况统计; FGaoJianCount.ShowDialog(); FGaoJianCount.Dispose(); if (FrmName = 编委会终审情况统计) F_GaoJian_Count FGaoJianCount = new F_GaoJian_Count(); FGaoJianCount.Text = 编委会终审情况统计; FGaoJianCount.ShowDialog(); FGaoJianCount.Dispose(); if (FrmName = 出版发行统计) F_Publish fPublish = new F_Publish(); fPublish.Text = 出版发行统计; fPublish.ShowDialog(); fPublish.Dispose(); if (FrmName = 费用信息) F_Charge fCharge = new F_Charge(); fCharge.Text = 费用信息; fCharge.ShowDialog(); fCharge.Dispose(); if (FrmName = 费用统计) F_ChargeCount fCahrgeCount = new F_ChargeCount(); fCahrgeCount.Text = 费用统计; fCahrgeCount.ShowDialog(); fCahrgeCount.Dispose(); if(FrmName=稿件送审) PerForm.F_SendDraft F_SendDlg = new LJM.PerForm.F_SendDraft(); F_SendDlg.ShowDialog(); F_SendDlg.Dispose(); if (FrmName = 评审回复) PerForm.F_SendDraft F_SendDlg = new LJM.PerForm.F_SendDraft(); F_SendDlg.Text = 评审回复; F_SendDlg.ShowDialog(); F_SendDlg.Dispose(); if(FrmName = 稿件校对) PerForm.F_ProofDraft F_ProofDraft = new LJM.PerForm.F_ProofDraft(); F_ProofDraft.ShowDialog(); F_ProofDraft.Dispose(); #endregion #region 用TreeView控件调用StatusStrip控件下各菜单的单击事件 / / 用TreeView控件调用StatusStrip控件下各菜单的单击事件. / / MenuStrip控件 / TreeView控件的TreeNodeMouseClickEventArgs类 public void TreeMenuF(MenuStrip MenuS, TreeNodeMouseClickEventArgs e) string Men = ; for (int i = 0; i 0) /遍历二级菜单项 for (int j = 0; j 0) /遍历三级菜单项 for (int p = 0; p newmenu2.DropDownItems.Count; p+) if (newmenu2.DropDownItemsp).Text = e.Node.Text)/ if (newmenu2.DropDownItemsp).Enabled = false)/ / MessageBox.Show(当前用户无权限调用 + + e.Node.Text + + 窗体);/ break;/ / else/ if (newmenu2.DropDownItemsp).Text.Trim() = 员工生日提示 | (newmenu2.DropDownItemsp).Text.Trim() = 员工合同提示)/ Show_Form(newmenu2.DropDownItemsp).Text.Trim(), 1);/ else Show_Form(newmenu2.DropDownItemsp).Text.Trim(), 2); #endregion private void F_Main_Load(object sender, EventArgs e) F_Login FrmLogin = new F_Login(); /声明登录窗口,进行调用 FrmLogin.ShowDialog(); FrmLogin.Dispose(); if (DataClass.MyDataClass.Login_Limit = 0) ; else if (DataClass.MyDataClass.Login_Limit = 1)/审稿人 Tool_Worker_Add.Enabled = false; this.Menu_7_BianJiPaiBan.Enabled = false; this.Tool_Worker.Enabled = false; else if (DataClass.MyDataClass.Login_Limit = 2)/普通工作人 Tool_Worker_Add.Enabled = false; this.Menu_4_ShenGaoRen.Enabled = false; else if (DataClass.MyDataClass.Login_Limit = 3)/作者 Menu_1.Enabled = false; Menu_4_ShenGaoRen.Enabled = false; Tool_Worker.Enabled = false; Tool_Worker_Add.Enabled = false; Menu_5_PingShen.Enabled = false; Menu_7_BianJiPaiBan.Enabled = false; Menu_8.Enabled = false; Menu_9.Enabled = false; GetMenu(treeView1,menuStrip1); / 4.2 注册与登录:namespace LJM public partial class F_Login : Form DataClass.MyDataClass MyClass = new LJM.DataClass.MyDataClass(); public F_Login() InitializeComponent(); /下面实现可以在窗口的任一位置拖动窗口方法 #region API函数 private const int WM_SysCommand = 0x0112; private const int OneMsgNum = 0xf017; /- /以下两个API函数的作用:拖动窗口 DllImport(user32) /DllImport 用到命名空间using System.Runtime.InteropServices; private static extern bool ReleaseCapture(); DllImport(user32) private static extern bool PostMessage(int hWnd, int Mwg, int wParam, int lParam); /- private void F_Login_MouseDown(object sender, MouseEventArgs e) ReleaseCapture(); /API函数 PostMessage(int)this.Handle, WM_SysCommand, OneMsgNum, 0); /API函数 #endregion private void F_Login_Load(object sender, EventArgs e) try MyClass.con_open(); /连接数据库 MyClass.con_close(); textName.Text = ; textPass.Text = ; catch MessageBox.Show(数据库连接失败。, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); Application.Exit(); private void btnLogin_Click(object sender, EventArgs e) this.Tag = 1;/表示登录 if (textName.Text != & textPass.Text != ) SqlDataReader temDR = MyClass.getcom(select * from 用户表where Staff_ID= + textName.Text.Trim() + and Password= + textPass.Text.Trim() + ); bool ifcom = temDR.Read(); if (ifcom) DataClass.MyDataClass.Login_ID = textName.Text.Trim(); DataClass.MyDataClass.Login_Name = temDR.GetString(1); DataClass.MyDataClass.Login_Limit = temDR.GetInt32(3); DataClass.MyDataClass.My_con.Close(); DataClass.MyDataClass.My_con.Dispose(); this.Close(); else MessageBox.Show(用户名或密码错误!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); textName.Text = ; textPass.Text = ; MyClass.con_close(); else MessageBox.Show(请将登录信息添写完整!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); private void btnClose_Click(object sender, EventArgs e) Application.Exit(); private void F_Login_Activated(object sender, EventArgs e) textName.Focus(); private void textName_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = r) textPass.Focus(); private void textPass_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = r) btnLogin.Focus(); private void btnRegister_Click(object sender, EventArgs e) this.Tag = 2;/表示注册 PerForm.F_AuthorRegister FrmRegister = new PerForm.F_AuthorRegister(); /声明注册窗口,进行调用 FrmRegister.ShowDialog(); if (FrmRegister.registerResult = DialogResult.OK)/提交成功 FrmRegister.Dispose(); this.Close(); else/取消注册 FrmRegister.Dispose(); this.Close(); Application.Exit(); 4.3 没有用户名的作者,只能通过外部注册获得账号;4.4 注册成功后自动调转到作者页面 :4.5 作者登陆后只能按照自己的权限进行操作,:4.6 如查找自己已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论