浅谈操作系统-启动过程

前言

时光匆碌,不知不觉都大三了,在众多的专业课的学习中也算是找到了一些乐趣,纸上得来终觉浅,所以决定完整的回顾一下整个操作系统的知识,为了理论与实践相结合,以学校实验室的EOS操作系统为例进行实践操作,作为一个刚刚开始学习操作系统的新手,如果有说的不对的地方还请多多指教。

EOS 是一个可以在 Intel X86 平台上运行的、面向教学的开源操作系统。为了让 EOS 适合于教学,EOS 被设计的十分小巧,并且尽量保持架构简单。但是,EOS 仍然涵盖了系统引导、进程管理、内存管理、IO 管理、文件系统等重要的操作系统概念。

系统启动

我们都知道程序的执行是必须要进去内存之后进行执行,操作系统也可以看做一个程序的运行,如果从开机加载到内存中执行的过程就是系统的启动。
我们先宏观上看一下整个从CPU加电到操作系统启动的过程:

  1. BIOS 程序首先将存储设备的引导记录(Boot Record)载入内存,并执行引导记录中的引导程序(Boot);
  2. 引导程序会将存储设备中的操作系统内核载入内存,并进入内核的入口点开始执行
  3. 后操作系统内核完成系统的初始化,并允许用户与操作系统进行交互

这里写图片描述

1、BIOS程序执行过程

BIOS(Basic Input/Output System)是基本输入输出系统的简称。BIOS 能为电脑提供最低级、最直 接的硬件控制与支持,是联系最底层的硬件系统和软件系统的桥梁。为了在关机后使 BIOS 不会丢失,早 期的 BIOS 存储在 ROM 中,并且其大小不会超过 64KB;而目前的 BIOS 大多有 1MB 到 2MB,所以会被存储在 闪存(Flash Memory)中。

BIOS主要的作用:

  • CPU 加电后会首先执行 BIOS 程序,其中 POST(Power-On Self-Test)加电自检程序是执行的第 一个例行程序,主要是对 CPU、内存等硬件设备进行检测和初始化。
  • BIOS 中断调用即 BIOS 中断服务程序,是计算机系统软、硬件之间的一个可编程接口。开机时,BIOS 会通知 CPU 各种硬件设备的中断号,并提供中断服务程序。软件可以通过调用 BIOS 中断对软盘驱动器、键盘及显示器等外围设备进行管理。
  • BIOS 会根据在 CMOS 中保存的配置信息来判断使用哪种设备启动操作系统,并将 CPU 移交给操作系统使用。

执行过程:

1. 在CPU加电之后,会把CPU所有寄存器的值设为默认值,除了CS寄存器的值改为0xFFFF,其他寄存器的值都为0,这样,根据CS 和 IP的值就可以找到指令的物理地址0xFFFF:0x0000,也就是0xFFFF0。
2. 这时CPU就开始执行在这个位置开始执行,这里存放的一条无条件跳转指令JMP,跳转到BIOS的真正启动代码处。
3. BIOS首先先进行POST(Power-On Self Test,加电后自检)POST的主要检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备;如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。
4. BIOS 程序在执 行一些必要的开机自检和初始化后,会将自己复制到从 0xA0000 开始的物理内存中并继续执行
5. 然后,BIOS 开始搜寻可引导的存储设备(即根据用户指定的引导顺序从软盘、硬盘或是可移动设备)。如果找到,则将存储设备中的引导扇区读入物理内存 0x7C00 处,并跳转到 0x7C00 继续执行,从而将 CPU 交给引导扇区中的 Boot 程序。

以 EOS 操作系统为例,开机时,如果在软盘驱动器中插有一张 EOS 操作系统软盘,则软盘的引导扇区 (大小为 512 字节)就会被 BIOS 程序加载到物理内存的 0x7C00 处。此时的物理内存如图 3-2 所示。其中, 常规内存(640K)与上位内存(384K)组成了在实模式下 CPU 能够访问的 1M 地址空间。并且此时只有两 个区域的空白物理内存可供正在运行的 Boot 程序使用,即“用户可用(1)”和“用户可用(2)”。
这里写图片描述

2、Boot 程序的执行过程

总结来说,由于Boot程序大小的限制(512KB),所以Boot程序的功能就是为了加载 Loader程序。

前面的CPU上电及BIOS的工作都不是操作系统能控制的,而从引导扇区开始,就完完全全可由操作系统来控制了,因此,编写引导扇区也是编写操作系统 必要的工作之一。从BIOS跳入引导扇区后,计算机系统引导工作就算完成,怎样把操作系统内核读进内存,然后再安排一条跳转指令跳到内核处执行就是操作系 统开发人员的工作了。

在 Boot 程序执行的过程中,CPU 始终处于实模式状态。Boot 程序利用 BIOS 提供的 int 0x13 中断服 务程序读取软盘 FAT12 文件系统的根目录,在根目录中搜寻 loader.bin 文件。如果 Boot 程序找到了 loader.bin 文件,会继续利用 int 0x13 功能将整个 loader.bin 文件读入从地址 0x1000 起始的物理内存, 最后跳转到 0x1000 处开始执行 Loader 程序,Boot 程序的使命到此结束。

EOS中Boot程序源码:

;***
;
; Copyright (c) 2008 北京英真时代科技有限公司。保留所有权利。
;
; 只有您接受 EOS 核心源代码协议(参见 License.txt)中的条款才能使用这些代码。
; 如果您不接受,不能使用这些代码。
;
; 文件名: boot.asm
;
; 描述: 引导扇区。
;
; 
;
;*******************************************************************************/

; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;                               boot.asm
;
;     PC 机加电后,CPU 进入实模式,分段管理内存,最多访问 1M 地址空间(没
; 有打开 A20 的情况下)。CPU 首先执行 BIOS 程序,在 BIOS 完成设备检测等工
; 作后,如果 BIOS 被设置为从软盘启动,则 BIOS 会将软盘的引导扇区(512 字节)
; 加载到物理地址 0x7C00 - 0x7DFF 处,然后将 CPU 的 CS 寄存器设置为 0x0000,
; 将 IP 寄存器设置为 0x7C00,接下来 CPU 就开始执行引导扇区中的程序。
;     由于段界限为 64K,所以在不修改段寄存器的情况下只能访问 0x0000 到 0xFFFF
; 的地址空间,软盘引导扇区就被加载到了此范围内,所以在软盘引导扇区程序中一般
; 不需要修改段寄存器。
;     此时的物理内存应该是下面的样子:
;
;                 +-------------------------------------+----------------------
;          0x0000 |                                     |
;                 |   BIOS 中断向量表 (1K)              |
;                 |   BIOS Interrupt Vector Table       |
;                 |                                     |
;                 +-------------------------------------+
;          0x0400 |   BIOS 数据区 (512 Bytes)           |
;                 |   BIOS Data Area                    |
;                 +-------------------------------------+
;          0x0600 |                                     |
;                 |                                     |
;                 |             用户可用(1)             |   常规内存 (640K)
;                 |                                     |  Conventional Memory
;                 |                                     |
;                 +-------------------------------------+
;          0x7C00 |   软盘引导扇区 (512 Bytes)          |
;                 |   Floppy Boot Sector                |
;                 +-------------------------------------+
;          0x7E00 |                                     |
;                 |                                     |
;                 |             用户可用(2)             |
;                 |                                     |
;                 |                                     |
;                 +-------------------------------------+----------------------
;         0xA0000 |                                     |
;                 |                                     |
;                 |   系统占用 (384K)                   |   上位内存 (384K)
;                 |                                     |   Upper Memory
;                 |                                     |
;                 +-------------------------------------+----------------------
;        0x100000 |                                     |
;                 |                                     |   扩展内存(只有进入保护模式才能访问)
;                 |               不可用                |  Extended Memory
;                 Z                                     Z
;                 |                                     |
;    物理内存结束 |                                     |
;                 +-------------------------------------+----------------------
;
;     EOS 的软盘引导扇区程序选择将 Loader.bin 从第一个用户可用区域的 0x1000 处开始
; 加载,即从 0x1000 到 0x7BFF,所以 Loader 最大只能为 0x7C00 - 0x1000 = 0x6C00
; 个字节。如果在保护模式中按照 4K 大小进行分页,则 Loader 就在一个页面的开始处。
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    org 0x7C00
    jmp short Start
    nop                 ; 这个 nop 不可少

; ----------------------------------------------------------------------
; FAT12 引导扇区头
Oem                     db 'Engintim'   ; OEM String,必须 8 个字节
BytesPerSector          dw 512          ; 每扇区字节数                    ----+
SectorsPerCluster       db 1            ; 每簇多少扇区                        |
ReservedSectors         dw 1            ; Boot 记录占用多少扇区             |
Fats                    db 2            ; FAT 表数                            |
RootEntries             dw 224          ; 根目录文件数最大值             |
Sectors                 dw 2880         ; 扇区总数                          \\ BPB
Media                   db 0xF0         ; 介质描述                          // BIOS Parameter Block
SectorsPerFat           dw 9            ; 每 FAT 扇区数                     |
SectorsPerTrack         dw 18           ; 每磁道扇区数                        |
Heads                   dw 2            ; 磁头数                           |
HiddenSectors           dd 0            ; 隐藏扇区数                     |
LargeSectors            dd 0            ; 扇区总数,Sectors 为 0 时使用  ----+
DriveNumber             db 0            ; 驱动器号
Reserved                db 0            ; 保留未用
Signature               db 0x29         ; 引导标记 (0x29)
Id                      dd 0            ; 卷序列号
VolumeLabel             db 'EOS        '; 卷标,必须 11 个字节
SystemId                db 'FAT12   '   ; 文件系统类型,必须 8 个字节
;------------------------------------------------------------------------

; FAT12 文件系统相关的一些变量
FirstSectorOfRootDir    dw 0            ; 根目录的起始扇区号
RootDirectorySectors    dw 0            ; 根目录占用的扇区数量
FirstSectorOfFileArea   dw 0            ; 数据区的起始扇区号
BufferOfFat             dw 0            ; FAT 表缓冲区地址
BufferOfRootDir         dw 0            ; 根目录缓冲区地址

LOADER_ORG              equ 0x1000              ; Loader.bin 的起始地址
MAX_FILE_SIZE           equ 0x6C00              ; Loader.bin 只占用 0x1000 到 0x7C00 的空间
wFilePos                dw  LOADER_ORG          ; 用于加载 Loader.bin 的游标
LoaderFileName          db  "LOADER  BIN"       ; Loader.bin 的文件名
strError:               db  "File Loader.bin not found!"

