文档库 最新最全的文档下载
当前位置:文档库 › 记事本汇编课程设计

记事本汇编课程设计

记事本汇编课程设计
记事本汇编课程设计

华北科技学院

课程设计说明书

课程名称: 汇编语言程序设计

班级: 计科B093 姓名:_ 杜晓春

学号:__ 200807014330 设计题目: Win32编写记事本

设计时间:6/25/ 2010至 7/1/2010 指导教师:_ _ 陈振国

评语:

评阅成绩:评阅教师:____

一、课程设计目的

使用所学过的汇编语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二、课程设计要求

1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。

2.遵循模块化、结构化的程序设计方法。

3. 要求程序必须正确。

4. 程序简明易懂,多运用输入输出提示,出错信息及必要的注释。

5. 要求程序结构合理,语句使用得当。

6. 适当追求编程技巧和程序运行效率。

三、课程设计题目:

Win32记事本

要求:能实现基本菜单框架并打开窗口,有能力的同学可以编写进行数据录入并保存的代码

四、课题分析

用32位汇编语言以WINDOWS SDK编程的模式编写记事本,为编写一个简洁可用的记事本程序,选择以对话框为程序主界面,通过RichEdit控件直接进行文本的录入、读取、存储等操作。菜单项中设置基本的文件新建、打开、保存、退出,及文本的撤销、重做、删除、剪切、复制、粘贴、全选功能,同时加入工具栏,工具栏上加入基本常用的功能按钮。

五、流程图

六、程序源代码

记事本.rc

#include "res/记事本Res.rc" #include "res/记事本Mnu.rc" #include "res/记事本Dlg.rc" #include "Res/关于Dlg.rc"

记事本Res.rc

#define IDB_TBRBMP 1212 #define IDI_ICON 1213 IDB_TBRBMP BITMAP DISCARDABLE "Res/工具栏图标.bmp" IDI_ICON ICON DISCARDABLE "Res/图标.ico"

记事本Mnu.rc

#define IDM_MENU 10000

#define IDM_FILE_NEW 10001 #define IDM_FILE_OPEN 10002

开 始

文 件 编 辑 帮 助

新 建

保 存

另存为

退 出

打 开

撤 销

前 进

删 除

剪 切

复 制

粘 贴

全 选

关 于

#define IDM_FILE_SAVE 10003

#define IDM_FILE_SAVEAS 10004

#define IDM_FILE_EXIT 10006

#define IDM_EDIT_UNDO 10101

#define IDM_EDIT_REDO 10102

#define IDM_EDIT_DELETE 10103

#define IDM_EDIT_CUT 10104

#define IDM_EDIT_COPY 10105

#define IDM_EDIT_PASTE 10106

#define IDM_EDIT_SELECTALL 10107

#define IDM_HELP_ABOUT 10201

IDM_MENU MENUEX

BEGIN

POPUP "文件"

BEGIN

MENUITEM "新建",IDM_FILE_NEW

MENUITEM "打开",IDM_FILE_OPEN

MENUITEM "保存",IDM_FILE_SAVE

MENUITEM "另存为...",IDM_FILE_SAVEAS MENUITEM "",,0x00000800

MENUITEM "退出",IDM_FILE_EXIT

END

POPUP "编辑"

BEGIN

MENUITEM "撤销",IDM_EDIT_UNDO

MENUITEM "前进",IDM_EDIT_REDO

MENUITEM "删除",IDM_EDIT_DELETE

MENUITEM "",,0x00000800

MENUITEM "剪切",IDM_EDIT_CUT

MENUITEM "复制",IDM_EDIT_COPY

MENUITEM "粘贴",IDM_EDIT_PASTE

MENUITEM "全选",IDM_EDIT_SELECTALL END

POPUP "帮助"

BEGIN

MENUITEM "关于",IDM_HELP_ABOUT

END

END

记事本Dlg.rc

#define IDD_DLG 1000

#define IDC_TOOLBAR 1001

#define IDC_RICHEDIT 1002

IDD_DLG DIALOGEX 228,88,596,499

CAPTION "记事本"

FONT 7,"宋体",400,0

CLASS "DLGCLASS"

STYLE 0x96CF0000

EXSTYLE 0x00000000

BEGIN

CONTROL

"Test",IDC_TOOLBAR,"ToolbarWindow32",0x52000800,0,0,596,24,0x00000000 CONTROL

"",IDC_RICHEDIT,"RichEdit20A",0x503010C4,0,24,597,533,0x00000200

END

关于Dlg.rc

#define IDD_DLG1 3000

#define IDC_STC1 1001

#define IDC_IMG1 3001

IDD_DLG1 DIALOGEX 266,133,136,50

CAPTION "关于"

FONT 9,"宋体",400,0,134

STYLE 0x10CF0000

EXSTYLE 0x00000080

BEGIN

CONTROL "Win32 汇编记事本计科B093 杜晓春", IDC_STC1,"Static",0x50000000,50,10,78,32,0x00000000

CONTROL "#1213",IDC_IMG1,"Static",0x50000203,4,4,42,38,0x00000000 END

记事本.inc

include windows.inc

include user32.inc

include kernel32.inc

include shell32.inc

include comctl32.inc

include comdlg32.inc

include gdi32.inc

includelib user32.lib

includelib kernel32.lib

includelib shell32.lib

includelib comctl32.lib

includelib comdlg32.lib

includelib gdi32.lib

WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD AboutProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

;主对话框

IDD_DLG equ 1000

IDC_TOOLBAR equ 1001

IDC_RICHEDIT equ 1002

IDM_MENU equ 10000

;菜单

IDM_FILE_NEW equ 10001

IDM_FILE_OPEN equ 10002

IDM_FILE_SAVE equ 10003

IDM_FILE_SAVEAS equ 10004

IDM_FILE_PRINT equ 10005

IDM_FILE_EXIT equ 10006

IDM_EDIT_UNDO equ 10101

IDM_EDIT_REDO equ 10102

IDM_EDIT_DELETE equ 10103

IDM_EDIT_CUT equ 10104

IDM_EDIT_COPY equ 10105

IDM_EDIT_PASTE equ 10106

IDM_EDIT_SELECTALL equ 10107

IDM_HELP_ABOUT equ 10201

;关于

IDD_DLG1 equ 3000

IDC_STC1 equ 3001

;工具栏图标

IDB_TOOLBARMAP equ 1212

;图标

IDI_ICON equ 1213

.const

;填充按钮结构

stToolBar TBBUTTON<0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0> TBBUTTON<6,IDM_FILE_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<7,IDM_FILE_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<8,IDM_FILE_SAVE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>

