管理信息系统_课程设计报告.doc_第1页
管理信息系统_课程设计报告.doc_第2页
管理信息系统_课程设计报告.doc_第3页
管理信息系统_课程设计报告.doc_第4页
管理信息系统_课程设计报告.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告( 2010- 2011年度第2学期)名 称: 管理信息系统 题 目: 商品报价关系系统 院 系: 计算科学学院 班 级: 信息与计算科学081 学 号: 200811314109 200811314118 200811314124 学生姓名: 谢伟斌、方忠湟、阮喜城 指导教师: 高川翔 设计周数: 1 成 绩: 日期: 2011年 6月6 日目 录一、课程设计的目的与要求1二、设计正文11 问题分析12 算法设计13 系统设计24.程序编码25.调试分析26.测试结果27.用户使用说明2三、课程设计总结或结论2四、参考文献2附录(其他必要资料)3商品报价管理系统一、课程设计的目的与要求训练学生灵活应用所学管理信息系统理论知识的使用,独立完成分析问题并利用rad应用软件开发工具以及数据库系统完成一个实际管理信息系统的开发。结合实际的编程知识及结合其它开发工具,编写程序求解指定问题。初步掌握解决各种具体应用问题的基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和各学科知识的综合运用来进行软件开发,巩固、深化学生的理论知识,提高学生的动手能力,并在此过程中培养他们严谨的科学态度和良好的工作作风。要求(1)了解并掌握管理信息系统的开发方法,具备初步的独立分析和设计能力;(2)初步掌握软件开发过程的需求分析、系统设计、程序编码、测试等基本方法和技能;(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;(5)设计的题目要求达到一定工作量,并具有一定的深度和难度;(6)编写出课程设计说明书。二、设计正文1 需求分析对于中小型企业,每到交易旗舰,准备参加展会货品的报价单每每得重新做过,对于货品品种种类多,分布广,查找资料起来工作十分的繁琐,而且十分的浪费时间。所以开发本货品报价管理系统,可以实现资料信息化,一次录入,查找简单方便,可供多次使用,而且可以实现按照一定的规范,自动录入已有的报价单以及输出所需要的货品信息形成新的报价单。(1) 输入的形式和输入值的范围:a、 系统管理模块:a、 添加操作员:登录名称,操作员姓名均为字符或数字,不超过10个;密码以及确认密码,为字符或数字,不超过20个。b、 更改密码:旧密码,新密码,确认新密码为字符或数字,不超过20个。c、 删除操作员:没有输入。d、 权限更改:没有输入。e、 以上所有输入均不能为空。b、商品报价管理:a、 产品信息查询:货号查询,字符或数字,不超过10个。b、 添加产品信息:货号,规格,包装率,fob(以美元为单位的报价),exw(以人名币为单位的报价),为字符或数字,不超过20个;备注,为中文或英文字符,数字,不超过40个。c、 更改产品信息:依照添加产品信息中的范围。d、 以上所有输入,除货号不能为空,其他无限制是否可为空。(2) 输出的形式:a、 系统管理模块:a、 添加操作员:数据合法,添加成功或失败;数据填写不完整或是不合法,提示修改。b、 更改密码:旧密码填写正确,新密码与确认新密码一致,提示修改成功;旧密码填写错误,提示错误;新密码与确认密码不一致,提示重新输入。c、 删除操作员:删除成功或失败。d、 权限更改:更改成功或失败。b、商品报价管理:a、 产品信息查询:货品的详细信息。b、 添加产品信息:填写符合规范,添加成功;否则提示添加失败。c、 更改产品信息:填写符合规范,修改成功;否则提示修改失败。(3) 程序所能达到的功能:添加操作员,删除操作员,更改权限,修改密码,添加产品信息,修改产品信息,货品查询,导入已有的报价单,导出数据形成新的报价单。(报价单均以excl为基准)(4) 测试数据:a、 系统管理模块:a、 添加操作员:登录名称操作员姓名输入密码确认密码操作原因angeo安戈12341234成功angeoxx12341234失败用户名重复angeo2012xx123321失败密码输入不一致b、 更改密码:旧密码新密码确认密码操作原因空124124失败旧密码不能为空123124125失败新密码与确认密码不一直123124124成功b、商品报价管理:a、 添加产品信息:货号规格包装率fobexw操作原因ga-101成功ga-10121*.se.20100失败货号已经存在ga-10222*.se.10100成功2 概要设计(1) 抽象数据类型:系统中自定义用户与货品的实体类,详细如下:用户实体类user:属性名数据类型类型初始值用户iduseridstringprivate“”用户名称usernamestringprivate“”密码passwordstringprivate“”权限powerstringprivate“b”货品实体抽象类:属性名数据类型类型初始值货号itemnamestringprivate“”规格specsstringprivate“”包装率packratestringprivate“”外销价格fobstringprivate“”内销价格exwstringprivate“”描述,分类descstringprivate“”(2) 程序流程:3 详细设计系统采用简单的mvc设计模式,将系统分为基本模版模块,负责显示的面板模块以及负责相应时间处理数据已经获取相当的结果集合的控制模块。(1) 基本模块:基本模块中包括2个基本的实体类对象user和item。(2) 显示模块:以用户模块和货品模块两大模块为主,以及多个嵌入子面板包括用户添加面板,用户删除面板,用户密码修改面板,用户权限修改面板,货品信息添加面板,货品信息更改面板,货品信息查询面板。l 用户添加面板:根据输入的数据,验证输入的数据是否合法;-数据合法,则提交到数据库中,验证是否已经存在该用户名;-若用户名不存在,则添加到数据库中,返回添加成功信息;-若用户名存在,则不添加数据到数据库,返回用户名已经存在提示信息;-数据不合法,则不提交数据,返回修改数据的提示信息;l 用户删除面板:从用户成员表格中选择所要删除的用户,确定后删除。l 用户密码修改面板:根据输入的数据,验证输入的数据是否合法;-均不为空,验证新密码与确认密码是否一致;-新密码与确认密码一致,从数据库中提取用户密码,与输入的旧密码进行匹配,判断是否一致;-提取的密码与输入的旧密码一致,将新密码提交的数据库中,覆盖原先的密码,返回“密码修改成功”提示信息;-提取的密码与输入的旧密码不一致,返回“密码错误”提示信息;-新密码与确认密码不一致,返回“新密码与确认密码不一致”提示信息;-均为空,返回“输入密码不能为空”提示信息。l 用户权限修改面板:从选择用户的下拉列框中选取用户,所选中的用户的详细信息将显示在面板上,在权限一栏中,可以选择“管理员”与“操作员”两选项,选择后点击修改,成功则返回“修改成功”提示信息,失败则返回“修改失败”提示信息。l 货品信息添加面板:根据输入的数据验证是否合法(即货号是否为空);-货号不为空;-搜索数据库中,查找是否有与该货号相同的货品信息存在;-不存在与输入货号的货品信息,则将输入数据提交到数据库中,返回“添加成功”提示信息;-存在与输入货号的货品信息,则返回“商品信息添加失败,存在同名商品”提示信息;-货号为空,返回“货号不能为空”提示信息。l 货品信息更改面板:从选择商品下拉列表中选择索要修改的货品编号,在面板上会显示已保存在数据库中该货品的详细信息。-如是删除,则点击删除按钮,再一次确认后,从数据库中删除该货品的信息,返回“删除成功”提示信息;-如果修改,则对该货品的信息进行修改后点击修改按钮,符合要求则将数据提交到数据库覆盖原来的数据,返回“修改成功”提示信息。l 货品信息查询面板:-根据输入的查询得到的数据在表格中显示;-双击选择某一货品则可查看该货品的图片;-点击添加按钮,则将选择的货品添加到输入列表中;-点击导出数据按钮,选择文件存放地址,输入文件名,则可将输出列表中的货品信息输出形成报价表单;-点击导出数据按钮,选择需要导入报价单;-验证选择的报价单文件是否为excl文件;-选择的文件符合要求,则读取文件中符合规范的内容,存入数据库;-选择的文件不符合要求,则返回“选择的文件不是excl文件。”提示信息。注:本查询为迷糊查询,空数据查询默认是查找所以信息(3) 控制模块:控制模块主要由数据库连接,实体类dao,图片管理以及报价表单输入输出控制组成。l 数据库连接:定义一静态的数据连接类,提供获取数据库连接和释放连接两个静态方法。l 实体类dao:定义两实体类的dao类,包括基本的增删改查功能,再在此基础上,扩展系统所需的方法。l 图片管理:定义对于报价表单中图片管理的类,包括基本的增删改查功能。l 报价表单输入输出控制:引用外包,自定义规范,对所需的数据或文件进行相应的处理,以转换成我们所需要的文件或是数据。数据库设计:针对系统所需要的两个实体类,设计了t_user和t_items两个表,分别对应与用户实体类和货品实体类。t_user:t_items:4.程序编码由于功能重复,在此仅以某一为例子或仅列出类中某重要代码片段。1. 数据库连接类(connect.java):package com.angeo.tools;import java.sql.*;public class connect protected static string dbclassname = com.mysql.jdbc.driver;/mysql数据库jdbc驱动protected static string dbuser = root;/数据库用户名protected static string dbpwd = root;/数据库密码protected static string dburl = jdbc:mysql:/localhost/sms?user= + dbuser + &password= + dbpwd;/获取数据库连接url/获取连接public static connection getconnection()try class.forname(dbclassname);connection conn = drivermanager.getconnection(dburl);return conn; catch (classnotfoundexception e) e.printstacktrace(); catch (sqlexception e) e.printstacktrace();return null;/关闭连接以释放资源public static void close(connection conn,preparedstatement pstmt,resultset rs) tryif(rs != null) rs.close();rs = null;if(pstmt != null) pstmt.close();pstmt = null;if(conn != null) conn.close();conn = null; catch (sqlexception e)e.printstacktrace();2. 以用户实体类dao(userdao.java)中增删查改的某一功能为例子的代码片段:/* * 查询数据库是否存在所查找内容的相关信息 * param userid 查询的操作员的id * return 查询得到结果,返回true,否则返回false * throws exception */public boolean checkuserishave(string userid)string sql = select * from t_user where user_id=?;/查询用户id的sql语句connection conn = null;preparedstatement pstmt = null;resultset rs = null;try conn = connect.getconnection();/获取连接pstmt = conn.preparestatement(sql);/预编译pstmt.setstring(1, userid);/设置参数rs = pstmt.executequery();/获取结果集if(rs.next() /有数据,返回truereturn true; catch (exception e) e.printstacktrace(); finally connect.close(conn, pstmt, rs);/释放资源return false;3. 图片管理类(imagesmana.java):package com.angeo.tools;import java.io.file;import java.io.fileoutputstream;import java.io.ioexception;public class imagesmana /* * 添加图片到本地 * param imagename * param imagedata */public void imageadd(string imagename,byte imagedata) string imageurl = ./images/items/ + imagename + .png;/文件名file fileimage = new file(imageurl);/创建图片文件fileoutputstream fileos = null;try fileos = new fileoutputstream(fileimage);/ 建立一个上传文件的输出流fileos.write(imagedata, 0, imagedata.length);/ 将文件写入服务器 catch (ioexception e1) e1.printstacktrace(); finally try fileos.close(); catch (ioexception e) e.printstacktrace();/* * 删除图片 * param imagename * return */public boolean imagedel(string imagename) string imageurl = ./images/items/ + imagename + .png;/文件名file fileimage = new file(imageurl);/创建图片文件if(fileimage.exists() & fileimage.delete() return true;elsereturn false;/* * 更换图片 * param imagename * param imagedata * return */public boolean imageupd(string imagename,byte imagedata) if(imagedel(imagename) imageadd(imagename,imagedata);return true;return false;4. 报价表单(excl文件)导出类(createxls.java)导入类(readxls.java):package com.angeo.exportexcl;import java.io.*; import java.util.list;import com.angeo.model.item;import jxl.*; import jxl.write.*; import jxl.format.alignment; public class createxls private list list;private string saveurl;/文档路径private string headername;/表头private writableworkbook book;/excl文本工作区public createxls(list list,string saveurl,string headername)this.list = list;this.saveurl = saveurl;this.headername = headername; public boolean savafile() boolean issave = false; try book = workbook.createworkbook(new file(saveurl + .xls);/创建文件 writablesheet sheet = book.createsheet(sheet_1, 0);/穿件文件页面 /获取表格的行数与列数 int cloumn = headername.length;/列数 int row = list.size();/行数 writablefont wfont = new writablefont(writablefont.createfont(楷书),14 );/设置字体格式,大小 writablecellformat font = new writablecellformat(wfont); font.setalignment(alignment.centre); / 设置居中 /设置行高列宽 for(int i=0; i=cloumn; i+) sheet.setcolumnview(i,20);/设置列宽 for(int i=0; i=row*4; i+) sheet.setrowview(i,400);/设置行高 /填写表头 for(int i=1; i=cloumn ;i+) label label = new label(i, 0, headernamei-1,font); sheet.addcell(label); label label = new label(0, 0,图片 ,font); sheet.addcell(label); /向表格填写数据 for(int i=1 ; i=row ; i+) label labelname = new label (1, i + (i-1)*3, list.get(i-1).getitemname(), font); sheet.addcell(labelname); label labelspec = new label (2, i + (i-1)*3, list.get(i-1).getspecs(), font); sheet.addcell(labelspec); label labelpr = new label (3, i + (i-1)*3, list.get(i-1).getpackrate(), font); sheet.addcell(labelpr); label labelfob = new label (4, i + (i-1)*3, list.get(i-1).getfob(), font); sheet.addcell(labelfob); label labelexw = new label (5, i + (i-1)*3, list.get(i-1).getexw(), font); sheet.addcell(labelexw); label labeldesc = new label (6, i + (i-1)*3, list.get(i-1).getdesc(), font); sheet.addcell(labeldesc); byte data = new byte102400;/定义一个1k大小的数组 string filename = list.get(i-1).getitemname() + .png;/文件名 file file = new file(./images/items/ + filename);/创建图片文件 fileinputstream stream = new fileinputstream(file);/指定要读取的图片 bytearrayoutputstream bos = new bytearrayoutputstream();/定义一个字节数组输出流,用于转换数组 /读取照片像素数组 while(stream.read(data)!=-1) bos.write(data); byte imagedata = bos.tobytearray(); /转换成btye数组 fileoutputstream fileos = new fileoutputstream(file);/ 建立一个上传文件的输出流 fileos.write(imagedata, 0, imagedata.length);/ 将文件写入服务器 fileos.close(); /添加图片到excel writableimage image=new writableimage(0, i + (i-1)*3, 1, 4, file);/从a1开始 跨2行3个单元格 sheet.addimage(image);/ws是sheet book.write(); book.close(); issave = true; catch (exception e) e.printstacktrace(); return issave; ppackage com.angeo.exportexcl;import java.io.*; import java.util.arraylist;import java.util.list;import javax.swing.imageicon;import javax.swing.jframe;import javax.swing.jlabel;import javax.swing.joptionpane;import com.angeo.model.item;import com.angeo.model.itemdao;import com.angeo.tools.imagesmana;import jxl.*; public class readxls private static list list;private string fileurl;private string headername;private sheet sheet = null;private fileinputstream fis = null; public readxls(string fileurl,string headername) this.list = new arraylist(); this.fileurl = fileurl;this.headername = headername; public list readxls() try fis = new fileinputstream(fileurl); workbook book = workbook.getworkbook(fis); int sheetnumber = book.getnumberofsheets(); for(int a=0; asheetnumber; a+) /读取第a个sheet sheet sheet = book.getsheet(a); /获取excl文件行列数 int cloumn = sheet.getcolumns();/列 int row = sheet.getrows();/行 /循环查找表中与表头相一致的列,并输入信息 lop:for(int i=0; iheadername.length; i+) for(int j=0; jcloumn; j+) /获取列名 cell cellname = sheet.getcell(j, 0); string cloumnname = cellname.getcontents().trim(); /如果excl数据表中有相应的数据,则取出 if(headernamei.equals(cloumnname) for(int k=1; krow; k+) cell cell = sheet.getcell(j, k); string result = cell.getcontents().trim(); additemtolist(result, k, i); if(i=0) additemphoto(sheet);/添加图片 continue lop; for(int k=1; krow; k+) additemtolist(, k, i); checknulldata(row);/清空空白数据行 itemdao idao = new itemdao(); /将数据保存到数据库中 for(int j=0; jlist.size(); j+) if(!idao.checkitemishave(list.get(j).getitemname() idao.additem(list.get(j); fis.close(); book.close(); catch (exception e) /不是规定的excl文档,抛出错误 joptionpane.showmessagedialog(null,选择的文件不是excl文件。, 数据导入, joptionpane.error_message); list = null; e.printstacktrace(); finally if(fis != null) try fis.close();fis = null; catch (ioexception e) e.printstacktrace(); return list; /* * 向结果集list中添加数据 * param result * param row * param cloumn */ public static void additemtolist(string result,int row,int cloumn) switch (cloumn) case 0: /定制list以存放相应的数据 item item = new item(); item.setitemname(result); list.add(item); break; case 1:list.get(row-1).setspecs(result);break; case 2:list.get(row-1).setpackrate(result);break; case 3:list.get(row-1).setfob(result);break; case 4:list.get(row-1).setexw(result);break; case 5:list.get(row-1).setdesc(result);break; /将图片添加到本地 public void additemphoto(sheet sheet) int imagenumber = sheet.getnumberofimages(); int imagenow = list.size() / 3; system.out.println(imagenumber); system.out.println(imagenow); imagesmana iman = new imagesmana(); for(int i=0; iimagenumber; i+) for(int j=0; j3; j+) int index = i * 3 + j; byte imagedata = sheet.getdrawing(i).getimagedata(); string imagename = list.get(index).getitemname(); if(!imagename.equals() iman.imageadd(imagename,imagedata); imageicon icon = new imageicon(imagedata);jlabel jl = new jlabel(icon);jframe frame = new jframe();frame.add(jl);frame.setsize(icon.geticonwidth(), icon.geticonheight();frame.setdefaultcloseoperation(javax.swing.jframe.dispose_on_close);frame.setvisible(true); /从用户导入数据表list中清除空白数据行 public void checknulldata(int row) /检查空数据行,进行删除 for(int i=0; irow-1; i+) if(list.get(i).getitemname().equals() list.remove(i);/如果为空,移除出结果结合 row = row - 1;/结果集合总个数-1 i = i - 1;/当前行号-1 5. 面板以及面板中的事件:登录面板(login.java)中的登录按钮事件为例子:/登录按钮以及按钮事件login = new jbutton();login.addactionlistener(new actionlistener() public void actionperformed(final actionevent e) userdao udao = new userdao();string userid = username.gettext().trim();/获取登录名称stri

温馨提示

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

评论

0/150

提交评论