Start:
    ; 初始化 CPU 的段寄存器为 CS 的值(0),堆栈从 64K 向下增长
    mov ax, cs
    mov ds, ax
    mov es, ax
    mov ss, ax
    xor sp, sp
    mov bp, sp

    ; 初始化屏幕
    mov ax, 0x0600      ; AH = 0x06,  AL = 0x00
    mov bx, 0x0700      ; 黑底白字(BH = 0x07)
    xor cx, cx          ; 左上角: (列号  0, 行号  0)
    mov dx, 0x184F      ; 右下角: (列号 79, 行号 24)
    int 0x10

    ; 软驱复位
    xor ah, ah
    xor dl, dl
    int 0x13

    ;
    ; 计算根目录的起始扇区号
    ; FirstSectorOfRootDir = ReservedSectors + SectorsPerFat * Fats
    ;
    mov ax, word [SectorsPerFat]
    movzx bx, byte [Fats]
    mul bx
    add ax, word [ReservedSectors]
    mov word [FirstSectorOfRootDir], ax

    ;
    ; 计算根目录占用的扇区数量
    ; RootDirectorySectors = RootEntries * 32 / BytesPerSector
    ;
    mov ax, word [RootEntries]
    shl ax, 5
    mov bx, word [BytesPerSector]
    div bx
    mov word [RootDirectorySectors], ax

    ;
    ; 计算数据区域的起始扇区号
    ; FirstSectorOfFileArea = FirstSectorOfRootDir + RootDirectorySectors
    ;
    add ax, word [FirstSectorOfRootDir]
    mov word [FirstSectorOfFileArea], ax

    ;
    ; 计算 FAT 缓冲区地址(紧接在引导扇区后)
    ; BufferOfFat = 0x7C00 + BytesPerSector * ReservedSectors
    ;
    mov ax, word [BytesPerSector]
    mul word [ReservedSectors]
    add ax, 0x7C00
    mov word [BufferOfFat], ax

    ;
    ; 计算根目录缓冲区地址(紧接在 FAT 缓冲区后)
    ; BufferOfRootDir = BufferOfFat + BytesPerSector * SectorsPerFat
    ;
    mov ax, word [BytesPerSector]
    mul word [SectorsPerFat]
    add ax, word [BufferOfFat]
    mov word [BufferOfRootDir], ax

    ; 将 FAT1 读入 FAT 缓冲区
    mov ax, word [ReservedSectors]      ; 
    mov cx, word [SectorsPerFat]        ; 一个 FAT 表的扇区数量
    mov bx, word [BufferOfFat]          ; es:bx 指向 FAT 表缓冲区
    call ReadSector

    ; 将根目录读入缓冲区
    mov ax, word[FirstSectorOfRootDir]
    mov cx, word[RootDirectorySectors]
    mov bx, word[BufferOfRootDir]
    call ReadSector

    ; 在根目录中查找 Loader.bin 文件
FindFile:
    mov bx, word [BufferOfRootDir]      ; bx 指向第一个根目录项
    mov dx, word [RootEntries]          ; 根目录项总数
    cld

CompareNextDirEntry:
    mov si, LoaderFileName              ; si -> "LOADER  BIN"
    mov di, bx                          ; di -> 目录项中文件名字符串
    mov cx, 11                          ; 文件名字符串的长度
    repe cmpsb                          ; 字符串比较
    cmp cx, 0
    je  CheckFileSize                   ; 如果比较了 11 个字符都相等, 表示找到文件

    ; 文件名不一致,继续比较下一个目录项
    add bx, 0x20                        ; bx 指向下一个目录项
    dec dx                              ; 减小剩余目录项
    jnz CompareNextDirEntry

    ; 查找完所有目录项仍没有找到文件,提示出错
    jmp Error

    ; 找到文件后,检查文件的大小
CheckFileSize:
    mov eax, dword [bx + 0x1C]          ; 得到文件的大小
    test eax, eax
    jz Error
    cmp eax, MAX_FILE_SIZE
    ja Error

    ; 开始加载文件
    mov ax, word [bx + 0x1A]            ; 初始化 ax 为文件的第一个簇号
ReadNextCluster:
    push ax                             ; 保存要读取的簇号

    ;
    ; 计算 ax 号簇对应的扇区号,扇区号 = 数据区起始扇区号 + (簇号 - 2) * 每簇扇区数
    ;
    sub ax, 2
    movzx cx, byte [SectorsPerCluster]
    mul cx
    add ax, word [FirstSectorOfFileArea]

    mov bx, word [wFilePos];            ; 文件缓冲区地址

    call ReadSector                     ; 读一个簇

    ;
    ; 文件位置向后移动一个簇的大小
    ; wFilePos = wFilePos + BytesPerSector * SectorsPerCluster
    ;
    mov ax, word [BytesPerSector]
    movzx bx, byte [SectorsPerCluster]
    mul bx
    add ax, word [wFilePos];
    mov word [wFilePos], ax     

    ; 查找 FAT 表,获得下一个要读取的簇
    pop ax                              ; 刚读取的簇号
    mov bx, 3
    mul bx
    mov bx, 2
    div bx
    mov bx, word [BufferOfFat]
    add bx, ax
    mov ax, word [bx]
    test dx, dx
    jz EvenClusterNo
    shr ax, 4
    jmp CheckEOC
EvenClusterNo:
    and ax, 0x0FFF

    ; 根据簇号判断文件是否结束,如没结束则继续读取
CheckEOC:
    cmp ax, 0x0FF7
    jb  ReadNextCluster

    ; 文件读取完毕,关闭软驱马达
    mov dx, 0x03F2
    xor al, al
    out dx, al

    ; Loader.bin 加载完毕,跳转到 Loader.bin 执行
    jmp 0:LOADER_ORG

    ; 出错处理:在屏幕左上角显示错误信息字符串,并且死循环
Error:  
    mov bp, strError
    mov ax, 0x1301              ; AH = 0x13,  AL = 0x01
    mov bx, 0x0007              ; 页号为 0 (BH = 0x00),黑底白字 (BL = 0x07)
    mov cx, 26                  ; 字符串长度
    xor dx, dx
    int 0x10
    jmp $

;----------------------------------------------------------------------------
; 函数名: ReadSector
; 作  用: 从第 ax 个 Sector 开始, 将 cl 个 Sector 读入 es:bx 中
;----------------------------------------------------------------------------
ReadSector:
    push bp
    mov bp, sp
    push cx                     ; 保存 cl
    push bx                     ; 保存 bx

    ;
    ; 计算 柱面号、起始扇区 和 磁头号
    ; 设扇区号为 x
    ;                           ┌ 柱面号 = y >> 1
    ;       x           ┌ 商 y ┤
    ; -------------- => ┤      └ 磁头号 = y & 1
    ;  每磁道扇区数     │
    ;                   └ 余 z => 起始扇区号 = z + 1
    ;
    mov bl, [SectorsPerTrack]   ; bl: 除数
    div bl                      ; y 在 al 中, z 在 ah 中
    inc ah                      ; z ++
    mov cl, ah                  ; cl <- 起始扇区号
    mov dh, al                  ; dh <- y
    shr al, 1                   ; y >> 1 (其实是 y / Heads, 这里 Heads = 2)
    mov ch, al                  ; ch <- 柱面号
    and dh, 1                   ; dh & 1 = 磁头号
    mov dl, [DriveNumber]       ; 驱动器号 (0 表示 A 盘)
    pop bx                      ; 恢复 bx

.GoOnReading:
    mov ah, 2                   ; 读
    mov al, byte [bp-2]         ; 读 al 个扇区
    int 0x13
    jc  .GoOnReading            ; 如果读取错误 CF 会被置为 1, 这时就不停地读, 直到正确为止

    ; 恢复堆栈并返回
    pop cx
    pop bp
    ret

    ;
    ; 引导扇区代码结束,填充剩下的空间,使生成的二进制代码恰好为 512 字节
    ;
    times   510-($-$$)   db  0
    dw  0xaa55                  ; 引导扇区激活标志

3、Loader 程序的执行过程

Loader 程序的任务和 Boot 程序很相似,同样是将其它的程序加载到物理内存中,这次加载的是操作系统(EOS)内核。除此之外,Loader 程序还负责检测内存大小,为内核准备保护模式执行环境等工作。
简单来说,Loader程序就是从软盘的根目录将内核文件kernel.dll载入物理内存0x10000,然后通过开启分页机制,映射到虚拟地址0x80000000处,然后Loader程序跳转到kernel.dll的入口点继续执行,到此,控制权交给了内核。

Loader程序的汇编实现相当复杂,就不在此贴出来了

4、内核初始化过程

总的来说,内核初始化的主要是初始化处理器和中断、各个管理模块、最后创建主进程。之后启动控制台程序,这样就可以交互,进行应用程序的执行了

EOS中内核的入口程序:

/***

Copyright (c) 2008 北京英真时代科技有限公司。保留所有权利。

只有您接受 EOS 核心源代码协议(参见 License.txt)中的条款才能使用这些代码。
如果您不接受,不能使用这些代码。

文件名: start.c

描述: EOS 内核的入口函数。



*******************************************************************************/

#include "ki.h"
#include "mm.h"
#include "ob.h"
#include "ps.h"
#include "io.h"
#include "kdb.h"

VOID
KiSystemStartup(
    PVOID LoaderBlock
    )
/*++

功能描述:
    系统的入口点,Kernel.dll被Loader加载到内存后从这里开始执行。

参数:
    LoaderBlock - Loader传递的加载参数块结构体指针,内存管理器要使用。

返回值:
    无(这个函数永远不会返回)。

注意:
    KiSystemStartup在Loader构造的ISR栈中执行,不存在当前线程,所以不能调用任何可
    能导致阻塞的函数,只能对各个模块进行简单的初始化。

--*/
{
    //
    // 初始化处理器和中断。
    //
    KiInitializeProcessor();
    KiInitializeInterrupt();

    //
    // 初始化内核调试桩。
    // 注意:在调试桩初始化完成之前,设置断点是不会命中的。
    //
#ifdef _DEBUG
    KdbInitializeSystem();
#endif

    //
    // 初始化可编程中断控制器和可编程定时计数器。
    //
    KiInitializePic();
    KiInitializePit();

    //
    // 对各个管理模块执行第一步初始化,顺序不能乱。
    //
    MmInitializeSystem1(LoaderBlock);
    ObInitializeSystem1();
    PsInitializeSystem1();
    IoInitializeSystem1();

    //
    // 创建系统启动进程。
    //
    PsCreateSystemProcess(KiSystemProcessRoutine);

    //
    // 执行到这里时,所有函数仍然在使用由 Loader 初始化的堆栈,所有系统线程
    // 都已处于就绪状态。执行线程调度后,系统线程开始使用各自的线程堆栈运行。
    //
    KeThreadSchedule();

    //
    // 本函数永远不会返回。
    //
    ASSERT(FALSE);
}

参考资料