TBBUTTON<0,IDM_EDIT_CUT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<1,IDM_EDIT_COPY,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<2,IDM_EDIT_PASTE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>

TBBUTTON<3,IDM_EDIT_UNDO,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<4,IDM_EDIT_REDO,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON<5,IDM_EDIT_DELETE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>

TBBUTTON <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>

nToolBar equ 13

RichEditDLL db 'riched20.dll',0

szClassName db 'DLGCLASS',0

szAppName db '记事本',0

OpenFileFail db '无法打开文件',0

SaveFileFail db '无法保存文件',0

szWantToSave db '是否将改动保存到',0Dh,0

NewFileName db '新建文件',0

szNULL db 0

szFont db '宋体',0

szFileType db '文本文档(*.txt)',0,'*.txt',0

db '所有文件(*.*)',0,'*.*',0,0

szDefExt db 'txt',0

.data?

hRichEdDLL dd ?

hInstance dd ?

CommandLine dd ?

hIcon dd ?

hWinMain dd ?

hRichEdit dd ?

hFile dd ?

FileName db 100 dup(?)

记事本.asm

.386

.model flat,stdcall

option casemap:none

include 记事本.Inc

.code

start:

invoke GetModuleHandle,NULL

mov hInstance,eax

;获取命令行参数

invoke GetCommandLine

mov CommandLine,eax

;装入库

invoke LoadLibrary,addr RichEditDLL

mov hRichEdDLL,eax

invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT push eax

;释放库

invoke FreeLibrary,hRichEdDLL

pop eax

invoke ExitProcess,eax

WinMain proc _hInstance,_hPrevInstance,_lpCmdLine,_nCmdShow LOCAL @stWndClass:WNDCLASSEX

LOCAL @stMsg:MSG

;设计窗口类

mov @stWndClass.cbSize,SIZEOF WNDCLASSEX

mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW

mov @stWndClass.lpfnWndProc,OFFSET WndProc

mov @stWndClass.cbClsExtra,NULL

mov @stWndClass.cbWndExtra,DLGWINDOWEXTRA

push _hInstance

pop @stWndClass.hInstance

mov @stWndClass.hbrBackground,NULL

mov @stWndClass.lpszMenuName,IDM_MENU

mov @stWndClass.lpszClassName,OFFSET szClassName

invoke LoadIcon,_hInstance,IDI_ICON

mov hIcon,eax

mov @stWndClass.hIcon,eax

mov @stWndClass.hIconSm,eax

invoke LoadCursor,NULL,IDC_ARROW

mov @stWndClass.hCursor,eax

;注册窗口

invoke RegisterClassEx,addr @stWndClass

;建立对话框窗口

invoke DialogBoxParam,_hInstance,IDD_DLG,NULL,addr WndProc,NULL ret

WinMain endp

StreamProc proc _dwCookie,_pBuffer,_NumBytes,_lpBytes

.if _dwCookie

invoke ReadFile,hFile,_pBuffer,_NumBytes,_lpBytes,0 .else

invoke WriteFile,hFile,_pBuffer,_NumBytes,_lpBytes,0 .endif

xor eax,eax

ret

StreamProc endp

SetWinCaption proc

LOCAL @buffer[120]:BYTE

LOCAL @buffer1[4]:BYTE

;复制程序名

invoke lstrcpy,addr @buffer,addr szAppName

;添加‘-’到标题名

mov eax,' - '

mov dword ptr @buffer1,eax

invoke lstrcat,addr @buffer,addr @buffer1

;添加文件路径到标题名

invoke lstrcat,addr @buffer,addr FileName

;设置标题栏

invoke SetWindowText,hWinMain,addr @buffer

ret

SetWinCaption endp

SaveFile proc _lpFileName

LOCAL @stEditstream:EDITSTREAM

;创建新文件,如果已经存在则清除源文件

invoke CreateFile,_lpFileName,GENERIC_WRITE,

FILE_SHARE_READ,NULL,CREATE_ALWAYS,

FILE_ATTRIBUTE_NORMAL,0

;创建成功

.if eax!=INVALID_HANDLE_VALUE

mov hFile,eax

;流出标志

mov @stEditstream.dwCookie,FALSE

;回调函数

mov @stEditstream.pfnCallback,offset StreamProc

;richedit中的文本写入文件

invoke SendMessage,hRichEdit,EM_STREAMOUT,SF_TEXT,

addr @stEditstream

;关闭文件

invoke CloseHandle,hFile

;修改标志清零

invoke SendMessage,hRichEdit,EM_SETMODIFY,FALSE,0

mov eax,FALSE

.else

invoke MessageBox,hWinMain,addr SaveFileFail,

addr szAppName,MB_OK

mov eax,TRUE

.endif

ret

SaveFile endp

SaveEditAs proc

LOCAL @stOpenFileName:OPENFILENAME

LOCAL @buffer[MAX_PATH]:BYTE

LOCAL @buffer1[100]:BYTE

;清零

invoke RtlZeroMemory,addr @stOpenFileName,

sizeof @stOpenFileName ;填充OpenFileName结构

mov @stOpenFileName.lStructSize,sizeof @stOpenFileName

push hWinMain

pop @stOpenFileName.hwndOwner;父窗口句柄

push hInstance

pop @stOpenFileName.hInstance

mov @stOpenFileName.lpstrFilter,offset szFileType

mov @buffer[0],0;缓冲区清零

lea eax,@buffer

mov @stOpenFileName.lpstrFile,eax;指定全路径缓冲区

mov @stOpenFileName.nMaxFile,sizeof @buffer

mov @buffer1[0],0;缓冲区清零

lea eax,@buffer1

mov @stOpenFileName.lpstrFileTitle,eax;指定文件名缓冲区

mov @stOpenFileName.nMaxFileTitle,sizeof @buffer1

mov @stOpenFileName.Flags,OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST or OFN_OVERWRITEPROMPT;设置对话框行为 mov @stOpenFileName.lpstrDefExt,offset szDefExt

;打开另存为通用对话框

invoke GetSaveFileName,addr @stOpenFileName

;保存文件

.if eax

invoke SaveFile,addr @buffer

;设置标题栏

invoke lstrcpy,addr FileName,addr @buffer1

invoke SetWinCaption

.endif

ret

SaveEditAs endp

SaveEdit proc

;判断是否为新建文件,是的话直接保存,不是的话另存为

invoke lstrcmp,addr FileName,addr NewFileName

.if eax

invoke SaveFile,addr FileName

.else

invoke SaveEditAs

.endif

ret

SaveEdit endp

WantToSave proc

LOCAL @buffer[200]:BYTE

LOCAL @buffer1[2]:BYTE

;获取修改标志

invoke SendMessage,hRichEdit,EM_GETMODIFY,0,0

;richedit被修改

.if eax

;制作显示字符串

invoke lstrcpy,addr @buffer,addr szWantToSave

invoke lstrcat,addr @buffer,addr FileName

mov ax,'?'

mov word ptr @buffer1,ax

invoke lstrcat,addr @buffer,addr @buffer1

invoke MessageBox,hWinMain,addr @buffer,

addr szAppName,

MB_YESNOCANCEL or MB_ICONQUESTION .if eax==IDYES

invoke SaveEdit

.elseif eax==IDNO

mov eax,FALSE

.else

mov eax,TRUE

.endif

.endif

ret

WantToSave endp

OpenEdit proc

LOCAL @stOpenFileName:OPENFILENAME

LOCAL @stEditstream:EDITSTREAM

LOCAL @buffer[MAX_PATH]:BYTE

LOCAL @buffer1[100]:BYTE

LOCAL @stCharRange:CHARRANGE

;清零

invoke RtlZeroMemory,addr @stOpenFileName,

sizeof @stOpenFileName ;填充OpenFileName结构

mov @stOpenFileName.lStructSize,sizeof @stOpenFileName

push hWinMain

pop @stOpenFileName.hwndOwner;父窗口句柄

push hInstance

pop @stOpenFileName.hInstance

mov @stOpenFileName.lpstrFilter,NULL

mov @buffer[0],0;缓冲区清零

lea eax,@buffer

mov @stOpenFileName.lpstrFile,eax;指定全路径缓冲区

mov @stOpenFileName.nMaxFile,sizeof @buffer

mov @buffer1[0],0;缓冲区清零

lea eax,@buffer1

mov @stOpenFileName.lpstrFileTitle,eax;指定文件名缓冲区

mov @stOpenFileName.nMaxFileTitle,sizeof @buffer1

mov @stOpenFileName.lpstrDefExt,NULL

mov @stOpenFileName.Flags,OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST;设置对话框行为

;显示打开通用对话框

invoke GetOpenFileName,addr @stOpenFileName

.if eax

;打开已存在的文件

invoke CreateFile,addr@buffer,

GENERIC_READ,FILE_SHARE_READ,

NULL,OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,0

;打开文件成功

.if eax!=INVALID_HANDLE_VALUE

;返回文件句柄

mov hFile,eax

;获取打开文件的文件名

invoke lstrcpy,addr FileName,addr @buffer1

;流入标记

mov @stEditstream.dwCookie,TRUE

;设置回调函数

mov @stEditstream.pfnCallback,offset StreamProc

;装入文本

invoke SendMessage,hRichEdit,EM_STREAMIN,

SF_TEXT,addr @stEditstream ;关闭文件

invoke CloseHandle,hFile

;修改标志清零

invoke SendMessage,hRichEdit,EM_SETMODIFY,FALSE,0

;初始化光标位置

mov @stCharRange.cpMin,0

mov @stCharRange.cpMax,0

invoke SendMessage,hRichEdit,EM_EXSETSEL,0,addr

@stCharRange

invoke SetWinCaption

mov eax,FALSE

.else

invoke MessageBox,hWinMain,addr OpenFileFail,

addr szAppName,MB_OK

mov eax,TRUE

.endif

.endif

ret

OpenEdit endp

InitRichEdit proc _hWin,_hRichEdit

LOCAL @stCharRange:CHARRANGE

LOCAL @stCharformat:CHARFORMAT

invoke GetDlgItem,_hWin,IDC_RICHEDIT

mov hRichEdit,eax

;全选

mov @stCharRange.cpMin,0

mov @stCharRange.cpMax,-1

invoke SendMessage,hRichEdit,EM_EXSETSEL,0,

addr @stCharRange

;设置文本格式

mov @stCharformat.cbSize,sizeof @stCharformat

mov @stCharformat.dwMask,CFM_CHARSET or CFM_FACE or CFM_SIZE invoke lstrcpyn,addr @stCharformat.szFaceName,

addr szFont,LF_FACESIZE

mov @stCharformat.yHeight,250

invoke SendMessage,hRichEdit,EM_SETCHARFORMAT,

SCF_SELECTION,addr @stCharformat

;修改标志清零

invoke SendMessage,hRichEdit,EM_SETMODIFY,FALSE,0

;设置焦点

invoke SetFocus,hRichEdit

;设置光标

mov @stCharRange.cpMin,0

mov @stCharRange.cpMax,0

invoke SendMessage,hRichEdit,EM_EXSETSEL,0,

addr @stCharRange

ret

InitRichEdit endp

DoToolBar proc _hInstance,_hToolBar

LOCAL @stTmap:TBADDBITMAP

invoke SendMessage,_hToolBar,TB_BUTTONSTRUCTSIZE,

sizeof TBBUTTON,0

;填充位图结构

push _hInstance

pop @stTmap.hInst

mov @stTmap.nID,IDB_TOOLBARMAP

;装载工具栏位图

invoke SendMessage,_hToolBar,TB_ADDBITMAP,15,addr @stTmap

;添加按钮

invoke SendMessage,_hToolBar,TB_ADDBUTTONS,nToolBar,

addr stToolBar

;返回工具栏句柄

mov eax,_hToolBar

ret

DoToolBar endp

AboutProc proc _hWin,_stMsg,_wParam,_lParam

mov eax,_stMsg

.if eax==WM_CLOSE

invoke EndDialog,_hWin,0

.endif

xor eax,eax

ret

AboutProc endp

WndProc proc _hWin,_stMsg,_wParam,_lParam

LOCAL @stRect:RECT

LOCAL @height:DWORD

LOCAL @hContrl:HWND

LOCAL @stCharRange:CHARRANGE

mov eax,_stMsg

.if eax==WM_INITDIALOG

;主窗口句柄赋值

mov eax,_hWin

mov hWinMain,eax

;工具栏初始化

invoke GetDlgItem,_hWin,IDC_TOOLBAR

invoke DoToolBar,hInstance,eax

;标题栏初始化

invoke lstrcpy,addr FileName,addr NewFileName

invoke SetWinCaption

;Richedit初始化

invoke GetDlgItem,_hWin,IDC_RICHEDIT

mov hRichEdit,eax

invoke InitRichEdit,_hWin,hRichEdit .elseif eax==WM_COMMAND

mov eax,_wParam

.if eax==IDM_FILE_NEW

invoke WantToSave

