VB课程设计报告

时间:2024.12.1

Visual Basic课程设计报告

报告人:王菁

一、     题目介绍及功能要求

每个现代人都有众多的亲戚、朋友、业务伙伴的通讯信息(包括姓名、性别、生日、工作单位、电话号码和邮政编码等)需要维护。平常所使用的纸质通讯录不便于管理大量的通讯录信息,特别是查询起来相当费事。本题目要求编制一个通讯录管理程序,实现通讯录信息的添加、修改、删除和查询功能。

二、     所含控件名称

命令按钮控件、文本框控件、标签控件、列表框控件、图片框控件、滚动条控件、组合框控件、动态数组控件、日期选择器控件

三、     新控件简介

1.      DTPicker控件

日期选择器控件,是专为用户输入单个日期设计的,一般状态下它像个组合框,可以单独编辑器中日期的年、月、日数值。单击右边下拉按钮时,会弹出一个月历控件,从中可以方便的单击选择一个日期,当Value值改变时引发Change事件。本程序中编写Birthday = DTPicker1.Value语句对该控件进行应用。

2.      配置文件的应用

配置文件是一种特殊格式的文本文件,一般以.ini为扩展名。配置文件中的空行被忽略,以分号“;”开头的行作为注释内容也被忽略。节名不能重复,同节中的键名也不能重复。本例中[Record1] [Record2] [Record3]等即为节名,姓名、性别、邮政编码、手机、电子邮件、出生日期、所在城市、工作单位、住宅电话、办公电话、照片、职务职称、地址即为键名。因为配置文件的特殊格式,Windows提供了专门的API函数对其进行读写,与一般的文本文件读写操作相比更加简便,配置文件的读写不必使用Open、Close、Write、Input等顺序文件的文件操作语句。

可以使用WritePrivateProfileString函数在配置文件的指定节中写入一个键,此函数的声明语句如下:Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long   使用时如果指定的文件不存在会自动创建,如果文件中无指定的节名也会自动创建,如果指定的节名中已有同名的键,会被新值覆盖。

可以使用GetPrivateProfileString函数在配置文件的指定节中读出一个键,此函数的声明语句如下:Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long 注意:对应于lpReturnedString  参数的变量应是一个足够长的字符串变量,否则不能容纳读出的字符。nSize参数的值不能大于lpReturnedString参数的实际长度。

四、     运行界面和功能

此界面为主界面,可用来显示各个联系人的信息。

此界面为添加联系人界面,在此界面可以输入新的人员信息然后保存。

此界面为修改当前记录界面,可修改除姓名外的所有信息,点击确定保存。

五、     遇到的困难及解决办法

1.多个变量的处理

本来想使用各个变量单独定义的方法,发现太麻烦,不仅编写程序麻烦,而且录入信息、修改信息、保存信息也很麻烦。后来参考课本上的提示,选择了动态数组控件,解决了这个问题。

Public Type Addr

    Name As String * 4          '姓名

    Sex As Boolean              '性别

    Birthday As Date            '生日

    City As String * 20         '所在城市

    Title  As String * 6        '职务职称

    Company As String * 30      '工作单位

    Address As String * 30      '地址

    Tel_Home As String * 8      '住宅电话

    Tel_Office As String * 8    '办公电话

    Mobile As String * 11       '手机

    PostalCode As String * 6    '邮编

    Email As String * 40        '电子邮件地址

    photo As Boolean            '是否有照片

    Deleted As Boolean          '是否被删除

    Modified As Boolean         '是否被修改

End Type

Public Addrs() As Addr          '通讯录信息

Public RecNum As Integer        '通讯录记录数

2.通讯录信息的保存

本来想使用写顺序文件的语句即“Write #文件号,一个或多个参数,|;”,发现用这种方式保存的文件阅读起来很困难,因为信息是按照属性顺次输出的,而不是每个人的信息在一起,造成文件中的信息混乱无章,查阅不方便。后来根据课本上的提示,选择使用配置文件格式将通讯录信息保存在Abbr.ini文件中,每个人的信息保存在单独的一节中,阅读起来比较清晰明了。文件的最后有“[系统]”节,其中保存了用到的所有城市名和职务名。虽然读写速度较慢,但比写顺序文件的操作还是方便很多。

For i = 1 To RecNum

        If Not Addrs(i).Deleted Then

            WritePrivateProfileString "Record" & i, "姓名", Addrs(i).Name, App.Path & "\addr.ini"

            If Addrs(i).Sex Then

                WritePrivateProfileString "Record" & i, "性别", "男", App.Path & "\addr.ini"

            Else

                WritePrivateProfileString "Record" & i, "性别", "女", App.Path & "\addr.ini"

            End If

            WritePrivateProfileString "Record" & i, "邮政编码", Addrs(i).PostalCode, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "手机", Addrs(i).Mobile, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "电子邮件", Addrs(i).Email, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "出生日期", CStr(Addrs(i).Birthday), App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "所在城市", Addrs(i).City, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "工作单位", Addrs(i).Company, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "住宅电话", Addrs(i).Tel_Home, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "办公电话", Addrs(i).Tel_Office, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "照片", CStr(Addrs(i).photo), App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "职务职称", Addrs(i).Title, App.Path & "\addr.ini"

            WritePrivateProfileString "Record" & i, "地址", Addrs(i).Address, App.Path & "\addr.ini"

        End If

    Next

使用WritePrivateProfileString函数在配置文件的指定节中写入一个键,此函数的声明语句在标准模块中。

保存以后下一次操作时读取信息也很方便,不需要用Get语句,而是直接使用GetPrivateProfileString函数。

n = GetPrivateProfileString("系统", "城市名", "", s, 99, App.Path & "\addr.ini")        '读入城市名称

    s = Left(s, n)

    n = DivideString(s, ",", Cities)

    For i = 1 To n

        comCity.AddItem Cities(i)

    Next

   

    '读入职务名==============================

    n = GetPrivateProfileString("系统", "职务名", "", s, 99, App.Path & "\addr.ini")

    s = Left(s, n)

    n = DivideString(s, ",", Titles)

   

    For i = 1 To n

        comTitle.AddItem Titles(i)

    Next

   

   

    i = 0

   

    Do

        i = i + 1

        n = GetPrivateProfileString("Record" & i, "姓名", "", s, 99, App.Path & "\addr.ini")

       

        If n < 2 Then Exit Do

        ReDim Preserve Addrs(i)

      

        Addrs(i).Name = Left(s, n / 2)

       

        n = GetPrivateProfileString("Record" & i, "性别", "", s, 99, App.Path & "\addr.ini")

        If Left(s, n / 2) = "男" Then           '一个汉字两上字节

            Addrs(i).Sex = True

        Else

            Addrs(i).Sex = False

        End If

        n = GetPrivateProfileString("Record" & i, "邮政编码", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).PostalCode = s

        n = GetPrivateProfileString("Record" & i, "手机", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Mobile = s

        n = GetPrivateProfileString("Record" & i, "电子邮件", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Email = s

        n = GetPrivateProfileString("Record" & i, "出生日期", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Birthday = s

        n = GetPrivateProfileString("Record" & i, "所在城市", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).City = s

        n = GetPrivateProfileString("Record" & i, "工作单位", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Company = s

        n = GetPrivateProfileString("Record" & i, "住宅电话", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Tel_Home = s

        n = GetPrivateProfileString("Record" & i, "办公电话", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Tel_Office = s

        n = GetPrivateProfileString("Record" & i, "照片", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).photo = CBool(Left(s, n))

        n = GetPrivateProfileString("Record" & i, "职务职称", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Title = Left(s, n)

        n = GetPrivateProfileString("Record" & i, "地址", "", s, 99, App.Path & "\addr.ini")

        Addrs(i).Address = Left(s, n)

使用GetPrivateProfileString函数在配置文件的指定节中读出一个键,此函数的声明语句在标准模块中。注意:对应于lpReturnedString  参数的变量应是一个足够长的字符串变量,否则不能容纳读出的字符。nSize参数的值不能大于lpReturnedString参数的实际长度。

六、心得体会

要善于看课本上的提示,有时控件的功能达不到要求,要尝试更换其他控件。新控件的学习虽然不是一帆风顺的,但是学习以后可以让程序更加简洁方便。

更多相关推荐:
课程设计报告

1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是船舶总体设计的重要组成部分通过课程设计的训练力求使学生实现从学生到船舶设计师的角...

课程设计报告内容

一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3掌握迪杰斯特拉以及Prim等基本算法思想4掌握if语句及switch语句的运用方...

课程设计报告

中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名1000301232廖壁波指导老师20xx年12月13日中国计量学院信息工程学院课程设计报...

课程设计报告模板

信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年月目录目录1设计任务12需求分析121基础功能122扩展功能13系统概要设计13...

课程设计报告

扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题问题描述若要在扬州大学的八个居民区A区B区C区D区E区F区G区H区之间架设自来水...

课程设计报告

系统软件课程设计时钟中断与进程调度学号姓名指导教师11070319许明秀金雪云20xx年12月一报告摘要进程调度是操作系统十分重要的一个部分在操作系统的设计过程中进程调度和时钟中断形成了密不可分的关系系统时钟定...

计算机高级语言课程设计报告—学生成绩管理系统

计算机高级语言课程设计报告学生成绩管理系统班级:学号:姓名:日期:20##年1月18日一.课程设计题目与要求实习题目:学生成绩管理系统【实习内容】C++语言,面向对象的分析与设计。【基本要求】学生成绩管理是高等…

网页课程设计与报告

存档资料成绩:华东交通大学理工学院课程设计报告书所属课程名称网页设计与制作课程设计题目网站首页分院电信分院专业班级信息管理与信息系统1班学号##学生姓名何XX指导教师##20##年12月24日目录第一章绪论..…

简易温度控制系统(课设报告)

长安大学单片机课程设计-简易温度控制系统-专业:电气工程及其自动化学号:姓名:指导老师:时间:20##.12.30摘要随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已…

Java课程设计报告模板

Java程序设计课程设计报告(20##--20##年度第1学期)Hannio塔专业:计算机科学技术(网络工程)学生姓名:##班级:B计算机##学号:##指导教师:##完成日期:20##年1月8日目录目录...2…

计算机网络课程设计报告

计算机网络课程设计报告一.课程设计的题目、目的及要求.........................................................2二.课程设计的内容(分析和设计).....…

软件课程设计报告

任务书北京信息科技大学计算机软件基础课程设计题目从某个源点到其余各顶点的最短路径学院专业学生姓名班级学号指导老师起止时间任务书1摘要摘要本次课程设计的问题假设西安北京沈阳武汉4个城市构成小型交通网4个城市表示图...

课程设计报告(33篇)