1.EOS 操作系统实验教程 海西慧学 编著
2.计算机的启动过程(详细)
3. 从开机到进入操作系统的引导过程详解

  • 48
    点赞
  • 180
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目录 第一篇 .NET基础 第1章 认识ASP.NET 3.5 1.1 什么是ASP.NET 1.1.1 .NET历史与展望 1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 工具箱 1.3.5 解决方案管理器 1.3.6 属性窗口 1.3.7 错误列表窗口 1.4 安装SQL Server 2005 1.5 ASP.NET应用程序基础 1.5.1 创建ASP.NET应用程序 1.5.2 运行ASP.NET应用程序 1.5.3 编译ASP.NET应用程序 1.6 小结 第2章 C# 3.0程序设计基础 2.1 C#程序 2.1.1 C#程序的结构 2.1.2 C# IDE的代码设置 2.2 变量 2.2.1 定义 2.2.2 值类型 2.2.3 引用类型 2.3 变量规则 2.3.1 命名规则和命名习惯 2.3.2 声明并初始化变量 2.3.3 数组 2.3.4 声明并初始化字符串 2.3.5 操作字符串 2.3.6 创建和使用常量 2.3.7 创建并使用枚举 2.3.8 类型转换 2.4 编写表达式 2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if语句的使用方法 2.5.2 switch选择语句的使用 2.6 使用循环语句 2.6.1 for循环语句 2.6.2 while循环语句 2.6.3 do while循环语句 2.6.4 foreach循环语句 2.7 异常处理语句 2.7.1 throw异常语句 2.7.2 try-catch异常语句 2.7.3 try-finally异常语句 2.7.4 try-catch-finally异常语句 2.8 小结 第3章 面向对象设计基础 3.1 什么是面向对象 3.1.1 传统的面向过程 3.1.2 面向对象的概念 3.1.3 面向组件的概念 3.2 面向对象的C#实现 3.2.1 定义 3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名空间 3.4.3 分层设计中使用命名空间 3.5 类的方法 3.5.1 编写方法 3.5.2 给方法传递参数 3.5.3 通过引用来传递参数 3.5.4 方法的重载 3.6 封装 3.6.1 为什么要封装 3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法的抽象类 3.9.4 抽象属性 3.10 委托和事件 3.10.1 委托 3.10.2 声明事件 3.10.3 引发事件 3.10.4 订阅事件 3.10.5 委托和事件 3.11 类命名 3.11.1 命名空间的命名 3.11.2 类的命名原则 3.11.3 接口的命名原则 3.11.4 属性的命名原则 3.11.5 枚举的命名原则 3.11.6 只读字段的命名原则 3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型 4.1.3 代码隐藏页模型 4.1.4 创建ASP.NET Web Application 4.1.5 ASP.NET网站和ASP.NET应用程序的区别 4.2 代码隐藏页模型的解释过程 4.3 代码隐藏页模型的事件驱动处理 4.4 ASP.NET客户端状态 4.4.1 视图状态 4.4.2 控件状态 4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 4.5 ASP.NET页面生命周期 4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 4.8 小结 第二篇 ASP.NET窗体控件 第5章 Web窗体的基本控件 5.1 控件的属性 5.2 简单控件 5.2.1 标签控件(Label) 5.2.2 超链接控件(HyperLink) 5.2.3 图像控件(Image) 5.3 文本框控件(TextBox) 5.3.1 文本框控件的属性 5.3.2 文本框控件的使用 5.4 按钮控件(Button,LinkButton,ImageButton) 5.4.1 按钮控件的通用属性 5.4.2 Click单击事件 5.4.3 Command命令事件 5.5 单选控件和单选组控件(RadioButton和RadioButtonList) 5.5.1 单选控件(RadioButton) 5.5.2 单选组控件(RadioButtonList) 5.6 复选框控件和复选组控件(CheckBox和CheckBoxList) 5.6.1 复选框控件(CheckBox) 5.6.2 复选组控件(CheckBoxList) 5.7 列表控件(DropDownList,ListBox和BulletedList) 5.7.1 DropDownList列表控件 5.7.2 ListBox列表控件 5.7.3 BulletedList列表控件 5.8 面板控件(Panel) 5.9 占位控件(PlaceHolder) 5.10 日历控件(Calendar) 5.10.1 日历控件的样式 5.10.2 日历控件的事件 5.11 广告控件(AdRotator) 5.12 文件上传控件(FileUpload) 5.13 视图控件(MultiView和View) 5.14 表控件(Table) 5.15 向导控件(Wizard) 5.15.1 向导控件的样式 5.15.2 导航控件的事件 5.16 XML控件 5.17 验证控件 5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件(CustomValidator) 5.17.6 验证组控件(ValidationSummary) 5.18 导航控件 5.19 其他控件 5.19.1 隐藏输入框控件(HiddenField) 5.19.2 图片热点控件(ImageMap) 5.19.3 静态标签控件(Lieral) 5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第6章 Web窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件(LoginStatus) 6.1.5 密码恢复控件(PasswordRecovery) 6.1.6 密码更改控件(ChangePassword) 6.1.7 生成用户控件(CreateUserWizard) 6.2 网站管理工具 6.2.1 启动管理工具 6.2.2 用户管理 6.2.3 用户角色 6.2.4 访问规则管理 2.6.5 应用程序配置 6.3 使用登录控件 6.3.1 生成用户控件(CreateUserWizard) 6.3.2 密码更改控件(ChangePassword) 6.4 小结 第三篇 数据操作篇 第7章 数据库与ADO.NET基础 7.1 数据库基础 7.1.1 结构化查询语言 7.1.2 表和视图 7.1.3 存储过程和触发器 7.2 使用SQL Server 2005 管理数据库 7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET连接SQL数据库 7.3.1 ADO.NET基础 7.3.2 连接SQL数据库 7.3.3 ADO.NET过程 7.4 ADO与ADO.NET 7.4.1 ADO概述 7.4.2 ADO.NET与ADO 7.5 ADO.NET 常用对象 7.6 Connection连接对象 7.6.1 连接SQL数据库 7.6.2 连接Access数据库 7.6.3 打开和关闭连接 7.7 DataAdapter适配器对象 7.8 Command执行对象 7.8.1 ExecuteNonQuery方法 7.8.2 ExecuteNonQuery执行存储过程 7.8.3 ExecuteScalar方法 7.9 DataSet数据集对象 7.9.1 DataSet数据集基本对象 7.9.2 DataTable数据表对象 7.9.3 DataRow数据行对象 7.9.4 DataView数据视图对象 7.10 DataReader数据访问对象 7.10.1 DataReader对象概述 7.10.2 DataReader读取数据库 7.10.3 异常处理 7.11 连接池概述 7.12 参数化查询 7.13 小结 第8章 Web窗体的数据控件 8.1 数据源控件 8.1.1 SQL数据源控件(SqlDataSource) 8.1.2 Access数据源控件(AccessDataSource) 8.1.3 目标数据源控件(ObjectDataSource) 8.1.4 LINQ数据源控件(LinqDataSource) 8.1.5 Xml数据源控件(XmlDataSource) 8.1.6 站点导航控件(SiteMapDataSource) 8.2 重复列表控件(Repeater) 8.3 数据列表控件(DataList) 8.4 数据列表控件(GridView) 8.5 数据绑定控件(FormView) 8.6 数据绑定控件(DetailsView) 8.7 数据绑定控件(ListView) 8.8 数据绑定控件(DataPager) 8.9 小结 第9章 ASP.NET操作数据库 9.1 使用ADO.NET操作数据库 9.1.1 使用ExecuteReader()操作数据库 9.1.2 使用ExecuteNonQuery()操作数据库 9.1.3 使用ExecuteScalar()操作数据库 9.1.4 使用ExecuteXmlReader()操作数据库 9.2 ASP.NET创建和插入记录 9.2.1 SQL INSERT数据插入语句 9.2.2 使用Command对象更新记录 9.2.3 使用DataSet数据集插入记录 9.3 ASP.NET更新数据库 9.3.1 SQL UPDATE数据更新语句 9.3.2 使用Command对象更新记录 9.3.3 使用DataSet数据集更新记录 9.4 ASP.NET删除数据 9.4.1 SQL DELETE数据删除语句 9.4.2 使用Command对象删除记录 9.4.3 使用DataSet数据集删除记录 9.5 使用存储过程 9.5.1 存储过程的优点 9.5.2 创建存储过程 9.5.3 调用存储过程 9.6 ASP.NET数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView显示、删除、修改数据 9.6.3 使用DataList显示数据 9.6.4 DataList分页实现 9.6.5 使用SQLHelper操作数据库 9.7 小结 第10章 访问其他数据源 10.1 使用ODBC .NET Data Provider 10.1.1 ODBC .NET Data Provider简介 10.1.2 建立连接 10.2 使用OLE DB.NET Data Provider 10.2.1 OLE DB.NET Data Provider简介 10.2.2 建立连接 10.3 访问MySql 10.3.1 MySql简介 10.3.2 建立连接 10.4 访问Excel 10.4.1 Excel 简介 10.4.2 建立连接 10.5 访问txt 10.5.1 使用ODBE.NET Data Provider连接txt 10.5.2 使用OLE DB .NET Data Provider 连接txt 10.5.3 使用System.IO命名空间 10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web窗体转换成用户控件 11.2 自定义控件 11.2.1 实现自定义控件 11.2.2 复合自定义控件 11.3 用户控件和自定义控件的异同 11.4 用户控件示例 11.4.1 ASP.NET登录控件 11.4.2 ASP.NET登录控件的开发 11.4.3 ASP.NET登录控件的使用 11.5 自定义控件实例 11.5.1 ASP.NET分页控件 11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 CSS常用属性 12.1.4 将CSS应用在控件上 12.1.5 主题和皮肤 12.1.6 页面主题和全局主题 12.1.7 应用和禁用主题 12.1.8 用编程的方法控制主题 12.2 母版页 12.2.1 母版页基础 12.2.2 内容窗体 12.2.3 母版页的运行方法 12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2制作页面 12.4.1 创建ASPX页面 12.4.2 创建CSS层叠样式表 12.4.3 创建框架集 12.5 小结 第13章 ASP.NET内置对象,应用程序配置和缓存 13.1 ASP.NET内置对象 13.1.1 Request传递请求对象 13.1.2 Response请求响应对象 13.1.3 Application状态对象 13.1.4 Session状态对象 13.1.5 Server服务对象 13.1.6 Cookie状态对象 13.1.7 Cache缓存对象 13.1.8 Global.asax配置 13.2 ASP.NET应用程序配置 13.2.1 ASP.NET应用程序配置 13.2.2 Web.config配置文件 13.2.3 ASP.NET基本配置节 13.3 ASP.NET缓存功能 13.3.1 缓存概述 13.3.2 页面输出缓存 13.3.3 页面部分缓存 13.3.4 应用程序数据缓存 13.3.5 检索应用程序数据缓存对象 13.4 小结 第14章 ASP.NET XML和Web Service 14.1 XML简介 14.2 读写XML 14.2.1 XML与HTML 14.2.2 创建XML文档 14.2.3 XML控件 14.2.4 XML文件读取类(XmlTextReader) 14.2.5 XML文件编写类(XmlTextWriter) 14.2.6 XML文本文档类(XmlDocument) 14.3 XML串行化 14.3.1 XmlSerializer串行化类 14.3.2 基本串行化 14.4 XML样式表XSL 14.4.1 XSL简介 14.4.2 使用XSLT 14.5 Web服务(Web Service) 14.5.1 什么是Web服务 14.5.2 Web服务体系结构 14.5.3 Web服务协议栈 14.6 简单Web Service示例 14.7 自定义Web Service 14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5高级编程 第15章 图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 .NET Framework绘图类 15.2 图形编程 15.2.1 Graphics类 15.2.2 绘制基本图形 15.2.3 图形绘制实例 15.3 绘制文字特效 15.3.1 投影特效 15.3.2 倒影特效 15.3.3 旋转特效 15.4 绘制图片 15.4.1 载入图像文件 15.4.2 GDI+输出图像 15.5 图像特效处理 15.5.1 底片效果 15.5.2 浮雕效果 15.6 小结 第16章 ASP.NET 3.5和AJAX 16.1 AJAX基础 16.1.1 什么是AJAX 16.1.2 ASP.NET AJAX入门 16.1.3 ASP.NET 2.0 AJAX 16.1.4 ASP.NET 3.5 AJAX 16.1.5 AJAX简单示例 16.2 ASP.NET 3.5AJAX控件 16.2.1 脚本管理控件(ScriptManger) 16.2.2 脚本管理控件(ScriptMangerProxy) 16.2.3 时间控件(Timer) 16.2.4 更新区域控件(UpdatePanel) 16.2.5 更新进度控件(UpdateProgress) 16.3 AJAX编程 16.3.1 自定义异常处理 16.3.2 使用母版页的UpdatePanel 16.3.3 母版页刷新内容窗体 16.4 小结 第17章 ASP.NET MVC基础 17.1 了解MVC 17.1.1 MVC和Web Form 17.1.2 ASP.NET MVC的运行结构 17.2 ASP.NET MVC基础 17.2.1 安装ASP.NET MVC 17.2.2 新建一个MVC应用程序 17.2.3 ASP.NET MVC应用程序的结构 17.2.4 运行ASP.NET MVC应用程序 17.3 ASP.NET MVC原理 17.3.1 ASP.NET MVC运行流程 17.3.2 ASP.NET MVC工作原理 17.4 ASP.NET MVC开发 17.4.1 创建ASP.NET MVC页面 17.4.2 ASP.NET MVC 数据呈现(ViewData) 17.4.3 ASP.NET MVC 跨页数据呈现(TempData) 17.4.4 ASP.NET MVC页面重定向 17.4.5 ASP.NET MVC URL路由(URLRouting) 17.4.6 ASP.NET MVC控件辅助工具(Helper) 17.4.7 ASP.NET MVC表单传值 17.5 小结 第18章 WCF开发基础 18.1 了解WCF 18.1.1 什么是WCF 18.1.2 为什么需要WCF 18.2 WCF基础 18.2.1 服务 18.2.2 地址 18.2.3 契约 18.3 WCF应用 18.3.1 创建WCF应用 18.3.2 创建WCF方法 18.4 WCF消息传递 18.4.1 消息传递 18.4.2 消息操作 18.5 使用WCF服务 18.5.1 在客户端添加WCF服务 18.5.2 在客户端使用WCF服务 18.6 小结 第19章 WPF开发基础 19.1 了解WPF 19.1.1 什么是WPF 19.2 WPF的应用范围 19.2 WPF和Microsoft Expression 19.2.1 使用Microsoft Expression Blend设计WPF 19.2.2 WPF控件样式 19.2.3 浅谈XAML 19.2.4 WPF控件层次 19.3 WPF应用程序开发 19.3.1 WPF动画事件 19.3.2 WPF时间轴 19.3.3 WPF事件处理 19.4 WPF系统开发 19.4.1 WPF系统需求 19.4.2 WPF界面开发 19.4.3 WPF动画制作 19.4.4 WPF事件编写 19.5 小结 第六篇 ASP.NET 3.5与LINQ 第20章 ASP.NET 3.5与LINQ 20.1 什么是LINQ 20.1.1 LINQ起源 20.1.2 LINQ构架 20.1.3 LINQ与Visual Studio 2008 新特性 20.2 LINQ与Web应用程序 20.2.1 创建使用LINQ的Web应用程序 20.2.2 基本的LINQ数据查询 20.2.3 IEnumerable和IEnumerable<T>接口 20.2.4 IQueryProvider和IQueryable<T>接口 20.2.5 LINQ相关的命名空间 20.3 Lambda表达式 20.3.1 匿名方法 20.3.2 Lambda表达式基础 20.3.3 Lambda表达式格式 20.3.4 Lambda表达式树 20.3.5 访问Lambda表达式树 20.4 小结 第21章 使用LINQ查询 21.1 LINQ查询概述 21.1.1 准备数据源 21.1.2 使用LINQ 21.1.3 执行LINQ查询 21.2 LINQ查询语法概述 21.3 基本子句 21.3.1 from查询子句 21.3.2 where条件子句 21.3.3 select选择子句 21.3.4 group分组子句 21.3.5 orderby排序子句 21.3.6 into连接子句 21.3.7 join连接子句 21.3.8 let临时表达式子句 21.4 LINQ查询操作 21.4.1 LINQ查询概述 21.4.2 投影操作 21.4.3 筛选操作 21.4.4 排序操作 21.4.5 聚合操作 21.5 使用LINQ查询和操作数据库 21.5.1 简单查询 21.5.2 建立连接 21.5.3 插入数据 21.5.4 修改数据 21.5.5 删除数据 21.6 LINQ与MVC 21.6.1 创建ASP.NET MVC应用程序 21.6.2 创建LINQ to SQL 21.6.3 数据查询 21.7 小结 第七篇 ASP.NET 3.5模块开发 第22章 注册模块设计 22.1 学习要点 22.2 系统设计 22.2.1 模块功能描述 22.2.2 模块流程分析 22.3 数据库设计 22.3.1 数据库的分析和设计 22.3.2 数据表的创建 22.4 界面设计 22.4.1 基本界面 22.4.2 创建CSS 22.5 代码实现 22.5.1 验证控制 22.5.2 过滤输入信息 22.5.3 插入注册信息 22.5.4 管理员页面 22.6 实例演示 22.7 小结 第23章 登录模块设计 23.1 学习要点 23.2 系统设计 23.2.1 模块功能描述 22.2.2 模块流程分析 23.3 数据库设计 23.3.1 数据库设计分析 23.3.2 数据库表的创建 23.4 界面设计 23.4.1 基本界面 23.4.2 创建CSS 23.4.3 发送密码页面 23.5 代码实现 23.5.1 登录代码实现 23.5.2 邮件发送页面 23.5.3 根据不同的用户显示不同的内容 23.6 实例演示 23.7 小结 第24章 广告模块设计 24.1 学习要点 24.2 系统设计 24.2.1 模块功能描述 24.2.2 模块流程分析 24.3 数据库设计 24.3.1 数据库设计分析 24.3.2 数据库表的创建 24.4 界面设计 24.4.1 发布广告界面 24.4.2 发布广告页数据源配置 24.4.3 修改广告界面 24.4.4 管理广告界面 24.4.5 分类管理界面 24.5 代码实现 24.5.1 广告添加功能 24.5.2 广告修改功能 24.5.3 自定义控件的实现 24.6 实例演示 24.7 小结 第25章 新闻模块设计 25.1 学习要点 25.2 系统设计 25.2.1 模块功能描述 25.2.2 模块流程分析 25.3 数据库设计 23.3.1 数据库设计 25.3.2 数据表的创建 25.4 界面设计 25.4.1 登录界面 25.4.2 后台框架集 25.4.3 新闻发布页面 25.4.4 新闻修改页面 25.4.5 新闻管理页面 25.4.6 新闻分类管理页面 25.5 代码实现 25.5.1 导航菜单配置 25.5.2 身份验证页面 25.5.3 新闻发布页面 25.5.4 静态生成功能 25.5.5 新闻显示页面 25.5.6 静态模板编写 25.6 实例演示 25.7 小结 第26章 投票模块设计 26.1 学习要点 26.2 系统设计 26.2.1 模块功能描述 26.2.2 模块流程分析 26.3 数据库设计 26.3.1 数据库设计 26.3.2 数据表的创建 26.4 界面设计 26.4.1 后台框架集 26.4.2 投票管理页面 26.4.3 投票发布页面 26.4.4 投票修改页面 26.4.5 投票删除页面 26.5 代码实现 26.5.1 添加投票代码实现 26.5.2 修改投票代码实现 26.5.3 删除投票代码实现 26.5.4 显示投票代码实现 26.5.5 用户投票代码实现 26.6 实例演示 26.7 小结 第27章 聊天模块设计 27.1 学习要点 27.2 系统设计 27.2.1 模块功能描述 27.2.2 模块流程分析 27.3 界面设计 27.3.1 登录界面设计 27.3.2 登录界面CSS 27.3.3 聊天室显示界面 27.3.4 聊天室界面CSS 27.4 代码实现 27.4.1 登录代码实现 27.4.2 多人聊天代码实现 27.4.3 单人聊天代码实现 27.4.4 聊天记录保存实现 27.5 实例演示 27.6 小结 第六篇 ASP.NET 3.5应用实例 第28章 制作一个ASP.NET留言本 28.1 系统设计 28.1.1 需求分析 28.1.2 系统功能设计 28.1.3 模块功能划分 28.2 数据库设计 28.2.1 数据库的分析和设计 28.2.2 数据表的创建 28.2.3 数据表关系图 28.3 系统公用模块的创建 28.3.1 创建CSS 28.3.2 使用SQLHepler 28.3.3 配置Web.config 28.4 系统界面和代码实现 28.4.1 留言板用户控件 28.4.2 管理员登录实现 28.4.3 用户注册登录实现 28.4.4 用户登录实现 28.4.5 留言本界面布局 28.4.6 留言功能实现 28.4.7 回复功能实现 28.4.8 删除功能的实现 28.4.9 用户索引实现 28.5 用户体验优化 28.5.1 AJAX留言实现 28.5.2 AJAX数据重绑定 28.5.3 系统导航实现 28.5.4 侧边栏界面优化 28.6 用户功能实现 28.6.1 用户信息界面 28.6.2 用户信息修改实现 28.6.3 用户信息删除实现 28.6.4 用户注销 28.7 实例演示 28.7.1 准备数据源 28.7.2 基本实例演示 28.7.3 用户功能演示 28.8 小结 第29章 制作一个ASP.NET校友录系统 第29章 制作一个ASP.NET校友录系统 29.1 系统设计 29.1.1 需求分析 29.1.2 系统功能设计 29.1.3 模块功能划分 29.2 数据库设计 29.2.1 数据库分析和设计 29.2.2 数据表的创建 29.3 数据表关系图 29.4 系统公用模块的创建 29.4.1 使用Fckeditor 29.4.2 使用SQLHelper 29.4.3 配置Web.config 29.5 系统界面和代码实现 29.5.1 用户注册实现 29.5.2 用户登录实现 29.5.3 校友录页面规划 29.5.4 自定义控件实现 29.5.5 校友录页面实现 29.5.6 日志发布实现 29.5.7 日志修改实现 29.5.8 管理员日志删除 29.5.9 日志显示页面 29.5.10 用户索引页面 29.5.11 管理员用户删除 29.6 用户体验优化 29.6.1 超链接样式优化 29.6.2 默认首页优化 29.6.3 导航栏编写 29.6.4 AJAX留言优化 29.6.5 优化留言表情 29.7 高级功能实现 29.7.1 后台管理页面实现 29.7.2 日志管理实现 29.7.3 日志修改和删除实现 29.7.4 评论删除实现 29.7.5 板报功能实现 29.7.6 用户修改和删除实现 29.7.7 用户权限管理 29.7.8 权限及注销实现 29.8 实例演示 29.8.1 准备数据源 29.8.2 基本实例演示 29.8.3 管理后台演示 29.9 小结
"计算机联锁毕业设计浅谈TDCS系统网络安全防护第一章 " "TDCS网络系统安全防护现状在铁路跨越式开展的旅程中,铁路信号技术的开 " "展朝着新技术、信息化、网络化开展的目标前进。列车调度指挥系统TDCS一 " "般采用64kb/s、2Mb/s光通道与电缆回线构成的专用广域网,信息传输按TCP/" "IP协议进展,终端计算机和中心服务器选用WindowsNT/2000和UNIX操作系统 " ",其应用程序均基于此平台进展开发,也就是说TDCS是构建在一个通用开放 " "的操作平台上, " "TDCS系统虽然是相对独立的内部网,安全管理工作相对好做些,目前由于一 " "些情况可能大家不以为然,病毒乘虚而入,最后造成大家疲于奔命。因此不 " "可防止地要面对计算机病毒问题。1.1 " "网络遭受病毒侵袭的主要途径:1、现局部TDCS维护人员日常使用硬盘盒维护" ",由于硬盘盒容量大、携带方便,免不了日常移动和储存很多其他数据文件 " ",硬盘盒无意之中极易由此感染病毒。在调试或修改程序时病毒由此进入网 " "络;2、与其他系统合用一网,从其它系统传染病毒,比如网络上有任何一点" "接入了互联网。3、一机多网使用,如某台计算机既在TDCS网中运用,又在互" "联网或日常办公网上使用;4、遭受恶意攻击等其他非正常途径。1.2 " "防、杀病毒案例分析:下面仅通过TDCS网络杀毒、防毒工作实例,来扩展讨 " "论TDCS系统的安全防护方案。故障分析:故障现象,某站PC机与TDCS中心的 " "多个工作站发现计算机病毒。TDCS中心维护机上发现IP地址为10.102.21.1的" "计算机,每隔2秒钟,便向中心机发送病毒。被感染的车站计算机内存显示不" "足,然后屏幕显示黑屏后计算机死机,重新启动后故障再次出现,致使与该 " "站相邻车站的PC机被迫离网关机。此种现象,遭受攻击最严重的是安装Windo" "ws2000操作系统的计算机,由于使用以来从未打过系统补丁,而且均未安装 " "防火墙和杀毒软件,日常维护根本没有开展防毒工作,因此网络根本没有抵 " "抗病毒能力。1.3 " "病毒侵入后的应急预案A、TDCS重新新配置服务器,用于管理局域网内以与基" "层网中各计算机、工作站的防毒、杀毒和升级工作,安装网络版杀毒软件和 " "防火墙。B、局域网计算机内存相应改造,以满足防病毒软件运行的根底硬件" "条件。C、TDCS维修中心安排专职技术人员,定期从指定的或服务器上下载防" "病毒升级软件和操作系统补丁,并结合年度TDCS设备集中检查指导计划开展 " "相应的维护工作,确保各站TDCS设备正常运行。D、做好系统软件的备份,包" "括每个车站的系统和数据作为光盘备份,每站的数据和系统作移动硬盘备份 " ",TDCS维护中心管理的各个工作站与维护台、前置机等也做类似的备份。E、" "要求各车间安排负责TDCS负责人员,封堵车站PC机上的I/O接口,如光驱、软" "驱、USB插口等并在主板bios里修改相应项屏蔽各端口,杜绝在车站PC机与网" "内计算机上进展与业务无关的作业内容。F、清理非法接入局域网的计算机," "查清有无一机多网的可能,并对非法接入计算机进展屏蔽。采取以上应急措 " "施后,TDCS网络安全得到了很大的提高,封堵了病毒的侵害,使操作系统与 " "各应用软件在一个相对安全的环境中工作,从而保证了TDCS的正常工作。第 " "二章 " "现有系统存在的问题与分析从现有安全设施来看,TDCS网络系统安全体系初 " "步形成。但是,随着计算机网络的日益普与和广泛使用,各种安全威胁和计 " "算机病毒也随之而来。因此,现有的网络安全系统虽然起到了较好的防护作 " "用,但并不能完全解决整个骨干网络系统的安全问题。另外,必须有一套完 " "整有效的备份方案和应急预案。2.1 直接或间接来自于Internet的安全威胁 " "这类威胁以病毒、网络攻击和黑客攻击的方式直接作用于内部网络。由于"一" "机双网〞可能性的存在,内部网络通过防火墙向外提供服务的服务器、内部 " "网络连接中产生的后门、接收电子乃至普通的Internet访问,都可能为这种 " "安全威胁提供便利条件。2.2 操作系统的安全威胁TDCS中心服务器采用Unix " "操作系统,而其他中心服务器采用何种操作系统不受限制。有资料显示Unix " "操作系统占据服务器的高端市场。虽然Unix和Windows操作系统的安全等级应" "该同属于C2级,但网络上针对对Windows系统产生的攻击相对较多,容易受到" "破坏的可能性就大。另外,服务器的应用问题80%和操作系统接口有关。在服" "务器操作系统的安装过程中"缺省安装〞,就意味着默认操作系统所有的额外" "服务和
这是原书的高清版 PDF 扫描。 这个PDF文件是我花钱买来的,现在为了挣积分,拿出来与大家分享!! 书名:Visual Basic 2008程序设计完全自学教程 作者:洪一新 出版社:清华大学出版社 出版日期:2009年1月1日 ISBN:9787302191551 字数: 页码:219 版次:第1版 装帧:平装 开本: 商品重量:821 g 编辑推荐 -------------------------------------------------------------------------------- 《Visual Basic 2008程序设计完全自学教程》特色: Visual Basic 2008 程序设计图解教学范例实践最佳入门 165个完整教学范例,462道课后习题,206个问答实践题 实力作者:台湾资深IT教育专家融Visual Basic 2008新功能和多年教学经验于一体,历时一年,倾力而为 内容全面:涵盖基础语法、面向对象编程、窗体应用程序设计、文件操作、数据库编程、网络应用开发等方面 适合自学:章首介绍学习目标,章中图解教学配合范例实践,章后提供本章重点整理及习题,尤其适合自学 资源下载:www.booksaga.com网站提供书中所有范例和章后实践题的完整源代码下载 《Visual Basic 2008 程序设计完全自学教程》特点 难易适中:以简单易懂和循序渐进的方式来阐述基本概念及其应用,有效降低学习难度 完整范例:书中所有范例都是完整程序,且注释丰富,能有效降低学习障碍 内容丰富:Visual Basic2008的基础语法、面向对象编程、窗体应用程序、文件操作、数据库编程、网络应用等所有内容,《Visual Basic 2008程序设计完全自学教程》均有介绍 习题精选:章末均安排了大量的习题与编程实践题,方便检验学习效果,其中选择题、判断题、填空题、问答题答案附于书后,实践题的完整范例代码可从网站下载 书中所有165个完整范倒的源代码 书后所有实践题的源代码 内容提要 -------------------------------------------------------------------------------- 《Visual Basic 2008 程序设计完全自学教程》详述Visual Basic 2008语言重要语法,并于书中融入165个完整程序范例和大量插图,通过这些简练的示例详解每一个知识点.由浅入深,内容详实。 《Visual Basic 2008 程序设计完全自学教程》共19章。第1-9章为Visual Basic 2008开发环境和基础语法介绍,包括程序语言机NET介绍、而向对象的程序设计、基本数据处理、流程控制、数组与字符串、过程与函数:第10-11章讲述Visual Basic2008中的面向对象概念:第12-17章则上要介绍了Visual Basic 2008 中程序设汁较为深入的内容,包括键盘及鼠标事件、常见的窗体对象、菜单与工具栏设计、绘图入门与应用、程序的调试和异常处理以及文件系统操作等:第18章为数据库编程基础篇,介绍了 ADO.NET技术以及如何利用ADO.NET进行数据库连接等。最后一章 为案例实践,利用Windows Forms制作一个完整的程序——网页浏览器,初学者可以更实际地看到Visual Basic开发网络应用程序的妙用。《Visual Basic 2008 程序设计完全自学教程》的所有程序范例都以完整程序代码说明,并加以充分注解,能有效降低学习难度。章后精心设计461个习题和编程实践题,书后附答案,非常适合自学。 《Visual Basic 2008 程序设计完全自学教程》是Visual Basic 2008入门级用户和初级开发人员的最佳自学参考用书,也可以用作相关课程的案例实践型教材。 目录 -------------------------------------------------------------------------------- 第1章 程序语言与.NET简介 1.1 程序语言概论 1.1.1 应用程序基本概念 1.1.2 程序语言的分类 1.2 程序设计简介 1.2.1 程序设计流程 1.2.2 程序评断标准 1.2.3 程序编写习惯 1.3 认识.NET 1.3.1 用户观点看NET 1.3.2 程序设计观点看NET 1.3.3 .NET与因特网 1.4 浅谈.NETFramework 1.4.1 .NETFramework架构 1.4.2 认识公共语言运行时 1.4.3 何谓WebService 本章重点整理 本章习题 第2章 VisualBasic2008Express开发环境 2.1 VisualBasic语言简介 2.1.1 VisualBasic程序语言基础 2.1.2 VisualBasic的基本特性 2.1.3 VisualBasic2008新增功能 2.2 VisualBasic开发环境的创建 2.2.1 VisualStudi02008简介 2.2.2 VisualBasic2008Express安装 2.3 VisualBasic2008Express的启动与关闭 2.3.1 项目的新建与关闭 2.3.2 打开已存在的项目 2.4 VisualBasic2008Express的开发环境 2.5 VisualBasic2008Express窗口基本操作 2.5.1 程序代码的操作 2.5.2 整窗口的大小 2.5.3 移动窗口的显示位置 本章重点整理 本章习题 第3章 创建第一个VisualBasic程序 3.1 程序开发步骤 3.2 创建控制台应用程序 3.2.1 在VisualBasic中创建项目 3.2.2 编写VisualBasic程序代码 3.2 3执行和测试程序 3.2.4 VisualBasic中的输出语句 3.2.5 在控制台应用程序中添加模块并调试执行 3.3 创建窗体应用程序 3.4 打印程序代码 本章重点整理 本章习题 第4章 基本数据处理 4.1 变量与数据类型 4.1.1 变量与常量 4.1.2 数据类型 4.2 变量与常量声明 4.2.1 数值变量 4.2.2 字符与字符串变量 4.2.3 布尔值变量 4.2.4 日期变量 4.2.5 常量 4.3 变量命名 4.3.1 命名规则 4.3.2 惯用的命名法 4.4 变量的作用域 4.4.1 认识作用域 4.4.2 变量的作用域 4.5 数据类型转换 4.5.1 隐式数据类型转换 4.5.2 显示数据类型转换 4.6 Opion语句 4.6.1 OptionExplicit 4.6.2 OptionStrict 4.6.3 OptionCompare 4.6.4 Optionlnfer 4.7 自定义类型Structure与Enum 4.8 表达式与运算符 4.8.1 算术运算符 4.8.2 赋值运算符 4.8.3 比较运算符 4.8.4 连接运算符 4.8.5 逻辑运算符 4.8.6 运算符优先级 本章重点整理 本章习题 第5章 窗体程序基础认识 5.1 窗体对象基本概念 5.1.1 与VB6.0不同概念的WindowsForms 5.1.2 窗体共享成员 5.2 窗体属性 5.2.1 窗体程序外观属性 5.2.2 窗体大小属性 5.2.3 窗体位置属性 5.3 窗体方法 5.4 窗体事件 本章重点整理 本章习题 第6章 窗体应用程序的输出与输入 第7章 流程控制 第8章 数组与字符串 第9章 过程与函数 第10章 VisualBasic与面向对象 第11章 类的应用 第12章 键盘及鼠标事件 第13章 常见的窗体对象 第14章 菜单与工具栏 第15章 绘图入门与应用 第16章 程序的调试与异常处理 第17章 文件系统操作 第18章 数据库应用程序开发 第19章 项目实务——Web网页浏览器制作 习题答案 作者介绍
目录 第一篇 .NET基础 第1章 认识ASP.NET 3.5 1.1 什么是ASP.NET 1.1.1 .NET历史与展望 1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 工具箱 1.3.5 解决方案管理器 1.3.6 属性窗口 1.3.7 错误列表窗口 1.4 安装SQL Server 2005 1.5 ASP.NET应用程序基础 1.5.1 创建ASP.NET应用程序 1.5.2 运行ASP.NET应用程序 1.5.3 编译ASP.NET应用程序 1.6 小结 第2章 C# 3.0程序设计基础 2.1 C#程序 2.1.1 C#程序的结构 2.1.2 C# IDE的代码设置 2.2 变量 2.2.1 定义 2.2.2 值类型 2.2.3 引用类型 2.3 变量规则 2.3.1 命名规则和命名习惯 2.3.2 声明并初始化变量 2.3.3 数组 2.3.4 声明并初始化字符串 2.3.5 操作字符串 2.3.6 创建和使用常量 2.3.7 创建并使用枚举 2.3.8 类型转换 2.4 编写表达式 2.4.1 表达式和运算符 2.4.2 运算符的优先级 2.5 使用条件语句 2.5.1 if语句的使用方法 2.5.2 switch选择语句的使用 2.6 使用循环语句 2.6.1 for循环语句 2.6.2 while循环语句 2.6.3 do while循环语句 2.6.4 foreach循环语句 2.7 异常处理语句 2.7.1 throw异常语句 2.7.2 try-catch异常语句 2.7.3 try-finally异常语句 2.7.4 try-catch-finally异常语句 2.8 小结 第3章 面向对象设计基础 3.1 什么是面向对象 3.1.1 传统的面向过程 3.1.2 面向对象的概念 3.1.3 面向组件的概念 3.2 面向对象的C#实现 3.2.1 定义 3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为什么要用命名空间 3.4.2 创建命名空间 3.4.3 分层设计中使用命名空间 3.5 类的方法 3.5.1 编写方法 3.5.2 给方法传递参数 3.5.3 通过引用来传递参数 3.5.4 方法的重载 3.6 封装 3.6.1 为什么要封装 3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法的抽象类 3.9.4 抽象属性 3.10 委托和事件 3.10.1 委托 3.10.2 声明事件 3.10.3 引发事件 3.10.4 订阅事件 3.10.5 委托和事件 3.11 类命名 3.11.1 命名空间的命名 3.11.2 类的命名原则 3.11.3 接口的命名原则 3.11.4 属性的命名原则 3.11.5 枚举的命名原则 3.11.6 只读字段的命名原则 3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 创建ASP.NET网站 4.1.2 单文件页模型 4.1.3 代码隐藏页模型 4.1.4 创建ASP.NET Web Application 4.1.5 ASP.NET网站和ASP.NET应用程序的区别 4.2 代码隐藏页模型的解释过程 4.3 代码隐藏页模型的事件驱动处理 4.4 ASP.NET客户端状态 4.4.1 视图状态 4.4.2 控件状态 4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 4.5 ASP.NET页面生命周期 4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) 4.6.4 页面卸载事件(Page_Unload) 4.6.5 页面指令 4.7 ASP.NET网站文件类型 4.8 小结 第二篇 ASP.NET窗体控件 第5章 Web窗体的基本控件 5.1 控件的属性 5.2 简单控件 5.2.1 标签控件(Label) 5.2.2 超链接控件(HyperLink) 5.2.3 图像控件(Image) 5.3 文本框控件(TextBox) 5.3.1 文本框控件的属性 5.3.2 文本框控件的使用 5.4 按钮控件(Button,LinkButton,ImageButton) 5.4.1 按钮控件的通用属性 5.4.2 Click单击事件 5.4.3 Command命令事件 5.5 单选控件和单选组控件(RadioButton和RadioButtonList) 5.5.1 单选控件(RadioButton) 5.5.2 单选组控件(RadioButtonList) 5.6 复选框控件和复选组控件(CheckBox和CheckBoxList) 5.6.1 复选框控件(CheckBox) 5.6.2 复选组控件(CheckBoxList) 5.7 列表控件(DropDownList,ListBox和BulletedList) 5.7.1 DropDownList列表控件 5.7.2 ListBox列表控件 5.7.3 BulletedList列表控件 5.8 面板控件(Panel) 5.9 占位控件(PlaceHolder) 5.10 日历控件(Calendar) 5.10.1 日历控件的样式 5.10.2 日历控件的事件 5.11 广告控件(AdRotator) 5.12 文件上传控件(FileUpload) 5.13 视图控件(MultiView和View) 5.14 表控件(Table) 5.15 向导控件(Wizard) 5.15.1 向导控件的样式 5.15.2 导航控件的事件 5.16 XML控件 5.17 验证控件 5.17.1 表单验证控件(RequiredFieldValidator) 5.17.2 比较验证控件(CompareValidator) 5.17.3 范围验证控件(RangeValidator) 5.17.4 正则验证控件(RegularExpressionValidator) 5.17.5 自定义逻辑验证控件(CustomValidator) 5.17.6 验证组控件(ValidationSummary) 5.18 导航控件 5.19 其他控件 5.19.1 隐藏输入框控件(HiddenField) 5.19.2 图片热点控件(ImageMap) 5.19.3 静态标签控件(Lieral) 5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第6章 Web窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件(LoginStatus) 6.1.5 密码恢复控件(PasswordRecovery) 6.1.6 密码更改控件(ChangePassword) 6.1.7 生成用户控件(CreateUserWizard) 6.2 网站管理工具 6.2.1 启动管理工具 6.2.2 用户管理 6.2.3 用户角色 6.2.4 访问规则管理 2.6.5 应用程序配置 6.3 使用登录控件 6.3.1 生成用户控件(CreateUserWizard) 6.3.2 密码更改控件(ChangePassword) 6.4 小结 第三篇 数据操作篇 第7章 数据库与ADO.NET基础 7.1 数据库基础 7.1.1 结构化查询语言 7.1.2 表和视图 7.1.3 存储过程和触发器 7.2 使用SQL Server 2005 管理数据库 7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET连接SQL数据库 7.3.1 ADO.NET基础 7.3.2 连接SQL数据库 7.3.3 ADO.NET过程 7.4 ADO与ADO.NET 7.4.1 ADO概述 7.4.2 ADO.NET与ADO 7.5 ADO.NET 常用对象 7.6 Connection连接对象 7.6.1 连接SQL数据库 7.6.2 连接Access数据库 7.6.3 打开和关闭连接 7.7 DataAdapter适配器对象 7.8 Command执行对象 7.8.1 ExecuteNonQuery方法 7.8.2 ExecuteNonQuery执行存储过程 7.8.3 ExecuteScalar方法 7.9 DataSet数据集对象 7.9.1 DataSet数据集基本对象 7.9.2 DataTable数据表对象 7.9.3 DataRow数据行对象 7.9.4 DataView数据视图对象 7.10 DataReader数据访问对象 7.10.1 DataReader对象概述 7.10.2 DataReader读取数据库 7.10.3 异常处理 7.11 连接池概述 7.12 参数化查询 7.13 小结 第8章 Web窗体的数据控件 8.1 数据源控件 8.1.1 SQL数据源控件(SqlDataSource) 8.1.2 Access数据源控件(AccessDataSource) 8.1.3 目标数据源控件(ObjectDataSource) 8.1.4 LINQ数据源控件(LinqDataSource) 8.1.5 Xml数据源控件(XmlDataSource) 8.1.6 站点导航控件(SiteMapDataSource) 8.2 重复列表控件(Repeater) 8.3 数据列表控件(DataList) 8.4 数据列表控件(GridView) 8.5 数据绑定控件(FormView) 8.6 数据绑定控件(DetailsView) 8.7 数据绑定控件(ListView) 8.8 数据绑定控件(DataPager) 8.9 小结 第9章 ASP.NET操作数据库 9.1 使用ADO.NET操作数据库 9.1.1 使用ExecuteReader()操作数据库 9.1.2 使用ExecuteNonQuery()操作数据库 9.1.3 使用ExecuteScalar()操作数据库 9.1.4 使用ExecuteXmlReader()操作数据库 9.2 ASP.NET创建和插入记录 9.2.1 SQL INSERT数据插入语句 9.2.2 使用Command对象更新记录 9.2.3 使用DataSet数据集插入记录 9.3 ASP.NET更新数据库 9.3.1 SQL UPDATE数据更新语句 9.3.2 使用Command对象更新记录 9.3.3 使用DataSet数据集更新记录 9.4 ASP.NET删除数据 9.4.1 SQL DELETE数据删除语句 9.4.2 使用Command对象删除记录 9.4.3 使用DataSet数据集删除记录 9.5 使用存储过程 9.5.1 存储过程的优点 9.5.2 创建存储过程 9.5.3 调用存储过程 9.6 ASP.NET数据库操作实例 9.6.1 制作用户界面(UI) 9.6.2 使用GridView显示、删除、修改数据 9.6.3 使用DataList显示数据 9.6.4 DataList分页实现 9.6.5 使用SQLHelper操作数据库 9.7 小结 第10章 访问其他数据源 10.1 使用ODBC .NET Data Provider 10.1.1 ODBC .NET Data Provider简介 10.1.2 建立连接 10.2 使用OLE DB.NET Data Provider 10.2.1 OLE DB.NET Data Provider简介 10.2.2 建立连接 10.3 访问MySql 10.3.1 MySql简介 10.3.2 建立连接 10.4 访问Excel 10.4.1 Excel 简介 10.4.2 建立连接 10.5 访问txt 10.5.1 使用ODBE.NET Data Provider连接txt 10.5.2 使用OLE DB .NET Data Provider 连接txt 10.5.3 使用System.IO命名空间 10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个简单的控件 11.1.3 将Web窗体转换成用户控件 11.2 自定义控件 11.2.1 实现自定义控件 11.2.2 复合自定义控件 11.3 用户控件和自定义控件的异同 11.4 用户控件示例 11.4.1 ASP.NET登录控件 11.4.2 ASP.NET登录控件的开发 11.4.3 ASP.NET登录控件的使用 11.5 自定义控件实例 11.5.1 ASP.NET分页控件 11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 CSS常用属性 12.1.4 将CSS应用在控件上 12.1.5 主题和皮肤 12.1.6 页面主题和全局主题 12.1.7 应用和禁用主题 12.1.8 用编程的方法控制主题 12.2 母版页 12.2.1 母版页基础 12.2.2 内容窗体 12.2.3 母版页的运行方法 12.2.4 嵌套母版页 12.3 Microsoft Expression 2 12.3.1 Microsoft Expression 2简介 12.3.2 安装Microsoft Expression 2 12.4 使用Microsoft Expression Web 2制作页面 12.4.1 创建ASPX页面 12.4.2 创建CSS层叠样式表 12.4.3 创建框架集 12.5 小结 第13章 ASP.NET内置对象,应用程序配置和缓存 13.1 ASP.NET内置对象 13.1.1 Request传递请求对象 13.1.2 Response请求响应对象 13.1.3 Application状态对象 13.1.4 Session状态对象 13.1.5 Server服务对象 13.1.6 Cookie状态对象 13.1.7 Cache缓存对象 13.1.8 Global.asax配置 13.2 ASP.NET应用程序配置 13.2.1 ASP.NET应用程序配置 13.2.2 Web.config配置文件 13.2.3 ASP.NET基本配置节 13.3 ASP.NET缓存功能 13.3.1 缓存概述 13.3.2 页面输出缓存 13.3.3 页面部分缓存 13.3.4 应用程序数据缓存 13.3.5 检索应用程序数据缓存对象 13.4 小结 第14章 ASP.NET XML和Web Service 14.1 XML简介 14.2 读写XML 14.2.1 XML与HTML 14.2.2 创建XML文档 14.2.3 XML控件 14.2.4 XML文件读取类(XmlTextReader) 14.2.5 XML文件编写类(XmlTextWriter) 14.2.6 XML文本文档类(XmlDocument) 14.3 XML串行化 14.3.1 XmlSerializer串行化类 14.3.2 基本串行化 14.4 XML样式表XSL 14.4.1 XSL简介 14.4.2 使用XSLT 14.5 Web服务(Web Service) 14.5.1 什么是Web服务 14.5.2 Web服务体系结构 14.5.3 Web服务协议栈 14.6 简单Web Service示例 14.7 自定义Web Service 14.7.1 创建自定义的Web Service 14.7.2 使用自定义的Web Service 14.8 小结 第五篇 ASP.NET 3.5高级编程 第15章 图形图像编程 15.1 图形图像基础 15.1.1 图像布局 15.1.2 GDI+简介 15.1.3 绘制线条示例 15.1.4 .NET Framework绘图类 15.2 图形编程 15.2.1 Graphics类 15.2.2 绘制基本图形 15.2.3 图形绘制实例 15.3 绘制文字特效 15.3.1 投影特效 15.3.2 倒影特效 15.3.3 旋转特效 15.4 绘制图片 15.4.1 载入图像文件 15.4.2 GDI+输出图像 15.5 图像特效处理 15.5.1 底片效果 15.5.2 浮雕效果 15.6 小结 第16章 ASP.NET 3.5和AJAX 16.1 AJAX基础 16.1.1 什么是AJAX 16.1.2 ASP.NET AJAX入门 16.1.3 ASP.NET 2.0 AJAX 16.1.4 ASP.NET 3.5 AJAX 16.1.5 AJAX简单示例 16.2 ASP.NET 3.5AJAX控件 16.2.1 脚本管理控件(ScriptManger) 16.2.2 脚本管理控件(ScriptMangerProxy) 16.2.3 时间控件(Timer) 16.2.4 更新区域控件(UpdatePanel) 16.2.5 更新进度控件(UpdateProgress) 16.3 AJAX编程 16.3.1 自定义异常处理 16.3.2 使用母版页的UpdatePanel 16.3.3 母版页刷新内容窗体 16.4 小结 第17章 ASP.NET MVC基础 17.1 了解MVC 17.1.1 MVC和Web Form 17.1.2 ASP.NET MVC的运行结构 17.2 ASP.NET MVC基础 17.2.1 安装ASP.NET MVC 17.2.2 新建一个MVC应用程序 17.2.3 ASP.NET MVC应用程序的结构 17.2.4 运行ASP.NET MVC应用程序 17.3 ASP.NET MVC原理 17.3.1 ASP.NET MVC运行流程 17.3.2 ASP.NET MVC工作原理 17.4 ASP.NET MVC开发 17.4.1 创建ASP.NET MVC页面 17.4.2 ASP.NET MVC 数据呈现(ViewData) 17.4.3 ASP.NET MVC 跨页数据呈现(TempData) 17.4.4 ASP.NET MVC页面重定向 17.4.5 ASP.NET MVC URL路由(URLRouting) 17.4.6 ASP.NET MVC控件辅助工具(Helper) 17.4.7 ASP.NET MVC表单传值 17.5 小结 第18章 WCF开发基础 18.1 了解WCF 18.1.1 什么是WCF 18.1.2 为什么需要WCF 18.2 WCF基础 18.2.1 服务 18.2.2 地址 18.2.3 契约 18.3 WCF应用 18.3.1 创建WCF应用 18.3.2 创建WCF方法 18.4 WCF消息传递 18.4.1 消息传递 18.4.2 消息操作 18.5 使用WCF服务 18.5.1 在客户端添加WCF服务 18.5.2 在客户端使用WCF服务 18.6 小结 第19章 WPF开发基础 19.1 了解WPF 19.1.1 什么是WPF 19.2 WPF的应用范围 19.2 WPF和Microsoft Expression 19.2.1 使用Microsoft Expression Blend设计WPF 19.2.2 WPF控件样式 19.2.3 浅谈XAML 19.2.4 WPF控件层次 19.3 WPF应用程序开发 19.3.1 WPF动画事件 19.3.2 WPF时间轴 19.3.3 WPF事件处理 19.4 WPF系统开发 19.4.1 WPF系统需求 19.4.2 WPF界面开发 19.4.3 WPF动画制作 19.4.4 WPF事件编写 19.5 小结 第六篇 ASP.NET 3.5与LINQ 第20章 ASP.NET 3.5与LINQ 20.1 什么是LINQ 20.1.1 LINQ起源 20.1.2 LINQ构架 20.1.3 LINQ与Visual Studio 2008 新特性 20.2 LINQ与Web应用程序 20.2.1 创建使用LINQ的Web应用程序 20.2.2 基本的LINQ数据查询 20.2.3 IEnumerable和IEnumerable<T>接口 20.2.4 IQueryProvider和IQueryable<T>接口 20.2.5 LINQ相关的命名空间 20.3 Lambda表达式 20.3.1 匿名方法 20.3.2 Lambda表达式基础 20.3.3 Lambda表达式格式 20.3.4 Lambda表达式树 20.3.5 访问Lambda表达式树 20.4 小结 第21章 使用LINQ查询 21.1 LINQ查询概述 21.1.1 准备数据源 21.1.2 使用LINQ 21.1.3 执行LINQ查询 21.2 LINQ查询语法概述 21.3 基本子句 21.3.1 from查询子句 21.3.2 where条件子句 21.3.3 select选择子句 21.3.4 group分组子句 21.3.5 orderby排序子句 21.3.6 into连接子句 21.3.7 join连接子句 21.3.8 let临时表达式子句 21.4 LINQ查询操作 21.4.1 LINQ查询概述 21.4.2 投影操作 21.4.3 筛选操作 21.4.4 排序操作 21.4.5 聚合操作 21.5 使用LINQ查询和操作数据库 21.5.1 简单查询 21.5.2 建立连接 21.5.3 插入数据 21.5.4 修改数据 21.5.5 删除数据 21.6 LINQ与MVC 21.6.1 创建ASP.NET MVC应用程序 21.6.2 创建LINQ to SQL 21.6.3 数据查询 21.7 小结 第七篇 ASP.NET 3.5模块开发 第22章 注册模块设计 22.1 学习要点 22.2 系统设计 22.2.1 模块功能描述 22.2.2 模块流程分析 22.3 数据库设计 22.3.1 数据库的分析和设计 22.3.2 数据表的创建 22.4 界面设计 22.4.1 基本界面 22.4.2 创建CSS 22.5 代码实现 22.5.1 验证控制 22.5.2 过滤输入信息 22.5.3 插入注册信息 22.5.4 管理员页面 22.6 实例演示 22.7 小结 第23章 登录模块设计 23.1 学习要点 23.2 系统设计 23.2.1 模块功能描述 22.2.2 模块流程分析 23.3 数据库设计 23.3.1 数据库设计分析 23.3.2 数据库表的创建 23.4 界面设计 23.4.1 基本界面 23.4.2 创建CSS 23.4.3 发送密码页面 23.5 代码实现 23.5.1 登录代码实现 23.5.2 邮件发送页面 23.5.3 根据不同的用户显示不同的内容 23.6 实例演示 23.7 小结 第24章 广告模块设计 24.1 学习要点 24.2 系统设计 24.2.1 模块功能描述 24.2.2 模块流程分析 24.3 数据库设计 24.3.1 数据库设计分析 24.3.2 数据库表的创建 24.4 界面设计 24.4.1 发布广告界面 24.4.2 发布广告页数据源配置 24.4.3 修改广告界面 24.4.4 管理广告界面 24.4.5 分类管理界面 24.5 代码实现 24.5.1 广告添加功能 24.5.2 广告修改功能 24.5.3 自定义控件的实现 24.6 实例演示 24.7 小结 第25章 新闻模块设计 25.1 学习要点 25.2 系统设计 25.2.1 模块功能描述 25.2.2 模块流程分析 25.3 数据库设计 23.3.1 数据库设计 25.3.2 数据表的创建 25.4 界面设计 25.4.1 登录界面 25.4.2 后台框架集 25.4.3 新闻发布页面 25.4.4 新闻修改页面 25.4.5 新闻管理页面 25.4.6 新闻分类管理页面 25.5 代码实现 25.5.1 导航菜单配置 25.5.2 身份验证页面 25.5.3 新闻发布页面 25.5.4 静态生成功能 25.5.5 新闻显示页面 25.5.6 静态模板编写 25.6 实例演示 25.7 小结 第26章 投票模块设计 26.1 学习要点 26.2 系统设计 26.2.1 模块功能描述 26.2.2 模块流程分析 26.3 数据库设计 26.3.1 数据库设计 26.3.2 数据表的创建 26.4 界面设计 26.4.1 后台框架集 26.4.2 投票管理页面 26.4.3 投票发布页面 26.4.4 投票修改页面 26.4.5 投票删除页面 26.5 代码实现 26.5.1 添加投票代码实现 26.5.2 修改投票代码实现 26.5.3 删除投票代码实现 26.5.4 显示投票代码实现 26.5.5 用户投票代码实现 26.6 实例演示 26.7 小结 第27章 聊天模块设计 27.1 学习要点 27.2 系统设计 27.2.1 模块功能描述 27.2.2 模块流程分析 27.3 界面设计 27.3.1 登录界面设计 27.3.2 登录界面CSS 27.3.3 聊天室显示界面 27.3.4 聊天室界面CSS 27.4 代码实现 27.4.1 登录代码实现 27.4.2 多人聊天代码实现 27.4.3 单人聊天代码实现 27.4.4 聊天记录保存实现 27.5 实例演示 27.6 小结 第六篇 ASP.NET 3.5应用实例 第28章 制作一个ASP.NET留言本 28.1 系统设计 28.1.1 需求分析 28.1.2 系统功能设计 28.1.3 模块功能划分 28.2 数据库设计 28.2.1 数据库的分析和设计 28.2.2 数据表的创建 28.2.3 数据表关系图 28.3 系统公用模块的创建 28.3.1 创建CSS 28.3.2 使用SQLHepler 28.3.3 配置Web.config 28.4 系统界面和代码实现 28.4.1 留言板用户控件 28.4.2 管理员登录实现 28.4.3 用户注册登录实现 28.4.4 用户登录实现 28.4.5 留言本界面布局 28.4.6 留言功能实现 28.4.7 回复功能实现 28.4.8 删除功能的实现 28.4.9 用户索引实现 28.5 用户体验优化 28.5.1 AJAX留言实现 28.5.2 AJAX数据重绑定 28.5.3 系统导航实现 28.5.4 侧边栏界面优化 28.6 用户功能实现 28.6.1 用户信息界面 28.6.2 用户信息修改实现 28.6.3 用户信息删除实现 28.6.4 用户注销 28.7 实例演示 28.7.1 准备数据源 28.7.2 基本实例演示 28.7.3 用户功能演示 28.8 小结 第29章 制作一个ASP.NET校友录系统 第29章 制作一个ASP.NET校友录系统 29.1 系统设计 29.1.1 需求分析 29.1.2 系统功能设计 29.1.3 模块功能划分 29.2 数据库设计 29.2.1 数据库分析和设计 29.2.2 数据表的创建 29.3 数据表关系图 29.4 系统公用模块的创建 29.4.1 使用Fckeditor 29.4.2 使用SQLHelper 29.4.3 配置Web.config 29.5 系统界面和代码实现 29.5.1 用户注册实现 29.5.2 用户登录实现 29.5.3 校友录页面规划 29.5.4 自定义控件实现 29.5.5 校友录页面实现 29.5.6 日志发布实现 29.5.7 日志修改实现 29.5.8 管理员日志删除 29.5.9 日志显示页面 29.5.10 用户索引页面 29.5.11 管理员用户删除 29.6 用户体验优化 29.6.1 超链接样式优化 29.6.2 默认首页优化 29.6.3 导航栏编写 29.6.4 AJAX留言优化 29.6.5 优化留言表情 29.7 高级功能实现 29.7.1 后台管理页面实现 29.7.2 日志管理实现 29.7.3 日志修改和删除实现 29.7.4 评论删除实现 29.7.5 板报功能实现 29.7.6 用户修改和删除实现 29.7.7 用户权限管理 29.7.8 权限及注销实现 29.8 实例演示 29.8.1 准备数据源 29.8.2 基本实例演示 29.8.3 管理后台演示 29.9 小结
这是原书的高清版 PDF 扫描。 这个PDF文件是我花钱买来的,现在为了挣积分,拿出来与大家分享!! 书名:Visual Basic 2008程序设计完全自学教程 作者:洪一新 出版社:清华大学出版社 出版日期:2009年1月1日 ISBN:9787302191551 字数: 页码:219 版次:第1版 装帧:平装 开本: 商品重量:821 g 编辑推荐 -------------------------------------------------------------------------------- 《Visual Basic 2008程序设计完全自学教程》特色: Visual Basic 2008 程序设计图解教学范例实践最佳入门 165个完整教学范例,462道课后习题,206个问答实践题 实力作者:台湾资深IT教育专家融Visual Basic 2008新功能和多年教学经验于一体,历时一年,倾力而为 内容全面:涵盖基础语法、面向对象编程、窗体应用程序设计、文件操作、数据库编程、网络应用开发等方面 适合自学:章首介绍学习目标,章中图解教学配合范例实践,章后提供本章重点整理及习题,尤其适合自学 资源下载:www.booksaga.com网站提供书中所有范例和章后实践题的完整源代码下载 《Visual Basic 2008 程序设计完全自学教程》特点 难易适中:以简单易懂和循序渐进的方式来阐述基本概念及其应用,有效降低学习难度 完整范例:书中所有范例都是完整程序,且注释丰富,能有效降低学习障碍 内容丰富:Visual Basic2008的基础语法、面向对象编程、窗体应用程序、文件操作、数据库编程、网络应用等所有内容,《Visual Basic 2008程序设计完全自学教程》均有介绍 习题精选:章末均安排了大量的习题与编程实践题,方便检验学习效果,其中选择题、判断题、填空题、问答题答案附于书后,实践题的完整范例代码可从网站下载 书中所有165个完整范倒的源代码 书后所有实践题的源代码 内容提要 -------------------------------------------------------------------------------- 《Visual Basic 2008 程序设计完全自学教程》详述Visual Basic 2008语言重要语法,并于书中融入165个完整程序范例和大量插图,通过这些简练的示例详解每一个知识点.由浅入深,内容详实。 《Visual Basic 2008 程序设计完全自学教程》共19章。第1-9章为Visual Basic 2008开发环境和基础语法介绍,包括程序语言机NET介绍、而向对象的程序设计、基本数据处理、流程控制、数组与字符串、过程与函数:第10-11章讲述Visual Basic2008中的面向对象概念:第12-17章则上要介绍了Visual Basic 2008 中程序设汁较为深入的内容,包括键盘及鼠标事件、常见的窗体对象、菜单与工具栏设计、绘图入门与应用、程序的调试和异常处理以及文件系统操作等:第18章为数据库编程基础篇,介绍了 ADO.NET技术以及如何利用ADO.NET进行数据库连接等。最后一章 为案例实践,利用Windows Forms制作一个完整的程序——网页浏览器,初学者可以更实际地看到Visual Basic开发网络应用程序的妙用。《Visual Basic 2008 程序设计完全自学教程》的所有程序范例都以完整程序代码说明,并加以充分注解,能有效降低学习难度。章后精心设计461个习题和编程实践题,书后附答案,非常适合自学。 《Visual Basic 2008 程序设计完全自学教程》是Visual Basic 2008入门级用户和初级开发人员的最佳自学参考用书,也可以用作相关课程的案例实践型教材。 目录 -------------------------------------------------------------------------------- 第1章 程序语言与.NET简介 1.1 程序语言概论 1.1.1 应用程序基本概念 1.1.2 程序语言的分类 1.2 程序设计简介 1.2.1 程序设计流程 1.2.2 程序评断标准 1.2.3 程序编写习惯 1.3 认识.NET 1.3.1 用户观点看NET 1.3.2 程序设计观点看NET 1.3.3 .NET与因特网 1.4 浅谈.NETFramework 1.4.1 .NETFramework架构 1.4.2 认识公共语言运行时 1.4.3 何谓WebService 本章重点整理 本章习题 第2章 VisualBasic2008Express开发环境 2.1 VisualBasic语言简介 2.1.1 VisualBasic程序语言基础 2.1.2 VisualBasic的基本特性 2.1.3 VisualBasic2008新增功能 2.2 VisualBasic开发环境的创建 2.2.1 VisualStudi02008简介 2.2.2 VisualBasic2008Express安装 2.3 VisualBasic2008Express的启动与关闭 2.3.1 项目的新建与关闭 2.3.2 打开已存在的项目 2.4 VisualBasic2008Express的开发环境 2.5 VisualBasic2008Express窗口基本操作 2.5.1 程序代码的操作 2.5.2 整窗口的大小 2.5.3 移动窗口的显示位置 本章重点整理 本章习题 第3章 创建第一个VisualBasic程序 3.1 程序开发步骤 3.2 创建控制台应用程序 3.2.1 在VisualBasic中创建项目 3.2.2 编写VisualBasic程序代码 3.2 3执行和测试程序 3.2.4 VisualBasic中的输出语句 3.2.5 在控制台应用程序中添加模块并调试执行 3.3 创建窗体应用程序 3.4 打印程序代码 本章重点整理 本章习题 第4章 基本数据处理 4.1 变量与数据类型 4.1.1 变量与常量 4.1.2 数据类型 4.2 变量与常量声明 4.2.1 数值变量 4.2.2 字符与字符串变量 4.2.3 布尔值变量 4.2.4 日期变量 4.2.5 常量 4.3 变量命名 4.3.1 命名规则 4.3.2 惯用的命名法 4.4 变量的作用域 4.4.1 认识作用域 4.4.2 变量的作用域 4.5 数据类型转换 4.5.1 隐式数据类型转换 4.5.2 显示数据类型转换 4.6 Opion语句 4.6.1 OptionExplicit 4.6.2 OptionStrict 4.6.3 OptionCompare 4.6.4 Optionlnfer 4.7 自定义类型Structure与Enum 4.8 表达式与运算符 4.8.1 算术运算符 4.8.2 赋值运算符 4.8.3 比较运算符 4.8.4 连接运算符 4.8.5 逻辑运算符 4.8.6 运算符优先级 本章重点整理 本章习题 第5章 窗体程序基础认识 5.1 窗体对象基本概念 5.1.1 与VB6.0不同概念的WindowsForms 5.1.2 窗体共享成员 5.2 窗体属性 5.2.1 窗体程序外观属性 5.2.2 窗体大小属性 5.2.3 窗体位置属性 5.3 窗体方法 5.4 窗体事件 本章重点整理 本章习题 第6章 窗体应用程序的输出与输入 第7章 流程控制 第8章 数组与字符串 第9章 过程与函数 第10章 VisualBasic与面向对象 第11章 类的应用 第12章 键盘及鼠标事件 第13章 常见的窗体对象 第14章 菜单与工具栏 第15章 绘图入门与应用 第16章 程序的调试与异常处理 第17章 文件系统操作 第18章 数据库应用程序开发 第19章 项目实务——Web网页浏览器制作 习题答案 作者介绍
管理系统操作日志是指在管理系统中记录用户操作行为的一种记录方式,可以用来跟踪用户的操作行为,监控系统的运行情况,以及追查系统中出现的问题。 在设计管理系统操作日志时,需要考虑以下几点: 1. 记录内容:需要记录哪些用户操作行为?一般来说,需要记录用户的登录、登出、新增、修改、删除等操作。 2. 记录格式:操作日志应该采用什么格式进行记录?可以考虑采用JSON格式进行记录,方便日后的数据处理和分析。 3. 存储位置:操作日志应该存储在哪里?可以考虑将操作日志存储在数据库中,或者存储在文件中。 4. 记录方式:操作日志应该如何记录?可以考虑通过代码编写,在关键业务逻辑处添加日志记录代码,或者通过AOP(面向切面编程)的方式进行记录。 以下是一个操作日志类的示例代码: ```java public class OperationLog { // 用户名 private String username; // 操作时间 private String operateTime; // 操作内容 private String operateContent; // 操作结果 private String operateResult; public OperationLog(String username, String operateTime, String operateContent, String operateResult) { this.username = username; this.operateTime = operateTime; this.operateContent = operateContent; this.operateResult = operateResult; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getOperateTime() { return operateTime; } public void setOperateTime(String operateTime) { this.operateTime = operateTime; } public String getOperateContent() { return operateContent; } public void setOperateContent(String operateContent) { this.operateContent = operateContent; } public String getOperateResult() { return operateResult; } public void setOperateResult(String operateResult) { this.operateResult = operateResult; } } ``` 该类中包含了操作日志需要记录的基本信息,包括用户名、操作时间、操作内容和操作结果等。在系统中进行关键操作时,可以通过该类进行操作日志的记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值