.if !eax

;Richedit清零

invoke SetWindowText,hRichEdit,addr szNULL

;Richedit初始化

invoke InitRichEdit,_hWin,hRichEdit

;重置标题栏

invoke lstrcpy,addr FileName,addr NewFileName

invoke SetWinCaption

.endif

invoke SetFocus,hRichEdit

.elseif eax==IDM_FILE_OPEN

invoke WantToSave

.if !eax

invoke OpenEdit

.endif

invoke SetFocus,hRichEdit

.elseif eax==IDM_FILE_SAVE

invoke SaveEdit

invoke SetFocus,hRichEdit

.elseif eax==IDM_FILE_SAVEAS

invoke SaveEditAs

invoke SetFocus,hRichEdit

.elseif eax==IDM_FILE_EXIT

invoke SendMessage,_hWin,WM_CLOSE,0,0

.elseif eax==IDM_EDIT_UNDO

invoke SendMessage,hRichEdit,EM_UNDO,0,0

.elseif eax==IDM_EDIT_REDO

invoke SendMessage,hRichEdit,EM_REDO,0,0

.elseif eax==IDM_EDIT_DELETE

invoke SendMessage,hRichEdit,EM_REPLACESEL,TRUE,0 .elseif eax==IDM_EDIT_CUT

invoke SendMessage,hRichEdit,WM_CUT,0,0

.elseif eax==IDM_EDIT_COPY

invoke SendMessage,hRichEdit,WM_COPY,0,0

.elseif eax==IDM_EDIT_PASTE

invoke SendMessage,hRichEdit,WM_PASTE,0,0

.elseif eax==IDM_EDIT_SELECTALL

mov @stCharRange.cpMin,0

mov @stCharRange.cpMax,-1

invoke SendMessage,hRichEdit,EM_EXSETSEL,0,

addr @stCharRange

.elseif eax==IDM_HELP_ABOUT

invoke DialogBoxParam,hInstance,IDD_DLG1,

hWinMain,AboutProc,NULL

.endif

.elseif eax==WM_SIZE

invoke GetDlgItem,_hWin,IDC_TOOLBAR

mov @hContrl,eax

;重绘工具栏

invoke MoveWindow,@hContrl,0,0,0,0,TRUE

;获取工具栏绘图区

invoke GetWindowRect,@hContrl,addr @stRect

;获取工具栏宽度

mov eax,@stRect.bottom

sub eax,@stRect.top

push eax

;获取主窗口绘图区

invoke GetClientRect,_hWin,addr @stRect

pop eax

;用主绘图区上边位置减去工具栏宽度的值作为richedit控件的上边位置

add @stRect.top,eax

;获取richedit控件的宽度

mov eax,@stRect.bottom

sub eax,@stRect.top

mov @height,eax

;重绘richedit控件

invoke MoveWindow,hRichEdit,0,@stRect.top,

@stRect.right,@height,TRUE .elseif eax==WM_CLOSE

invoke WantToSave

.if !eax

invoke DestroyWindow,_hWin

.endif

.else

invoke DefWindowProc,_hWin,_stMsg,_wParam,_lParam

ret

.endif

xor eax,eax

ret

WndProc endp

end start

七、结果显示

八、感想、收获及体会

理论和实践是存在差距的,学语言尤其如此。只有在实际操作中才能真正的领悟和掌握一门语言。编程环节,想法和算法尤为重要。有想法才存在构想,才能编出实际可用的程序;而算法则是实现构想的途径,一个糟糕的算法会大大拖累程序的运行效率而且浪费自己的时间。我感觉编程就像爬一座高山,沿途到处都是阻碍你前进的巨石,只有坚持翻过去才能看到脚下平坦的风景,只有享受这种乐趣的人才是真正可以和编程为伍的人。

重庆科技学院_java程序课程设计__日历记事本

Java程序设计课程设计报告

日历记事本 目录 目录 (2) 1 概述 (1) 1.1 课程设计目的 (1) 1.2 课程设计内容 (1) 2 系统需求分析 (1) 2.1 系统目标 (1) 2.2 主体功能 (1) 2.3 开发环境 (1) 3系统概要设计 (1) 3.1 系统的功能模块划分与系统流程图 (1) 4系统详细设计 (2) 5 测试 (4) 5.1 测试方案 (4) 5.2 测试结果 (4) 6 小结 (6) 参考文献 (8) 附录 (9) 附录1 源程序清单 (9)

Java程序设计课程设计报告(2011) 学生成绩管理系统的设计 1 概述 1.1 课程设计目的 1)巩固和提高java编程技术。 2)培养掌握成学设计的基本思路和方法。 3)加强研发、调试程序的能力。 4)增强分析、解决问题的能力。 5)提高科技论文写作能力。 1.2 课程设计内容 设计GUI界面的日历记事本。系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。 2 系统需求分析 2.1 系统目标 1. 系统界面的左侧是日历。该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前的日历的年份减一;当鼠标左键单击“下年”按钮,当前日历年份加一。 2. 该日历也可以在某年内按月前后翻动,鼠标单击“上月”按钮时,当前的日历的月份减一;当鼠标左键单击“下月”按钮,当前日历月份加一。 3. 使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。 2.2 主体功能 用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。 通过按按钮“上年”和“下年”对年份进行翻页。通过按按钮“上月”和“下月”对月份进行翻页。用户可以通过输入年份来查看自己的日志。 2.3 开发环境 Windows XP;jdk1.5.0-0-05;ultraedit开发工具 3系统概要设计 3.1 系统的功能模块划分与系统流程图 本日历记事本共有4个java源文件。

汇编与微机原理课程设计报告

微机接口课程设计报告 (题目:模拟自动门) 指导老师郭兰英 班级2015240204

目录 一概述 (1) 1.1 课程设计名称 (1) 1.2 课程设计要求 (1) 1.3 课程设计目的 (1) 二设计思想 (1) 三实施方案 (2) 3.1 获得传感器和“门”的状态 (2) 3.2 驱动步进电机和点阵模块 (2) 3.3 实现硬件延时 (3) 四硬件原理 (3) 4.1 中断控制器8259 (4) 4.2并行接口8255 (4) 4.3 定时/计数器8254 (5) 4.4 点阵LED显示屏 (5) 4.5 步进电机 (6) 4.6 红外距离传感器 (7) 五软件流程 (8) 六程序运行结果及分析 (11) 6.1 开门状态 (11) 6.2 关门状态 (12) 6.3 关门操作进行时中断到开门操作 (14)

6.4特殊状态 (15) 七个人感想 (16) 八附录 (18)

一、概述 1.1课程设计名称 模拟自动门 1.2课程设计要求 1)用汇编语言编程完成硬件接口功能设计。 2)硬件电路基于80x86微机接口。 3)程序功能包含:步进电机转动、点阵显示开关门、传感器检测是否有人、8254延时。 4)传感器检测有人时开门,门全开后延时几秒关门,若关门时检测到有人,立刻开门。 1.3课程设计目的 通过本课程设计,让学生对微机系统有一个较面的理解,对典型数字接口电路的应用技术有一个较深入的掌握,并对应用系统进行硬件原理和软件编程进行分析、设计和调试,达到基本掌握简单微型计算机应用系统软硬件的设计方法,提高项目开发能力的目的。要求同学分组完成课题,写出课程设计说明书,画出电路原理图,说明工作原理,编写设计程序及程序流程图。 二、设计思想 本程序主要功能是模拟商场等公共场所的自动门,实现有物体靠近并被传感器检测到时发生一系列变化的效果,模拟实现开门关门的功能。 为了尽量模拟真实场景下的自动门状态变化,本程序主要可以实现以下功能: 1、当传感器可检测范围内检测到物体,并且“门”为“关”的状态,立即“打开门”,即用一系列的硬件动作模拟自动门打开的动作和状态。 2、当“门”完全打开后一段时间后,传感器范围内检测不到物体时,立即“关闭门”, 用一系列的硬件动作模拟自动门关闭的动作和状态。

java记事本课程设计论文附源码

设计题目:记事本课程设计 专业:电子信息科学与技术 班级:电子1202班 学号:20121210606 姓名:王鹏 2015 年7月

XXX学院本科学生课程设计任务书

摘要 目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。该程序主要用到了Java swing和事件监听等。 关键词记事本程序,java语言,Java swing

目录 摘要 (1) 1 需求分析 (3) 1.1需求分析 (3) 1.2功能设计 (3) 2 概要分析 (4) 2.1概要设计思想 (4) 2.2程序运行界面 (4) 2.3程序模块说明 (4) 2.4流程图 (5) 2.5程序相关说明 (6) 3 程序详细设计与分析 (8) 3.1构建菜单栏及其下拉菜单 (8) 3.2“文件”菜单操作的事件监听 (8) 3.3“编辑”、“格式”等菜单的事件监听 (10) 3.4异常处理 (11) 4 测试分析 (12) 5 源程序清单 (15) 结论 (22) 参考文献 (23)

1 需求分析 1.1需求分析 现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。 1.2功能设计 本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面: 1、菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。 2、“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。 3、“编辑”中有“撤销”“剪切”“复制”“粘贴”“全选”“时间/日期”六个字菜单:用于撤销操作,剪切文字,复制文字,粘贴文字。全部选择,插入日期、时间。 4、“格式”菜单中有“自动换行”和“字体”两个子菜单。 5、“查看”菜单只是显示状态栏。 6、“帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

Java课程设计+文档+源代码(万年历+闹钟+记事本)

2015年12月18日 一、课程题目 设计一个万年历系统,实现以下功能 (1)可以查看当前的年份、月份和日期; (2)有时间栏,便于用户查看当前时间; (3)能够查找1至9999年的日期与星期的关系。 其它功能可自行开发。 二、题目分析与设计 1.使用的开发环境为eclipse Jdk环境:jdk1.8 2. (此为万 年历界面图) 使用了jTabbedPane 类对功能页面分页,布局策略基本用BorderLayout 和GridLayout 。 3.本项共有5个类,基本一个功能有一个类实现,主类CalendarMain 只包含一个main函数:对创建框架和其属性设置。

AlarmDemo类则实现闹钟功能;NoteBook 类实现记事本功能;CalendarsView 类则实现基本日历功能,ChooseDay 类是一个弹窗,被CalendarsView 调用,CalendarsView 、AlarmDemo 也在该类被调用; . 4.日历界面使用了jTable ,功能的实现逻辑则是 1.首先定义两个全局变量---年和月,查看不同时间的日历,该变量也 随之改变。 2.写了几个函数获取今年第一天是星期几,然后根据月份天数即可推 算具体某月第一天是星期几。 3.知道一个月第一天是星期几,则该月日历既可以顺序列出。 闹钟的功能实现思路: 1.获取界面设定的时间。

2.使用线程,每过一秒急救获取当前时间,并判断是否到达设定的时 间 3.到设定的时间,启动弹窗,播放闹铃 4.闹铃科根据文件选择器自行选择 记事本功能实现思路 1.在项目文件夹先新建一个txt文件作为储存的数据库 2.利用File 类和io 数据流将界面文本储存进txt文件,实现保存功 能 3.每当程序启动,读取txt文件内容并显示到界面上 三、测试分析 1.使用如下拓展包

汇编课程设计报告

四川大学计算机学院 学生实验报告 实验名称:汇编课程设计报告 指导教师:唐宁九 姓名:廖偲 学号:0943111209 班级:软件09级一班 日期:20101114

实验报告 班级______________姓名_______________学号_________ 一、实验一:DEBUG基本命令与数据传输指令 二、实验的目的和要求: ? 1.熟练掌握DEBUG的基本调试命令,能够使用DEBUG编写、调试汇编语言程序片段。 ? 2.在理解数据传输指令的基础上按照实验内容中指定的程序片段对程序进行调试和记录; 三、实验的环境: 1.硬件环境:cpu 2.26gHZ、内存2G、显存1G、64位总线笔记本电脑 2.软件环境:win7 32位操作系统、8086/8088指令集系统(在windows系统中)、masm的汇编工具。 四、源程序清单: ?MOV AL, 01H ?MOV SI, 0002H ?LEA SI, [SI] ?MOV BYTE PTR [SI], 80H ?LAHF ?XCHG AL, AH ?SAHF ?XCHG AH, [SI] ?SAHF 五、操作内容: 1.从cmd在debug下进入用A命令进行汇编 格式: A [地址] 功能:从键盘输入汇编程序, 并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。如果不指定汇编地址, 则以CS:IP为地址 2. 反汇编命令U使用 格式: U [地址]/[地址范围] 功能: 将指定地址范围内的机器代码翻译成汇编源程序指令显示出来, 并同时显示地址及代码。 注意: 反汇编时一定确认指令的起始地址, 否则得不到正确的结果。 3.寄存器查看/编辑命令r或r寄存器名称 功能: 显示当前所有寄存器内容, 状态标志及将要执行的下一条指令的地址、代码和汇编指令形式。

C记事本课程设计

C记事本课程设计 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

课程设计 本科生通用 题目:编程类课程设计 设计项目:记事本程序设计 专业班级: 学号: 姓名: 成绩:导师签字: 2014 年12月11日

任务书 设计题目: 记事本程序设计 要求: 设计一个软件记事本,能够记录用户输入的信息,并能实现保存输入信息,查看备忘信息。该记事本具有输入、修改、删除、查看信息的功能。具有日历功能,可以根据时间,标记备忘信息,方便用户使用。 日程安排: 12月8日:确定设计题目,查阅相关资料 12月9日:根据功能设计整体方案,划分系统各个模块功能 12月10日:建立工程,编写程序实现设计方案的功能 12月11日:调试程序,完善界面设计,书写设计报告 目录 第一章概述 (3) 设计目 的 (3) 设计背 景 (3)

第二章设计过程 (4) 设计框 图 (4) 设计步 骤 (4) 建立工程 (4) 向对话框添加控件 (4) 添加变量 (5) 编程 (5) 调试运行 (5) 设计结 论 (7) 参考文献 (7) 附件(程序) (8) 第一章概述

设计目的 使学生熟悉VC++编译环境,了解面向对象的编程策略。 深入了解和掌握MFC原理与方法。 提升学生的编程技巧及编程能力。 以实际问题为切入点,锻炼学生运用VC++编程解决实际问题的能力。 培养学生的设计创新意识。 设计背景 软件记事本简介 记事本是一个很有用的程序,主要操作包括对文件的储存,修改等,有编辑功能:包括剪贴、复制等,有对字体修改等。记事本可以提醒用户一些重要的事项,可以方便用户的生活。 VC++ 简介 Visual C++由Microsoft开发, 它不仅是一个VC++,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++由许多组件组成,包括、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。的主力软件产品。Visual C++是一个功能强大的可视化软件开发工具。 C++语言简介 C++是在C语言的基础上开发的一种集、和过程化编程于一体的。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它

微机原理与汇编语言课程设计报告

西北师范大学 计算机科学与工程学院 微机原理与汇编语言 课程设计报告 设计题目:中断控制点阵显示与音乐模块姓名: 学号: 专业班级: 系所中心: 指导老师: 起讫时间: 设计地点: 2016年8月20日

摘要 使用8086汇编语言,在唐都TD-PITE实验箱上进行硬件连线,在计算机上采用与该实验箱配套的软件进行输入,观察实验结果。设计思路是利用在实验箱上i386内集成的两片8259芯片分别进行中断,通过实验箱上的两个脉冲开关发送信号到总线上开放的两个中断口,送入CPU内部的8259中。此时按下脉冲开关kk1+,第一个中断发生,在16*16点阵上循环滚动显示“西北师大汇编设计李泓毅”,若按下kk2+则第二个中断发生,执行音乐模块子程序,利用8254芯片开始响应预先编排好的音乐。 【关键词】级联中断;8259芯片;16*16点阵;8254芯片;SPK音乐模块;脉冲信号

目录 摘要 (2) 第一章课程设计 (2) 1.1 目的和任务 (2) 1.2 设计环境、设备与器材 (2) 第二章设计内容和方案 (3) 2.1 设计内容 (3) 2.2 设计方案 (3) 第三章课程设计相关原理简述 (3) 第四章设计实现 (4) 4.1 系统设计框架结构 (4) 4.2 系统硬件设计 (4) 4.3 系统软件设计 (6) 4.4 程序流程图 (6) 4.5 核心数据结构 (8) 4.6 关键代码片段分析 (10) 第五章设计验证 (10) 5.1 验证步骤及结果 (10) 5.2 数据分析 (10) 5.3 遇到的问题及解决 (11) 5.4 需要讨论的其它问题 (11) 5.5 结论 (11) 第六章设计总结 (12) 第七章本课程教学建议 (13) 第八章参考文献 (13) 第九章附录:源代码 (13) 第一章课程设计 1.1 目的和任务 使用8259芯片进行中断程序设计,在第一个中断中响应字模显示模块,在第二个中断中响应音乐发声模块。

Java日历记事本课程设计报告毕业用资料

Java日历记事本课程设计报告 在设计日历记事本时,需要编写6个JAVA源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java 效果图如下 .CalendarWindow类 import javax.swing.*; import java.awt.*;

import java.awt.event.*; import java.util.*; import java.io.*; public class CalendarWindow extends JFrame implements ActionListener,MouseListener,FocusListener{ int year,month,day; CalendarMessage calendarMessage; CalendarPad calendarPad; NotePad notePad; JTextField showYear,showMonth; JTextField[]showDay; CalendarImage calendarImage; String picturename; Clock clock; JButton nextYear,previousYear,nextMonth,previousMonth; JButton saveDailyRecord,deleteDailyRecord,readDailyRecord; JButton getPicture; File dir;

汇编课程设计报告

汇编课程设计报告

学 号: 课程设计 题目打印水仙花数 学院计算机科学与技术 专业计算机科学与技术 班级 姓名 指导教师

武汉理工大学《汇编语言程序设计》课程设计 2012 年 6 月28 日 课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 打印水仙花数 初始条件: 理论:完成了《汇编语言程序设计》课程, 对微机系统结构和80系列指令系 统有了较深入的理解,已掌握了汇 编语言程序设计的基本方法和技 巧。 实践:完成了《汇编语言程序设计》的4 个实验,熟悉了汇编语言程序的设 计环境并掌握了汇编语言程序的 调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握较复杂程序的设计方 法,掌握子程序结构的设计和友好用户界 3

2.1简要分析 2.1.1原理说明 可以用标签来接收三位数,标签的好处在于可以限制输入的位数,并且通过实际输入位数可以直接进行一部分的异常处理。 将数存到标签后,因为是以ASCII码的形式存的,所以需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。在转换成十六进制数的过程中,可以对输入的数进行异常处理,判断是否输入有误。 在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数,决定是否输出该数。 在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。 系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其他则提示输入错误并重新输入。 2.1.2程序流程图

记事本课程设计

第 1 页 课程设计说明 课程名称: Java 课程设计 设计题目: 记事本 专 业: 班级: 学生姓名: 学 号: 指导教师: 湖南工业大学科技学院教务部 制

年月日 一、系统设计目的: 1)设计一个简单的Windows记事本,可以实现以下功能: 1:文件的新建,打开,保存; 2:对文件的编辑,如全选,复制,剪切,粘贴; 3、工具,进行大小写的转换 4:执行完操作后,能够顺利关闭记事本; 2)通过这次设计,可以帮助学生: 1:提高对Java语言设计的掌握能力; 2:理论联系实际,进一步提高学生的软件开发技术; 3:培养学生分析、解决问题的能力。 二、系统实现思路: 设计两个类,一个mynotepad类,具有程序的要求和功能再创建一个Notepad主类,在主类中创建一个mynotepad类的对象,就可以直接在编译器中运行程序。 1:界面设计 在主界面中设计一个iFrame容器,并在其中加入一个下拉菜单和一个文本域控件。 2:功能设计 在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。点击不同菜单项时,进行不同的操作。 3:代码设计 编写每个控件的相关代码,并进行调试。

三、系统详细设计 1:界面设计 创建一个下拉菜单和文本域,在文本域中显示编辑的文件信息。 第 3 页

主要代码: JMenu[] menus=new JMenu[]{ new JMenu("文件"), new JMenu("编辑"), new JMenu("工具"), new JMenu("关于") }; JMenuItem optionofmenu[][]=new JMenuItem[][]{{ new JMenuItem("新建"), new JMenuItem("打开"), new JMenuItem("保存"), new JMenuItem("退出") },

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学 号 指导教师 完成日期

目录 目录 (2) 1概述 (1) 1.1 设计目的 (1) 1.2 设计内容 (1) 2系统需求分析 (1) 2.1 系统目标 (1) 2.2 主体功能 (1) 2.3 开发环境 (1) 3 系统概要设计 (2) 3.1 系统的功能模块划分 (2) 3.2 系统流程图 (3) 4系统详细设计 (3) 5测试 (4) 5.1 测试方案 (4) 5.2 测试结果 (4) 6小结 (5) 参考文献 (6) 附录 (7) 附录源程序清单 (7)

实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 1.2 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 2.2 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 2.3 开发环境 TASM5.0集成环境

java课程设计策画日历记事本

课程设计说明书 课程: Java程序设计 院系:计算机科学学院 专业班级:计算机科学与技术(2)班 组员:张少华、张天阳 2010年6月 26 日

《Java程序设计》课程设计 ——日历记事本 我们开发了一个实现有日历标记的记事本软件,日历记事本面板由日历和和记事本两部分组成。日历部分可以调节年份,月份,日期,星期。记事本可以实行查看,保存,删除等操作,并且每一步操作都有相应提示。本软件是一个实用性很强,简洁,方便的功能软件。 引言 Java是一种纯面向对象的、网络编程首选的语言。Java技术作为软件开的一种革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设题材,借此巩固加深我们对Java 的了解。 本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。 1、设计的目的与要求; (1)为用户提供一个简便的日历记事本; (2)对java技术的进一步了解和简单的运用; (3)初步的接触软件工程; 2.设计目的与任务 本课程设计所要求达到的目的和任务:通过Java程序设计的一些重要理论基础来实现“日历记事本”的“日历”和“记事本”的双重功能。并通过此次课程设计的训练,使学生巩固和加深对Java这门课程的理解,通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。通过这次课程设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。 3.设计方案 3.1 总体设计

(最新版)基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文

单片微型计算机课程设计报告 多功能电子数字钟 姓 名 学

教师 许伟敏 电气二班 林卫

目录 一:概述 (1) 二:设计基本原理简介 (2) 三:设计要求及说明 (3) 四:整体设计方案 (4) 系统硬件电路设计 4 系统软件总流程设计模块划分及分析5 6 五:单模块流程设计 (8) 各模块设计概述、流程图模块源程序集合及注释8 13 六:单模块软件测试 (23) 七:系统检测调试 (24) 硬件电路调试 软件部分烧写调试 八:系统优化及拓展 (26) 九:心得体会 (28)

单片微型计算机课程设计 一、概述 基于汇编语言的电子数字钟概述 课程设计题目:电子数字钟 应用知识简介: ● 51 单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能 的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌 入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。 ●汇编语言 汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以与高级语言配合使用,应用十分广泛。 ● ISP ISP(In-System Programming)在系统可编程, 是当今流行的单片机编程模式,指电路板上的空白元器 件可以编程写入最终用户代码,而不需要从电路板上取 下元器件。已经编程的器件也可以用ISP方式擦除或再 编程。本次课程设计便使用ISP方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 系统合成调 试编译 下载调试(含硬件电路调试及软件烧写调试) 验收 完成总结报告课程设计流程图↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展,在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的

课程设计—java记事本

import javax.swing.*; import javax.swing.undo.*; import javax.swing.text.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.text.*; import java.util.*; import java.awt.datatransfer.*; import java.awt.print.*; import java.io.*; public class Jishiben extends JFrame implements ActionListener { JPopupMenu pm ; JTextArea ta; boolean isNewFile=true; //是否新文件(未保存过的) File currentFile; //当前文件名 String oldValue; //存放编辑区原来的内容,用于比较文本是否有改动//protected UndoManager undo = new UndoManager(); //protected UndoableEditListener undoHandler = new UndoHandler(); JToolBar tbar = new JToolBar(); JCheckBoxMenuItem mt19; public Jishiben() { super("记事本"); //Container ct=getContentPane(); //以下三句是设置编辑区域及滚动条 ta = new JTextArea(); JScrollPane sp = new JScrollPane(ta); add(sp); JMenuBar mb = new JMenuBar(); //设置文件菜单 JMenu mu1 = new JMenu("文件(F)",true); mu1.setMnemonic('F');//设置快捷键按下ALT+F激活打开菜单 JMenuItem mt1 = new JMenuItem("新建(N)",'N'); mt1.setMnemonic('N'); //mt1.addActionListener(new new1()); JMenuItem mt2 = new JMenuItem("打开(O)...",'O'); mt2.setMnemonic('O'); mt2.addActionListener(this); JMenuItem mt3 = new JMenuItem("保存(S)",'S'); //mt3.addActionListener(new save()); mu1.add(mt3); JMenuItem mt4 = new JMenuItem("另存为(A)..."); JMenuItem mt5 = new JMenuItem("页面设置(A)..."); JMenuItem mt6 = new JMenuItem("打印(P)..."); JMenuItem mt7 = new JMenuItem("退出(X)",'X');

面向对象程序的设计说明书与程序(日历记事本)

日历记事本 1.课程设计目的 通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 本课程设计设计GUI界面的日历记事本,系统将日历和记事本结合在一起,可以方便的保存、查看日志,即在任何日期记载下有关容或查看某个日期记载的容。 2.设计方案论证 2.1设计思路 2.1.1 本系统界面的左侧是日历和一幅图像。该日历可以按年前后翻动,用鼠标左键单击“上年”按钮,可将当前日历的年份减一;用鼠标左键单击“下年”按钮,可将当前日历的年份加一。该日历还可以在某年按月前后翻动,用鼠标单击“上月”按钮,可将当前日历的月份减一;用鼠标单击“下月”按钮,可将当前日历的月份增一。 2.1.2 系统界面的右侧是记事本和一个时钟。用鼠标单击日历上的日期,就可以通过该记事本编辑有关日志,并将日志保存到一个文件。该文件的名字是由当前日期组成的字符序列。用户可以查看、删除某个日期的日志,也可以继续向某个日志添加新的容。2.1.3 当某个日期有日志时,显示该日期的外观上就会出现“有”标记,表明这个日期有日志;当用户删除某个日期的日志后,该日期的外观上的“有” 标记就会消失。 2.2设计方法 在设计日历记事本时,需要编写6个Java源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java 、Clock.java和CalendarMessage.java。 日历记事本除了需要编写的上述6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JTextField、JTextArea和File类。 2.2.1 CalendarWindow.java 主类

《汇编语言》课程设计任务书

学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 电话号码本编辑和查找程序的设计与实现 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求: 1)建立一个可存放50项的电话号码表,每项包括人名及电话号码两部分; 2)程序可接受输入人名及相应的电话号码,并将他们加入电话号码表中; 3)凡有新的输入后,程序应按人名对电话号码表重新排序; 4)程序可接受需要查找电话号码的人名,并从电话号码表中查出其电话号码,并显示出来。 5)程序采用子程序结构,结构清晰; 6)友好清晰的用户界面,能识别输入错误并控制错误的修改。 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料: 1)《IBM—PC汇编语言程序设计实验教程》实验2.4 2)《IBM—PC汇编语言程序设计(第2版)》例6.11 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 乐曲程序的设计与实现 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握程序直接控制I/O方式,掌握计算机发声程序的设计。具体的设计任务及要求:1.采用位触发方式编写程序,使计算机发出音响并演奏乐曲(例如《两只老虎》等)。 1)进一步理解程序直接控制I/O方式和位触发方式控制声音的工作原理。 2)一首乐曲是由不同频率和节拍的音调组成,因此控制脉冲的频率和持续时间是编写乐曲程序的关键。根据已知的音符频率对照表,设置乐曲的频率表和节拍时间表; 3)编写程序并调试通过。 2.了解定时器的工作原理,掌握利用定时器产生声音的方法,使计算机演奏乐曲(例如《两只老虎》等)。编写程序并调试通过。 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料: 1)《IBM—PC汇编语言程序设计实验教程》3.1节 2)《IBM—PC汇编语言程序设计(第2版)》10.4节,10.5节 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

汇编语言课程设计报告

课程设计报告 课程名称课题名称 汇编语言程序设计 1.显示彩色菱形 2.显示系统当前时间 专业 班级 学号 姓名 指导教师 年月日

课程设计任务书 课程名称汇编语言程序设计 课题 1.显示彩色菱形 2.显示系统当前时间专业班级 学生姓名 学号 指导老师 审批 任务书下达日期年月日 任务完成日期年月日

一、设计内容与设计要求 1.设计内容:通过本周的课程设计,学生能够巩固所学的基础知识,并能 够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。 (1)、编制一计算比赛成绩的程序,要求完成以下功能: a、9 名评委,每个评委给分范围为 0~100(整数); b、9名评委给分中,去掉一个最高分和一个最低分,剩余7 名评委的平均分即为参赛者的得分(精确到小数点二位); c、将得分在光标位置处显示出来。 (2) 、编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30 字的 grade 数组中,各数据的格式为: 学号,成绩 1,成绩 2,?,成绩 5 然后根据 grade 中的学生成绩,把学生名次填入rank 数据组中,并显示出来,格式为:学号,名次 (3)、利用 INT 1CH(大约每秒中断 18.2 次)编写一个中断驻留程序,要求在屏幕的右 上角显示计算机中当前系统时间,显示格式为 时:分: 秒:1/100 秒 (4)、输入一个菱形的两条对角线长,在屏幕上用‘ * ’号画出一个彩色的菱形。 (5)、设置图形方式并显示彩条,要求: 选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次, 一直到整个屏幕都显示出彩条 2.设计要求: 掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一 些实际的问题,为将来编写软件积累一些典型的案例处理经验。 (1)、设计正确,方案合理。 (2)、界面友好,使用方便。 (3)、程序精炼,结构清晰。 (4)、设计报告 5000 字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。 (5)、上机演示。 (6)、按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编

汇编语言课程设计报告

农林大学金山学院 课程设计报告 课程名称:汇编语言课程设计 课程设计题目:动画设计“我爱大自然”姓名: 系:信息与机电工程系 专业:电子信息工程 年级:2008级 学号:082230066 指导教师:\ 职称:助教 2009~2010学年第二学期

目录 1 课程设计的目的 (2) 2 课程设计的要求 (2) 3课程设计报告容 (2) 3.1设计思路 (2) 3.2程序流程图 (2) 3.3设计源程序 (5) 3.4动画示意图 (19) 4 总结 (20) 5参考文献 (20) 6评分标准 (21)

动画设计“我爱大自然” 一、课程设计的目的 《汇编语言课程设计》是电子信息工程专业集中实践性环节之一,是学习完《汇编语言》课程后进行的一次全面的综合练习。其目的是: 培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。 二、课程设计的要求 1)具备初步的独立分析和解决问题的能力; 2)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能; 3)提高综合运用所学的理论知识和方法的能力; 4)训练用系统的观点和软件开发一般规进行软件开发,培养科学的工作方法和作风; 5)设计的题目要求达到一定工作量,并具有一定的深度和难度; 6)编写出课程设计说明书。 三、课程设计报告容 (一)设计思路 “我爱大自然”这个程序中包含了比较多的景物,既有静态的也有动态的,其中还有一段音乐。为了节省存储空间,提高程序设计的效率和质量,使程序简洁、清晰,便于阅读,同时也为了便于修改和扩充,采用子程序设计技术和宏定义,根据程序要实现的若干主要功能及个功能块要调用的公共部分,将程序划分为若干个相对独立的模块,为每个模块编制独立的程序段,最后将这些子程序根据调用关系连成一个整体。 这样,整个程序就被分为几个子程序的有机统一。根据BIOS中断调用原理,设置80×25彩色文本显示方式,分别编写一个子程序显示“I LOVE NATURE,LET US GO AIRING”和一个子程序在屏幕上“画”树。这两个子程序所体现出来的事物都是的。为了实现小鸟

相关文档
相关文档 最新文档