以下是主窗体源代码
- 格式:rtf
- 大小:59.64 KB
- 文档页数:14
源程序1.主窗体Private Sub add_back_Click()frmbackbookinfo.ShowEnd SubPrivate Sub add_binf_Click()frmaddbookinfo.ShowEnd SubPrivate Sub add_book_style_Click()frmaddbookstyle。
ShowEnd SubPrivate Sub add_manager_Click()frmadduser.ShowEnd SubPrivate Sub add_rinf_Click() frmaddreaderinfo.ShowEnd SubPrivate Sub add_rstyle_Click()frmaddreaderstyle.ShowEnd SubPrivate Sub change_binf_Click() frmmodifybookinfo。
ShowEnd SubPrivate Sub change_book_style_Click()frmmodifybookstyle。
ShowEnd SubPrivate Sub delete_binf_Click()frmmodifybookinfo。
ShowEnd SubPrivate Sub delete_book_style_Click()frmmodifybookstyle.ShowEnd SubPrivate Sub delete_rstyle_Click()frmmodifyreaderstyle。
ShowEnd SubPrivate Sub exit_Click()EndEnd SubPrivate Sub find_binf_Click()frmfindbook。
ShowEnd SubPrivate Sub find_lend_Click()frmfindborrowinfo。
ShowEnd SubPrivate Sub find_rinf_Click()frmfindreader.ShowEnd SubPrivate Sub password_Click()frmchangepwd。
c语言编写窗体程序C语言编写窗体程序序号:1窗体程序是一种图形用户界面(GUI)应用程序,它通过使用窗口、按钮、文本框等可视化元素来与用户进行交互。
C语言是一种通用的编程语言,它也可以用于编写窗体程序。
虽然C语言相对于其他专门用于GUI开发的语言来说,可能会更加复杂一些,但是通过使用合适的库和工具,我们仍然能够编写出功能强大且高质量的窗体程序。
本文将介绍如何使用C语言编写窗体程序,并探讨一些相关的主题和概念。
序号:2编写窗体程序需要选择一个适合的库或框架。
在C语言中,有一些常用的库可以用于GUI开发,例如GTK+、Qt和WinAPI等。
这些库为我们提供了创建窗体、按钮等控件以及处理用户输入的功能。
需要根据自己的需求和偏好选择合适的库。
序号:3一种常用的库是GTK+,它是一个跨平台的GUI库,可以在多个操作系统上运行。
使用GTK+编写窗体程序可以很容易地创建各种控件,并通过信号和回调函数处理用户输入。
GTK+库的安装和配置相对简单,可以在Linux、Windows和Mac等平台上使用。
接下来是一个使用GTK+库编写的简单窗体程序的示例:```c#include <gtk/gtk.h>static void on_button_clicked(GtkWidget *widget, gpointer data) {g_print("Hello, World!\n");}int main(int argc, char *argv[]){gtk_init(&argc, &argv);GtkWidget *window;GtkWidget *button;window = gtk_window_new(GTK_WINDOW_TOPLEVEL);button = gtk_button_new_with_label("Click Me");g_signal_connect(button, "clicked",G_CALLBACK(on_button_clicked), NULL);g_signal_connect(window, "destroy",G_CALLBACK(gtk_main_quit), NULL);gtk_container_add(GTK_CONTAINER(window), button);gtk_widget_show_all(window);gtk_main();return 0;}```序号:4在上述示例中,我们首先包含了GTK+库的头文件,并定义了一个按钮点击事件的回调函数`on_button_clicked`。
音乐播放器设计一、先来欣赏一下本音乐播放器的最终效果吧:设计思路很简单,即下面两个窗体的设计。
二、主窗体(form1)界面设计如下:主窗体(form1)代码如下:Dim t As Integer, a As BooleanDim p As Integer, b, w As Boolean, onePrivate Sub allclear_Click()'清空播放列表List1.ClearWMP1.currentPlaylist.ClearForm1.Caption = "无任何曲目"End SubPrivate Sub allloop_Click()'全部循环播放Timer3.Enabled = Falseallloop.Checked = Trueoneloop.Checked = Falserand.Checked = Falserule.Checked = FalseCall WMP1.settings.setMode("loop", True)End SubPrivate Sub Form_Load()'初始化Form1.Height = 7800w = Falseallloop.Checked = Falseoneloop.Checked = Falserand.Checked = Falserule.Checked = TrueLabel2.Caption = "00:00"'第一次打开时创建文件If Dir("filepath.text") = "" And Dir("C:\music.txt") = "" ThenOpen "C:\filepath.txt" For Output As #1Close #1Open "C:\music.txt" For Output As #2Close #2End If'读取文件Open "C:\filepath.txt" For Input As #1Open "C:\music.txt" For Input As #2Do While Not EOF(1)Input #1, XInput #2, YIf Dir(X) <> "" ThenList1.AddItem (List1.ListCount + 1) & "." & YCall WMP1.currentPlaylist.insertItem(WMP1.currentPlaylist.Count, WMP1.newMedia(X)) End IfLoopClose #1Close #2'初始化If List1.ListCount <> 0 Then List1.Selected(0) = TruePicture3(0).Width = 114Picture3(0).Height = 52Picture3(0).PaintPicture Picture2(0).Picture, 0, 0, 114, 52, 0, 0, 114, 52Picture3(1).PaintPicture Picture2(2).Picture, 0, 0, 60, 52, 0, 0, 60, 52Picture3(2).PaintPicture Picture2(3).Picture, 0, 0, 83, 52, 0, 0, 83, 52Picture3(4).PaintPicture Picture2(5).Picture, 0, 0, 60, 52, 0, 0, 60, 52Picture3(3).PaintPicture Picture2(4).Picture, 0, 0, 83, 52, 0, 0, 83, 52Picture11.PaintPicture Picture12.Picture, 0, 0, 19, 23, 0, 0, 19, 23a = FalseCall WMP1.settings.setMode("shuffle", False) '初始设置为顺序播放Label1.Caption = Mid(List1.List(0), InStr(List1.List(0), ".") + 1)sd1.Value = 50 '音量设置为50%End SubPrivate Sub List1_DblClick()'双击播放Call WMP1.Controls.playItem(WMP1.currentPlaylist.Item(List1.ListIndex))a = Truet = 1Picture3(0).PaintPicture Picture2(1).Picture, 0, 0, 114, 52, 0, 0, 114, 52End SubPrivate Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If X > List1.Width - 430 Thenw = TrueEnd IfEnd SubPrivate Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '伸缩播放列表If X > List1.Width - 430 And X < List1.Width - 330 ThenList1.MousePointer = 9ElseList1.MousePointer = 0End IfIf w = True And X > 1500 And X < 5800 ThenList1.Width = XEnd IfEnd SubPrivate Sub List1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)w = FalseEnd SubPrivate Sub List1_Scroll()List1.MousePointer = 0End SubPrivate Sub oneloop_Click()'单曲循环allloop.Checked = Falseoneloop.Checked = Truerand.Checked = Falserule.Checked = FalseTimer3.Enabled = TrueEnd SubPrivate Sub Pc13_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) '播放进度控制If WMP1.playState = wmppsPlaying ThenWMP1.Controls.currentPosition = WMP1.currentMedia.duration * X / 233Pc13.ClsPc13.PaintPicture Pc14.Picture, 0, 0, 233, 17, 234 - X, 0, 233, 17End IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '切换图片If t = 0 ThenPicture3(0).PaintPicture Picture2(0).Picture, 0, 0, 114, 52, 0, 0, 114, 52End IfIf t = 1 ThenPicture3(0).PaintPicture Picture2(1).Picture, 0, 0, 114, 52, 0, 0, 114, 52End IfPicture3(1).PaintPicture Picture2(2).Picture, 0, 0, 60, 52, 0, 0, 60, 52Picture3(2).PaintPicture Picture2(3).Picture, 0, 0, 83, 52, 0, 0, 83, 52Picture3(4).PaintPicture Picture2(5).Picture, 0, 0, 60, 52, 0, 0, 60, 52Picture3(3).PaintPicture Picture2(4).Picture, 0, 0, 83, 52, 0, 0, 83, 52End SubPrivate Sub Picture10_Click()'打开搜索窗体Form2.ShowEnd SubPrivate Sub Picture11_Click()'设置静音sd1.Value = 0Picture11.PaintPicture Picture12.Picture, 0, 0, 19, 23, 38, 0, 19, 23End SubPrivate Sub Picture3_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)If Index = 0 ThenIf a = True ThenCall WMP1.Controls.pause '播放ElseCall WMP1.Controls.play '暂停End IfEnd IfIf Index = 3 Thenp = 1Call WMP1.Controls.Next '下一首p = 0End IfIf Index = 2 Thenp = 1Call WMP1.Controls.previous '上一首p = 0End IfIf Index = 4 Then Call WMP1.Controls.stop '停止播放'打开音乐文件If Index = 1 ThenCommonDialog1.DialogTitle = "打开音乐文件"CommonDialog1.Filter = "mp3|*.mp3|wma|*.wma"CommonDialog1.InitDir = "D:\"CommonDialog1.ShowOpenfname = CommonDialog1.FileTitlegname = CommonDialog1.FileNameIf fname <> "" Thenn = Len(fname)For i = 0 To List1.ListCount - 1If Right(List1.List(i), n - 4) = Left(fname, n - 4) ThenCall WMP1.Controls.playItem(WMP1.currentPlaylist.Item(i)) '播放添加后的歌曲Timer1.Enabled = TrueList1.ListIndex = iExit SubEnd IfNextList1.AddItem (List1.ListCount + 1) & "." & Left(fname, n - 4) '歌曲无重复则添加到播放列表,否则不再添加Call WMP1.currentPlaylist.insertItem(WMP1.currentPlaylist.Count, WMP1.newMedia(gname))List1.ListIndex = List1.ListCount - 1List1.Selected(i) = TrueCall WMP1.Controls.playItem(WMP1.currentPlaylist.Item(List1.ListIndex))Timer1.Enabled = TrueEnd IfEnd IfEnd SubPrivate Sub Picture3_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)'根据不同情况切换图片,实现动态按钮功能If Index = 0 ThenIf t = 0 ThenIf X < 6 Or X > 80 Or Y < 6 Or Y > 48 ThenPicture3(0).PaintPicture Picture2(0).Picture, 0, 0, 114, 52, 0, 0, 114, 52ElsePicture3(0).PaintPicture Picture2(0).Picture, 0, 0, 114, 52, 228, 0, 114, 52End IfEnd IfIf t = 1 ThenIf X < 6 Or X > 80 Or Y < 6 Or Y > 48 ThenPicture3(0).PaintPicture Picture2(1).Picture, 0, 0, 114, 52, 0, 0, 114, 52ElsePicture3(0).PaintPicture Picture2(1).Picture, 0, 0, 114, 52, 228, 0, 114, 52End IfEnd IfEnd IfIf Index = 1 ThenIf X < 6 Or X > 55 Or Y < 6 Or Y > 48 ThenPicture3(1).PaintPicture Picture2(2).Picture, 0, 0, 60, 52, 0, 0, 60, 52ElsePicture3(1).PaintPicture Picture2(2).Picture, 0, 0, 60, 52, 60, 0, 60, 52End IfEnd IfIf Index = 2 ThenIf X < 6 Or X > 65 Or Y < 6 Or Y > 48 ThenPicture3(2).PaintPicture Picture2(3).Picture, 0, 0, 83, 52, 0, 0, 83, 52ElsePicture3(2).PaintPicture Picture2(3).Picture, 0, 0, 83, 52, 83, 0, 83, 52End IfEnd IfIf Index = 3 ThenIf X < 6 Or X > 65 Or Y < 6 Or Y > 48 ThenPicture3(3).PaintPicture Picture2(4).Picture, 0, 0, 83, 52, 0, 0, 83, 52ElsePicture3(3).PaintPicture Picture2(4).Picture, 0, 0, 83, 52, 166, 0, 83, 52End IfEnd IfIf Index = 4 ThenIf X < 6 Or X > 55 Or Y < 6 Or Y > 48 ThenPicture3(4).PaintPicture Picture2(5).Picture, 0, 0, 60, 52, 0, 0, 60, 52ElsePicture3(4).PaintPicture Picture2(5).Picture, 0, 0, 60, 52, 120, 0, 60, 52End IfEnd IfEnd SubPrivate Sub Picture4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '图片切换'If t = 0 ThenPicture3(0).PaintPicture Picture2(0).Picture, 0, 0, 114, 52, 0, 0, 114, 52End IfIf t = 1 ThenPicture3(0).PaintPicture Picture2(1).Picture, 0, 0, 114, 52, 0, 0, 114, 52End IfPicture3(1).PaintPicture Picture2(2).Picture, 0, 0, 60, 52, 0, 0, 60, 52Picture3(2).PaintPicture Picture2(3).Picture, 0, 0, 83, 52, 0, 0, 83, 52Picture3(4).PaintPicture Picture2(5).Picture, 0, 0, 60, 52, 0, 0, 60, 52Picture3(3).PaintPicture Picture2(4).Picture, 0, 0, 83, 52, 0, 0, 83, 52End SubPrivate Sub Picture5_Click()'显示或隐藏播放列表If b = 0 ThenForm1.Width = 5940Form1.Height = 3900b = 1Picture5.ToolTipText = "显示播放列表"ElseForm1.Width = 5940Form1.Height = 7800b = 0Picture5.ToolTipText = "隐藏播放列表"End IfEnd SubPrivate Sub Picture6_Click()'最小化窗体Form1.WindowState = 1End SubPrivate Sub Picture7_Click()'关闭窗体之前保存播放列表数据Open "C:\filepath.txt" For Output As #1Open "C:\music.txt" For Output As #2For i = 0 To List1.ListCount - 1n = InStr(List1.List(i), ".")Write #1, WMP1.currentPlaylist.Item(i).sourceURLWrite #2, Mid(List1.List(i), n + 1)NextClose #1Close #2EndEnd SubPrivate Sub Picture8_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) '播放模式设置菜单PopupMenu menusetEnd SubPrivate Sub Picture9_Click()'删除菜单PopupMenu gclearEnd SubPrivate Sub rand_Click()'随机播放Timer3.Enabled = Falseallloop.Checked = Falseoneloop.Checked = Falserand.Checked = Truerule.Checked = FalseCall WMP1.settings.setMode("shuffle", True)End SubPrivate Sub rule_Click()'顺序播放Timer3.Enabled = Falseallloop.Checked = Falseoneloop.Checked = Falserand.Checked = Falserule.Checked = TrueCall WMP1.settings.setMode("shuffle", False)End SubPrivate Sub sd1_Change()'音量控制条WMP1.settings.volume = sd1.Valuesd1.ToolTipText = "音量" & sd1.Value & "%'"If sd1.Value = 0 Then sd1.ToolTipText = "静音"If sd1.Value = 100 Then sd1.ToolTipText = "最大音量"If sd1.Value <> 0 ThenPicture11.PaintPicture Picture12.Picture, 0, 0, 19, 23, 0, 0, 19, 23End IfEnd SubPrivate Sub select_Click()'删除选中项For i = 0 To List1.ListCount - 1If List1.Selected(i) ThenList1.RemoveItem (i)m = iCall WMP1.currentPlaylist.RemoveItem(WMP1.currentPlaylist.Item(i)) Exit ForEnd IfNextFor i = 0 To List1.ListCount - 1n = InStr(List1.List(i), ".")List1.List(i) = (i + 1) & "." & Mid(List1.List(i), n + 1)NextIf List1.ListCount = 0 Then Exit SubIf List1.ListCount = m ThenList1.Selected(m - 1) = TrueElseList1.Selected(m) = TrueEnd IfEnd SubPrivate Sub Timer1_Timer()'更新播放动态If WMP1.currentPlaylist.Count <> 0 ThenIf WMP1.playState = 3 ThenLabel2.Caption = WMP1.Controls.currentPositionStringPicture3(0).PaintPicture Picture2(1).Picture, 0, 0, 114, 52, 0, 0, 114, 52a = Truet = 1Picture3(0).ToolTipText = "播放"ElseLabel2.Caption = "00:00"Picture3(0).PaintPicture Picture2(0).Picture, 0, 0, 114, 52, 0, 0, 114, 52a = Falset = 0Picture3(0).ToolTipText = "暂停"End IfEnd IfIf WMP1.playState = 2 ThenLabel2.Caption = WMP1.Controls.currentPositionString '显示播放进度(时间)End IfPc13.ClsIf WMP1.playState = 3 Or WMP1.playState = 2 ThenPc13.PaintPicture Pc14.Picture, 0, 0, 233, 17, 234 - 233 * WMP1.Controls.currentPosition / WMP1.currentMedia.duration, 0, 233, 17End IfEnd SubPrivate Sub Timer2_Timer()'标题动态显示If WMP1.currentPlaylist.Count <> 0 ThenIf WMP1.playState <> 3 ThenForm1.Caption = "暂停播放——" + WMP1.currentMedia.getItemInfo("title")ElseForm1.Caption = "正在播放——" + WMP1.currentMedia.getItemInfo("title")End IfEnd IfEnd SubPrivate Sub Timer3_Timer()'单曲循环If WMP1.currentMedia.duration - 0.5 < WMP1.Controls.currentPosition ThenCall WMP1.Controls.playItem(WMP1.currentPlaylist.Item(one))End IfEnd SubPrivate Sub WMP1_OpenStateChange(ByVal NewState As Long)n = 0If p = 0 ThenFor i = 0 To List1.ListCount - 1If WMP1.currentPlaylist.Item(i).getItemInfo("title") <> WMP1.currentMedia.getItemInfo("title") Thenn = n + 1ElseExit ForEnd IfNextone = nLabel1.Caption = Mid(List1.List(n), InStr(List1.List(n), ".") + 1) '显示正在播放的曲目List1.Selected(n) = TrueEnd IfLabel3.Caption = WMP1.currentMedia.durationString '显示歌曲总长End Sub三、副窗体(form1)界面设计如下:说明:该窗体用于搜索电脑已有歌曲(本音乐播放器的特色所在)副窗体(form1)代码如下:Dim n As Integer, temp(10000) As String, m As IntegerPrivate Sub choose_Click()'选择全部歌曲For i = 0 To List2.ListCount - 1List2.Selected(i) = TrueNext iEnd SubPrivate Sub choosenone_Click()'清除选择For i = 0 To List2.ListCount - 1List2.Selected(i) = FalseNext iEnd SubPrivate Sub Command1_Click()'搜索歌曲并保存Open "C:\searchresult.txt" For Output As #1Open "C:\geresult.txt" For Output As #2List2.ClearDim s As StringCall find(Combo1.Text)If m = n Then s = MsgBox("搜索完毕", vbInformation, "提示")Close #1Close #2End SubPrivate Sub Command2_Click()'将选中歌曲添加到播放列表For i = 0 To List2.ListCount - 1t = 0If List2.Selected(i) = True ThenFor j = 0 To Form1.List1.ListCount - 1n = Len(List2.List(i))If Right(Form1.List1.List(j), n) = List2.List(i) Then t = t + 1: Exit ForNextIf t = 0 ThenForm1.List1.AddItem (Form1.List1.ListCount + 1) & "." & List2.List(i)Call Form1.WMP1.currentPlaylist.insertItem(Form1.WMP1.currentPlaylist.Count, Form1.WMP1.newMedia(List3.List(i)))End IfEnd IfNext iFor i = 1 To List2.SelCountFor j = 0 To List2.ListCount - 1If List2.Selected(j) ThenList2.RemoveItem jList3.RemoveItem jExit ForEnd IfNext jNext is = MsgBox("已添加到播放列表", vbInformation, "提示")End SubPrivate Sub Command3_Click()'读取文件(上次最后一次搜索结果)If Dir("C:\searchresult.txt") <> "" And Dir("C:\geresult.txt") <> "" ThenOpen "C:\searchresult.txt" For Input As #1Open "C:\geresult.txt" For Input As #2Do While Not EOF(1)Input #1, XInput #2, YList3.AddItem XList2.AddItem YLoopClose #1Close #2s = MsgBox("上次搜索结果读取完成!", vbInformation, "提示")Elses = MsgBox("没有任何搜索记录!", vbInformation, "提示")End IfEnd SubPrivate Sub Form_Load()'选择搜索条件即路径和文件格式Combo1.Text = Combo1.List(0)Combo2.Text = Combo2.List(0)Form2.Picture = LoadPicture("")End SubPrivate Function find1() '文件搜索函数Dim i As StringDim a As Integer, b As Integera = m:b = nDim k As IntegerFor k = a To bIf temp(k) = "" Then Exit Functionfind (temp(k))NextEnd Function'*************************************'获取该路径下的文件,并且存储目录文件的路径******************************************Private Function find(ByVal path As String) '文件搜索函数Dim i As Stringm = ni = Dir(path, vbDirectory)Do While i <> ""If i <> "." And i <> ".." ThenIf (GetAttr(path & i) And vbDirectory) <> 0 Thentemp(n) = path & i & "\"n = n + 1ElseDoEventsIf Right(i, Len(Combo2.Text)) = Combo2.Text ThenList3.AddItem path & iWrite #1, path & iWrite #2, Left(i, Len(i) - 4)List2.AddItem Left(i, Len(i) - 4)End IfEnd IfEnd Ifi = DirLoopfind1End Function总结:本音乐播放器的界面还可以设计的更加漂亮好看,这个就得发挥你的界面设计能力咯!以上播放器的设计还有很多可以改善的地方,比如代码能否更加简化?还缺少哪些功能?如何更加赏心悦目?这些就交给你自己去完善咯!另外,为了方便有兴趣的人更好的理解整个设计过程,我已共享该音乐播放器程序设计的整个工程文件(本程序用到的图片也含有)到以下网址:可以下载看看,希望对你有所帮助!。
图书管理系统源代码(一)程序代码1。
主窗口界面import java.awt。
*;import java.awt。
event.*;import javax。
swing.*;import javax.swing.border.TitledBorder;import java.awt。
Font;import javax.swing。
JMenu;public class MainWindow extends JFrame implements ActionListener { private static final long serialVersionUID = 1L;static String loginName;static String loginNo;JLabel mlabel;JPanel jp=new JPanel();//建立菜单栏JMenu a=new JMenu();JMenu b=new JMenu();JMenu c=new JMenu();//建立系统管理菜单组JMenuItem aa=new JMenuItem();JMenuItem ab=new JMenuItem();JMenuItem ac=new JMenuItem();//建立读者管理菜单组JMenuItem bb=new JMenuItem();//建立书籍管理菜单组JMenuItem ca=new JMenuItem();JMenuItem cb=new JMenuItem();JMenuItem cc=new JMenuItem();JMenuItem cd=new JMenuItem();public MainWindow(){super(”图书管理系统");addWindowListener(new WindowAdapter(){System.exit(0);}});Container d=getContentPane();this。
C# C/S结构数据库系统框架详解(一)[vjsdn]自发布《多文档界面(MDI)系统框架-C#完整版》后又有了新想法,就是再写个C#版C/S结构系统框架。
因时间关系断断续续写了很久。
借周日机会,我将源代码整理好再写些说明文档发布出来,希望给大家带来学习机会。
特别声明的是: C/S结构系统框架是优化和改编自几个大型系统,是经历过考验和实际应用的。
希望大家好好珍惜。
这个框架有很多学习要点,提醒大家不仅仅是下载代码而应该去好好研究,甚至阅读每一行代码每一个模块每一个细节! 你学会了它也许将来作为一个优秀架构师需要设计同样一个系统时,这时你用上它,不是事半功倍么?另外,请尊重作者版权,写一个框架的确需要大量时间和精力。
程序员有个共性是写作永无止境,虽是深夜2点,但我们仍在思考,仍在写作! 眼睛睡觉了但思维和创作动力仍在冗奋中,作为一个程序员的你,我说的对吗?有同样的感受吗? 所以:转载时请注明本文来自易学网!言归正传,接下来讲解系统框架实现过程。
首先看几个图对框架有个初步认识。
1.登陆窗体准备登录窗体如通过验证用户,则加载MDI主窗体,留意图片内的动态消息:正在初始化用户界面,请稍候.登录窗体是多数应用程序的入口,在进入系统前需要用户验证。
请看实现过程:2.MDI主窗体登录成功后显示MDI主窗体. 图片为测试模块II的主界面.登录成功后显示MDI主窗体. 图片为系统管理模块的主界面.3.关于程序/作者4.解决方案用代码实现登录到加载MDI主窗体.1.程序入口代码:代码static class Program{[STAThread]static void Main(){//捕获系统所产生的异常。
Application.ThreadException += new ThreadExceptionEve ntHandler(Application_ThreadException);SystemConfig.ReadSettings(); //读取系统设置bllService.SetDataBasePath(); //因用到Access,指定一个M DB文件Process instance = SingletonProgram.GetRunningInstanc e();if (instance != null) Msg.Warning("程序已经运行.");if ((instance != null) && (!SystemConfig.CurrentConfi g.AllowRunMultiInstance)){SingletonProgram.HandleRunningInstance(instance);//Active instancereturn;}Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);//注意:先打开登陆窗体,如登陆成功后再正式运行程序(MDI 主窗体) //学会这种写法。
课题:利用向导建立窗体【教学目标】使用理解并掌握ACCESS中窗体的作用及其基本建立方法。
【重点难点】利用向导建立窗体的基本操作方法【教学课时】2课时【教学过程】A c c e s s窗体创建对表的用户界面。
尽管你可以使用表视图和查询视图来执行许多和窗体同样的函数,但是窗体的长处是以一种有组织和吸引人的方式来表示数据。
你可以在窗体上安排字段的位置,以便在编辑单个记录或者进行数据输入时能够按照一种从左到右、从上到下的顺序进行。
窗体允许你为字段创建一个多选项选择集合,使用速记编码来表示一组允许的值。
一个设计恰当的窗体可以加快输入的速度和减少操作员的录入错误。
窗体是用一组个别的设计元素构造的,这组元素叫做控件或者控件对象。
控件是指你在A c c e s s和其他Wi n d o w s应用的窗口和对话框上看到的组件。
可以使用文本框来输入和编辑数据,用标签来指示字段名,用对象帧来显示图形。
构成窗体的窗口上可以放置两种类型的控件:显示表中数据的动态控件和用作标签或者标识语的静态控件。
本章将重点讨论如何使用基于文本的动态控件和子窗体创建窗体。
子窗体是包含在一个窗体中的数据表或者窗体。
在第五部分“ A c c e s s和其他O ffice 2000应用的集成”中,将介绍如何使用Microsoft ActiveX 技术在窗体和报表中混合图形和其他图形元素。
以下是Access 2000中与窗体有关的最新特征:•在子窗体中的子数据表允许在数据表风格的子窗体中显示一对多关系中的更低一级。
•现场子窗体编辑使得窗体和子窗体的设计模式编辑可以同时激活。
子窗体的设计视图出现在你在运行模式下为子窗体视图指定的区域中。
•名称自动更正功能在改变对象名称时,将自动地更新窗体和后台查询,例如改变表中字段的名字。
如果想利用名称自动更正功能,则必须在进行改名之前将“选项”对话框“常规”页中的“跟踪名称自动更正信息”复选框打上标记。
•利用控件分组可以定义一组控件,然后将之当作一个单个的元素重新部署。
国家二级ACCESS机试(选择题)-试卷12(总分:80.00,做题时间:90分钟)一、选择题(总题数:40,分数:80.00)1.面向对象方法中,实现对象的数据和操作结合于统一体中的是(分数:2.00)A.结合B.封装√C.隐藏D.抽象解析:解析:对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。
封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式,B选项正确。
2.在进行逻辑设计时,将E-R图中实体之间联系转换为关系数据库的(分数:2.00)A.关系√B.元组C.属性D.属性的值域解析:解析:E-RA选项正确。
3.线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有(分数:2.00)A.节省存储空间B.插入与删除运算效率高√C.便于查找D.排序时减少元素的比较次数解析:解析:故B选项正确。
4.深度为7的完全二叉树中共有125个结点,则该完全二叉树中的叶子结点数为(分数:2.00)A.62B.63 √C.64D.65解析:解析:在树结构中,定义一棵树的根结点所在的层次为1,其他结点所在的层次等于它的父结点所在的层次加1,树的最大层次称为树的深度。
完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。
深度为6的满二叉树,结点个数为2 6 -1=63,则第7层共有125-63=62个叶子结点,分别挂在第6层的左边62个结点上,加上第6层的最后1个叶子结点,该完全二叉树共有63个叶子结点,故B选项正确。
5.下列叙述中正确的是(分数:2.00)A.所谓有序表是指在顺序存储空间内连续存放的元素序列B.有序表只能顺序存储在连续的存储空间内C.有序表可以用链接存储方式存储在不连续的存储空间内√D.任何存储方式的有序表均能采用二分法进行查找解析:解析:有序是特指元素按非递减排列,即从小到大排列,但允许相邻元素相等,A选项错误。
以下是主窗体源代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Runtime.InteropServices;//引用类的申明namespace WindowsApplication1//名称空间的申明{public partial class MainForm : Form//主窗口{public MainForm(){InitializeComponent();}////人机交互是通过操作人员对事件的操作来实现的,以下为事件的实现代码////新建文本private void MenuItem7_Click(object sender, EventArgs e){//如果当前文本内容处于修改状态,则提示保存if (textBox1.Modified == true){DialogResult re = MessageBox.Show("文件" + Text + "的内容已改变,需要保存吗?", "保存文件", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);switch (re){case DialogResult.Yes:this.MenuItem9_Click(sender, e);textBox1.Clear();stsavename = "";this.Text = "新建-记事本";break;case DialogResult.No:textBox1.Clear();stsavename = "";this.Text = "新建-记事本";break;case DialogResult.Cancel:break;}}else{textBox1.Clear();stsavename = "";this.Text = "新建-记事本";textBox1.Modified = false;}}//打开文件private void MenuItem8_Click(object sender, EventArgs e){try//捕获异常事件{//如果当前文本内容被修改,则提示保存if (textBox1.Modified == true){//提示保存对话框DialogResult re = MessageBox.Show("文件" + this.Text + "的内容已经改变,是否需要保存?", "保存文件", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);if (re == DialogResult.Cancel){return;}if (re == DialogResult.OK){this.MenuItem9_Click(sender, e);}}openFileDialog1.Title = "打开";openFileDialog1.FileName = "";if (openFileDialog1.ShowDialog() == DialogResult.OK){//打开选定路径上的文件StreamReader sr = new StreamReader(openFileDialog1.FileName, Encoding.Default);stsavename = openFileDialog1.FileName;this.Text = Path.GetFileNameWithoutExtension(stsavename) + "-记事本";textBox1.Text = sr.ReadToEnd();sr.Close();}}//处理异常事件catch (Exception error){MessageBox.Show(error.Message.ToString());}}//保存文件private void MenuItem9_Click(object sender, EventArgs e){//捕获异常事件try{if (stsavename == ""){saveFileDialog1.Title = "保存";saveFileDialog1.FileName = "*.txt";if (saveFileDialog1.ShowDialog() == DialogResult.OK){//保存的实现stsavename = saveFileDialog1.FileName;using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName)){sw.Write(textBox1);sw.Close();textBox1.Modified = false;this.Text = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName) + "-记事本";}}}else{textBox1.SaveFile(stsavename, RichTextBoxStreamType.PlainText);textBox1.Modified = false;}}//处理异常事件catch (Exception er){MessageBox.Show(er.Message.ToString());}}//另存为:private void MenuItem10_Click(object sender, EventArgs e){try{saveFileDialog1.Title = "另存为";saveFileDialog1.FileName = "*.txt";if (saveFileDialog1.ShowDialog() == DialogResult.OK){StreamWriter sw = new StreamWriter(saveFileDialog1.FileName); sw.Write(textBox1);textBox1.Modified = false;stsavename = saveFileDialog1.FileName;sw.Close();this.Text = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName) + "-记事本";}}catch (Exception er){MessageBox.Show(er.Message.ToString());}}//页面设置private void MenuItem11_Click(object sender, EventArgs e){try{if (pageSetupDialog1.ShowDialog() == DialogResult.OK){pageSetupDialog1.ShowDialog();}}catch (Exception err){MessageBox.Show(err.Message.ToString());}}//打印private void MenuItem12_Click(object sender, EventArgs e) {try{if (printDialog1.ShowDialog() == DialogResult.OK) {printDialog1.ShowDialog();}}catch (Exception err){MessageBox.Show(err.Message.ToString());}}//退出private void MenuItem14_Click(object sender, EventArgs e) {this.Close();}//编辑-撤消private void MenuItem15_Click(object sender, EventArgs e) {if (textBox1.CanUndo == true){textBox1.Undo();textBox1.ClearUndo();}}//编辑-剪切private void MenuItem17_Click(object sender, EventArgs e) {if (textBox1.SelectedText != ""){textBox1.Cut();}}//编辑-复制private void MenuItem18_Click(object sender, EventArgs e){textBox1.Copy();}//编辑-粘贴private void MenuItem19_Click(object sender, EventArgs e){if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) == true){textBox1.Paste();}}//编辑-删除private void MenuItem20_Click(object sender, EventArgs e){if (textBox1.SelectedText != ""){textBox1.SelectedText = "";}}//编辑-全选private void MenuItem27_Click(object sender, EventArgs e){textBox1.SelectAll();}//查找private void MenuItem22_Click(object sender, EventArgs e){new Find(textBox1).Show();}//查找下一个,与查找相同的调用方法private void MenuItem23_Click(object sender, EventArgs e) {new Find(textBox1).Show();}//覆盖private void MenuItem24_Click(object sender, EventArgs e) {new Replace(textBox1).Show();}//跳转private void MenuItem25_Click(object sender, EventArgs e) {new Goto(textBox1).Show();}//时间/曰期,加到文本最后private void MenuItem28_Click(object sender, EventArgs e) {textBox1.AppendText(DateTime.Now.ToString());}//字型设置private void MenuItem30_Click(object sender, EventArgs e) {if (fontDialog1.ShowDialog() == DialogResult.OK){textBox1.Font = fontDialog1.Font;textBox1.ForeColor = fontDialog1.Color;}}//显示帮助文件private void MenuItem32_Click(object sender, EventArgs e) {Help.ShowHelp(this, "notepad.chm");}//关于本记事本制作申明private void MenuItem33_Click(object sender, EventArgs e) {new About().Show();}//字体颜色设置private void MenuItem34_Click(object sender, EventArgs e){if (colorDialog1.ShowDialog() == DialogResult.OK){textBox1.ForeColor = colorDialog1.Color;}}//背景颜色设置private void MenuItem35_Click(object sender, EventArgs e){if (colorDialog1.ShowDialog() == DialogResult.OK){textBox1.BackColor = colorDialog1.Color;}}//上下文菜单-撤消private void toolStripMenuItem1_Click(object sender, EventArgs e) {this.MenuItem15_Click(sender, e);}//上下文菜单-剪切private void toolStripMenuItem2_Click(object sender, EventArgs e) {this.MenuItem17_Click(sender, e);}//上下问菜单-复制private void toolStripMenuItem3_Click(object sender, EventArgs e) {this.MenuItem18_Click(sender, e);}//上下文菜单-粘贴private void toolStripMenuItem4_Click(object sender, EventArgs e) {this.MenuItem19_Click(sender, e);}//上下文菜单-删除private void toolStripMenuItem5_Click(object sender, EventArgs e) {this.MenuItem20_Click(sender, e);}//上下文菜单-全选private void toolStripMenuItem6_Click(object sender, EventArgs e) {this.MenuItem27_Click(sender, e);}//编辑菜单项下拉事件发生时更新其菜单项属性private void MenuItem3_DropDownOpened(object sender, EventArgs e) {//如果剪切板内容不为空,则粘贴项可用,否则不可用if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)) {this.MenuItem19.Enabled = true;}elsethis.MenuItem19.Enabled = false;//根据选择区域不为空,则复制,剪切,删除可用;否则不可用if (textBox1.SelectedText.Length > 0){MenuItem17.Enabled = true;MenuItem18.Enabled = true;MenuItem20.Enabled = true;}else{MenuItem17.Enabled = false;MenuItem18.Enabled = false;MenuItem20.Enabled = false;}//设置撤消if (textBox1.CanUndo == true){MenuItem15.Enabled = true;}else{MenuItem15.Enabled = false;}//如果记事本文本内容不为空,则全选可用;否则不可用if (textBox1.Text.Length > 0){MenuItem27.Enabled = true;}else{MenuItem27.Enabled = false;}}//点击右键时设置上下文菜单属性private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) {//如果剪切板内容不为空,则粘贴项可用,否则不可用if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)){this.toolStripMenuItem4.Enabled = true;}elsethis.toolStripMenuItem4.Enabled = false;//根据选择区域不为空,则复制,剪切,删除可用;否则不可用if (textBox1.SelectedText.Length > 0){toolStripMenuItem2.Enabled = true;toolStripMenuItem3.Enabled = true;toolStripMenuItem5.Enabled = true;}else{toolStripMenuItem2.Enabled = false;toolStripMenuItem3.Enabled = false;toolStripMenuItem5.Enabled = false;}//设置撤消if (textBox1.CanUndo == true){toolStripMenuItem1.Enabled = true;}else{toolStripMenuItem1.Enabled = false;}//如果记事本文本内容不为空,则全选可用;否则不可用if (textBox1.Text.Length > 0){toolStripMenuItem6.Enabled = true;}else{toolStripMenuItem6.Enabled = false;}}//关闭窗体前提示是否需要保存private void Form_Close(object sender, ponentModel.CancelEventArgs err){if (textBox1.Modified == true){DialogResult re = MessageBox.Show(this.Text + "内容已更改,是否需要保存?", "保存提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk); switch (re){case DialogResult.Yes:this.MenuItem9_Click(sender, err);if (textBox1.Modified == true){err.Cancel = true;}else{Application.Exit();}break;case DialogResult.No:Application.Exit();break;case DialogResult.Cancel:err.Cancel = true;break;}}}//状态栏private void MenuItem31_Click(object sender, EventArgs e){if (MenuItem31.Checked == true ){MenuItem31.Checked = false;toolStripStatusLabel1.Text = "";}else{MenuItem31.Checked = true;status(sender, e);}}//选择区域发生变化时(即光标位置变化时,动态更新显示其位置)private void textBox1_SelectionChanged(object sender, EventArgs e) {if (MenuItem31.Enabled == true){if (MenuItem31.Checked == true){status(sender, e);}else{toolStripStatusLabel1.Text = "";}}}//设置或取消自动换行private void MenuItem29_CheckedChanged(object sender, EventArgs e) {//修改texBox1的相关属性if (this.MenuItem29.Checked == false){if (MenuItem31.Checked == true){status(sender, e);}textBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedBoth;textBox1.WordWrap = false;}else{textBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical;textBox1.WordWrap = true;}}//当自动换行改变时,设置状态栏可用与否private void MenuItem29_Click(object sender, EventArgs e){if (MenuItem29.Checked == true){MenuItem29.Checked = false;MenuItem31.Enabled =true;}else{MenuItem29.Checked = true;MenuItem31.Enabled = false ;toolStripStatusLabel1.Text = "";}}//显示光标所在行数与列数private void status(object sender, EventArgs e){int line = this.textBox1.GetLineFromCharIndex(textBox1.SelectionStart);int col;int start = 0;int cursor = textBox1.SelectionStart;while (start < cursor){if (line == this.textBox1.GetLineFromCharIndex(start)) {break;}elsestart++;}col = cursor - start;line++;col++;toolStripStatusLabel1.Text = "line " + line + " col " + col; }}}。