1、课 程 设 计 报 告课程名称 JAVA 程序设计 课题名称 专 业 信息管理与信息系统 班 级 信管 14 学 号 姓 名 指导教师 李峰、张益星 2017 年 6 月 19 日湖南工程学院课 程 设 计 任 务 书课程名称 JAVA 程序设计 课 题 专业班级 信管 14 学生姓名 学 号 指导老师 李峰、张益星 审 批 任务书下达日期 2017 年 5 月 28 日任 务 完 成 日 期 2017 年 6 月 19 日一 、 设 计 内 容 与 设 计 要 求1.课程设计目的全面熟悉、掌握 JAVA 程序设计基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及 JAVA 程序设计的
2、本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强JAVA 程序设计概念,熟悉 java 语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2.课题题目理发师算法N 皇后问题算法银行家算法页面置换算法问题磁盘调度算法问题3设计要求设计课题题目:按学号顺序(每 13 位学生选择一题)选择相应题号的课题。换题者不记成绩。根据自己对应的课题完成以下主要工作:完成系统需求分析:包括系统设计目
3、的与意义;系统功能需求(系统流程图) ;输入输出的要求。完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图) 。完成系统详细设计:包括需求分析;类层次图;界面设计与各功能模块实现。系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。关键源程序(带注释)按规定格式完成课程设计报告,将其打印稿(A4 纸)上交给老师存档。不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。二 、 进 度 安 排16 周 星期五 上午 8:00-12:00 下午 14:00-16:00
4、星期日 上午 8:00-12:00 下午 14:00-16:0017 周 星期二 上午 8:00-12:00 下午 14:00-16:00星期三 上午 8:00-12:00 下午 14:00-16:00课题 1:理发师算法(一) 、课程设计题目:理发师算法(二) 、目的与要求: 1、目的: (1)要求学生达到熟练掌握 java 语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及 java 的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类
5、层次; (3)在系统中定义类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三) 、设计方法和基本原理: 1、问题描述(功能要求): 一个理发店有一个入口和一个出口。理发店内有一个可站 5 位顾客的站席区、4 个 单人沙发、3 个理发师及其专用理发工具、一个收银台。新来的顾客坐在沙发上等待;没有空沙发时,可在站席区等待;站席区满时,只能在入口外等待。理发师可从事理发、收银和休息三种活动。理发店的活动满足下列条件:1)休息的理发师是坐地自己专用的理发椅上
6、,不会占用顾客的沙发;2)处理休息状态的理发师可为在沙发上等待时间最长的顾客理发;3)理发时间长短由理发师决定;4)在站席区等待时间最长的顾客可坐到空闲的理发上;5)任何时刻最多只能有一个理发师在收银。要求:(1)界面友好(2)能实现进程同步和互斥2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法) ; (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; 课题 2:N 皇后问题(一) 、课程设计题目:N 皇
7、后问题(二) 、目的与要求: 1、目的: (1)要求学生达到熟练掌握 java 语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及 java 的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中定义类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三) 、设计方法和基本原理:
8、1、问题描述(功能要求): N 皇后问题是一个经典的问题,在一个 N*N 的棋盘上放置 N 个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击) 。下面是算法的高级伪码描述,这里用一个 N*N 的矩阵来存储棋盘(或用1 维矩阵保存放置位置。 )1) 算法开始, 清空棋盘,当前行设为第一行,当前列设为第一列2) 在当前行,当前列的位置上判断是否满足条件(即保证经过这一点的行,列与斜线上都没有两个皇后),若不满足,跳到第 4 步3) 在当前位置上满足条件的情形:在当前位置放一个皇后,若当前行是最后一行,记录一个解;若当前行不是最后一行,当前行设为下一行, 当前列设为当
9、前行的第一个待测位置; 若当前行是最后一行,当前列不是最后一列,当前列设为下一列;若当前行是最后一行,当前列是最后一列,回溯,即清空当前行及以下各行的棋盘,然后,当前行设为上一行,当前列设为当前行的下一个待测位置;以上返回到第 2 步4) 在当前位置上不满足条件的情形:若当前列不是最后一列,当前列设为下一列,返回到第 2 步; 若当前列是最后一列了,回溯,即,若当前行已经是第一行了,算法退出,否则,清空当前行及以下各行的棋盘,然后,当前行设为上一行,当前列设为当前行的下一个待测位置,返回到第 2 步; 2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个
10、实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法) ; (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。课题 3:银行家算法问题(一) 、课程设计题目:银行家算法问题(二) 、目的与要求: 1、目的: (1)要求学生达到熟练掌握 java 语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及 java 的编程思想来
11、完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中定义类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三) 、设计方法和基本原理: 1、问题描述(功能要求): 银行家算法问题能实现 1)进程和资源的种类的设置 2)进程和资源初始状态的生成 3)用户执行需求 4)给出安全序列和不安全结果要求:(1)界面友好(2)能实现进程和资源初始状态的生成2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统
12、中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法) ; (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。课题 4:页面置换算法问题(一) 、课程设计题目:页面置换算法问题(二) 、目的与要求: 1、目的: (1)要求学生达到熟练掌握 java 语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及 java
13、的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中定义类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三) 、设计方法和基本原理: 1、问题描述(功能要求): 页面置换算法问题能实现 1)最佳置换算法 2)先进先出算法 3)最近最久未被使用算法 4)clock 置换算法要求:(1)界面友好,能自由选择算法(2)能实现初始页面的设置(3)随机生成访问页面(包括数量和页面号)2、问题的解决方案: 根据系统功能要求,
14、可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法) ; (4)完成类中各个成员函数的定义;(5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。课题 5:磁盘调度算法问题(一) 、课程设计题目:磁盘调度算法问题(二) 、目的与要求: 1、目的: (1)要求学生达到熟练掌握 java 语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (
15、1)要求利用面向对象的方法以及 java 的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中定义类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三) 、设计方法和基本原理: 1、问题描述(功能要求): 磁盘调度算法问题能实现 1)先来先服务调度 2)SCAN 算法调度 3)最短时间优先调度 4)循环扫描算法调度 5)NstepSCAN 算法调度。要求:(1)界面友好,能自由选择算法(2)能实现初始磁道的设置和磁
16、头移动方向的设置(3)随机生成访问磁道(包括数量和磁道号)2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法) ; (4)完成类中各个成员函数的定义;(5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。下面是模板,格式相同 内容不同目 录1 系统需求分析 12 总体设计 12.1 总体设计图 12.2 各函数之间的调用关系 .22.3 数据结构及数据库 .23 详细设计 33.1 采用 C+语言定义的
17、相关数据类型 33.2 各模块的类 C 码算法 .43.2.1 CLendOutDlg:OnInitDialog()对话框初始化函数 43.2.2 BEGIN_MESSAGE_MAP(CLendOutDlg, CDialog) 43.2.3 CLendOutDlg:CLendOutDlg(CWnd* pParent)数据初始化函数 43.2.4 CLendOutDlg:OnCONFIRM()执行确认按钮的函数 .53.2.5 CLendOutDlg:OnCancel()执行取消按钮的函数 54 调试分析及设计体会 64.1 程序运行结果 .64.1.1 程序设计前先设计各对话框 64.1.2
18、对话框初始化 74.1.3 借书功能的实现 84.1.4 数据保存到数据库结果 94.2 程序调试中的问题 105 使用说明 .116 心得体会 .127 附录 .137.1 源代码 137.2 参考文献: 158 评分表 .1611 系统需求分析利用 C+语言和 access 数据库的相关知识设计与开发一个图书管理系统的借书模块,具有读者编号、书籍编号的输入功能;可以在数据库中查询和删除所保存的记录:并具有退出该系统模块的功能。2 总体设计2.1 总体设计图2.2 各函数之间的调用关系该模块完成了图书管理系统中借书的功能,流程图如图 2.1 所示:2目录和所需对话框的设计对话框中各个按钮与程
19、序相连接在 access 中创建数据库以保存和查询数据数据初始化输入数据并完成传递 给消息处理函数增加宏项对话框初始化确认按钮函数 取消按钮函数保存数据到 access 数据库图书馆管理系统准备工作借书模块函数调用图 2.1 各函数的调用关系2.3 数据结构及数据库程序利用 C+语言编写,数据保存到 access 数据库实现数据保存和查询以及数据库的更新。Access 数据库中包括七个表分别为BOOK、BORROW、CLERK、 FINE、FINE-HISTORY、HISTORY、READER,各自保存表中菜单下的数据。33 详细设计3.1 采用 C+语言定义的相关数据类型(1)CLendOu
20、tDlg:CLendOutDlg(CWnd* pParent /*=NULL*/): CDialog(CLendOutDlg:IDD, pParent)m_strBookID = _T(“);m_strReaderID = _T(“);(2) void CLendOutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_BOOK_ID, m_strBookID);(3) void CLendOutDlg:OnCONFIRM() CWnd *pWnd;m_rsDataSet.m_B
21、OOK_ID =m_strBookID;d. void CLendOutDlg:OnCancel() CDialog:OnCancel();(4) OOL CLendOutDlg:OnInitDialog() CDialog:OnInitDialog();return TRUE; 44.1.4 数据保存到数据库结果数据保存到数据库前后的结果显示:图 4.1 数据库 BORROW 表中的原始数据图 4.2 结束后数据保存到数据库中的 BORROW 表5表 4.1 数据库关键元素表 1表 4.2 数据库关键元素表 24.2 程序调试中的问题(1)程序设计初期没有在程序中添加初始化函数 BOOL C
22、LendOutDlg:OnInitDialog(),因此输入读者编码和书籍编码后,BORROW 表中保存该信息,添加了该函数后就可以了。(2)程序中原来有两个 CLendOutDlg:OnCONFIRM()函数,其中一个是空的,但是删掉后会出现错误,在 Dialog 的 IDD_LENDOUT 中找到“建立类向导” ,删掉其中与对话框按钮名称不同的一个即可。(3) 、CLendOutDlg:OnCONFIRM()函数中原来没有 UpdateData(FALSE); UpdateData(TRUE);就会出现错误,经过老师帮忙找到错误所在,就加上使得程序能正常运行。(4)CLendOutDlg:
23、OnCancel()函数只需一条语句,开始的时候用了很多其他函数,如:DisplayRecord();SetButtonState();SetTextState();但是会出现没有定义之类的错误,是因为在头文件中根本没有这些函数的定义,所以就会出现这样的错误。(5)在消息映射函数中,本应每个空格和按钮只对应一组ON_BN_CLICKED(IDC_XX, XX),而我的程序全部编完以后,而且 IDC_后面的是 BUTTON。虽然是这样乱七八糟,但是程序运行完全没有错误,也没有警告,于是我就把含有 BUTTON 的全部都删掉了;再运行时,就出现了错误。错误原因及解决方法:原因在于画出的“借书”界面
24、上,读者条码和书籍编码的属性中的标题没有改。当把界面上所有空格和按钮属性的姓名改为相对应的姓名时,ON_BN_CLICKED(IDC_XX, XX)只有一组,而且运行无误。(6)刚开始做了结束模块的框图时按“确定” “取消”按扭不会连接到程序中,后来在 ClassWizard 中添加就可以了。然后双击按扭就可以出现了。6(7)读者编码,书籍编码要定义成数字型,否则,输入字符,特殊符号都会识别,不符合实际情况。(8)刚开始没有初始化函数 BOOL CLendOutDlg:OnInitDialog(),以至于输入读者编码和书籍编码后,BORROW 表中没有该信息,添加了该函数后就可以了。(9)程序
25、中原来有两个 confirm 函数,其中一个是空函数,但是删掉后又有错误,找过之后从“建立类向导”中删掉一个就可以了。(10)confirm 函数中原来没有 UpdateData(FALSE); UpdateData(TRUE);就会出现错误,经过老师帮忙找到错误之所在,就加上去了。(11)cancel 函数只要一句话 CDialog:OnCancel();就可以了。刚开始用了好多其他函数,如:DisplayRecord();SetButtonState();SetTextState(); 但是会出现没有定义之类的错误,是因为头文件中根本就没有这些函数,所以就会出现这样的错误。5 使用说明(1
26、)运行程序到系统界面,点击菜单栏中的“系统” 按钮,点击“登录”,输入用户的姓名和密码即可登录该系统。(2)单击“日常工作 ”按钮中的 “借书”,在相应的位置输入读者的读者编码和该读者所借书籍的书籍编码,单击“确认” ,即可把所输入的数据保存到 library 数据库中的 BORROW 表中。76 心得体会开始时候的课程设计完全没有思路,感觉很迷茫,不知道从何做起。幸好在课设之前李老师给我们做了很详细的指点,记得在大一的时候李老师就教过我们,当时就给我们留下了深刻的印象。是一位很负责任的,很有耐心的好老师,我们很爱戴李老师。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻
27、炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,java 已经成为当今计算机应用中空前活跃的语言, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握 java 的开发技术是十分重要的。回顾起此次课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能
28、真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。在以后会有更多的课程设计,我们现在的努力是为了将来打好基础,李老师很认真的对待我们的答辩,这是一种很负责任的表现,这是要让我们真正的自己动手,了解和掌握一些基本知识,在以后的工作中做到游刃有余。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在李老师的辛勤指导下,终于游逆而解。同时,在李老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!87 附录7.1 源代码7.2 参考文献98 评分表计算机与通信学院课程设计评分表课程名称: java 程序设计 项 目 评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩教师签名: 日 期: