界面_界面设计 - CSDN
精华内容
参与话题
  • 相比之前的那个【简单版】登录界面,该模板新增: 1、js 回车事件,并且能够兼容多个浏览器; 2、界面布局的层次结构优化; 3、按钮监听响应事件的实现方式优化; 4、包含全屏方法的实现; 5、连个div块的叠加; --...
  • 漂亮通用界面

    千次下载 热门讨论 2020-07-30 23:32:04
    Qt漂亮通用界面。 大部分的界面都可以用这个学习,非常漂亮哦!
  • android 漂亮的UI界面 完整的界面设计

    万次下载 热门讨论 2020-07-30 23:33:23
    声明:这也是我学习时在网上下载的,鉴于分享精神,并且觉得很不错才上传...android 漂亮的UI界面 完整的界面设计 这是一个完整的UI设计,但是没写动作,这是一个公司程序员的公司任务设计,请别商用,要用请修改。。。
  • C++界面

    千次阅读 2019-08-03 11:23:23
     ...Xtreme ToolkitPro v15.0.1,Skin++,等界面库,以及一些网友自己写的界面库,开始对于C++软件界面美化有了一点点的心得。不敢藏私,希望和一些新手朋友们分享交流。     一...

            刚开始用C++做界面的时候,根本不知道怎么用简陋的MFC控件做出比较美观的界面,后来就开始逐渐接触到BCG  Xtreme ToolkitPro v15.0.1,Skin++,等界面库,以及一些网友自己写的界面库,开始对于C++软件界面美化有了一点点的心得。不敢藏私,希望和一些新手朋友们分享交流。


        一.  开源C++界面库

      

    1.RingSdk

        Ringsdk是CSDN上一个前辈自己写的界面库,这个界面库很轻而易举实现QQ2009的界面效果。链接见 

      http://blog.csdn.net/ringphone/article/details/2911244   貌似Ringsdk和MFC无法进行交互,但是 RingSdk其中有很多的图形处理的代码都非常有参考价值。


    2.redui的官方网站http://www.redui.org 已经打不开了。官方QQ群是 40729296 

    CSDN地址是 
    http://blog.csdn.net/jameshooo/article/details/6677272

    这是官方的说明

    REDUI,又名REDirectUI,全称是Rendering Engine for DirectUI,是一款基于XML描述的 DirectUI 渲染引擎,能将“控件”的交互和渲染过程分解成多种独立的要素,包括布局、视觉效果、样式、UI自动化、滤镜、脚本、事件、3D场景、3D模型、通用动画等。通过这些要素的排列组合,可以呈现出各种不同效果的控件,甚至能在XML中直接自定义控件类型。支持2D/3D无缝融合。
    • REDUI支持GDI/GDI+/DirectDraw/D3D等渲染方式,并有支持OPENGL/ES的愿望


    3.Duilib 这个就比较大名鼎鼎了,不用多说了吧。包括华为网盘在内的很多业内企业都在用这个界面库。我用Duilib做了一个小型的界面。贴出来献丑一个。



    4.WGI-1.0.7-Demo-Project-for-windows 。。额。。时间太长,忘记了这个代码是什么,姑且先忽略它。


    5.cj60lib 这个玩过Gh0st3.6木马的人都熟悉,是一款对MFC进行拓展的界面库

    6.金山界面库 这个就不赘述了,可以直接上金山的论坛找源代码和资料

    7.skinTK_V0.20 一款类似于Skin++的开源界面库

    8.FreeCL_Skin2.3 一款不错的控件库 扩展了常用的MFC控件 。  这个是FreeCL_Skin提供的一个效果实例。



    9.GuiLib1.5 一个老外写的界面库 没有用过,没有调查,就没有发言权。大家自行百度。


    10.基于3D的界面库 MangoGUI_V0.1.5

    MangoGUI是猫仔在DXUT基础上修改得来的一个开源GUI系统。

    目前来说基本上继承了DXUT里面绝大多数的功能和改进了使用方式,让DX学习爱好者更容易去使用GUI系统。

    如果你也是一位对GUI有兴趣的同学,非常欢迎你一同来参与到MangoGUI的设计当中来!

    作者博客

    http://m9551.blog.sohu.com/


    11.基于Skia的directui库metalbone

    代码托管地址

    http://code.google.com/p/metalbone/

    官方说明

    MetalBone是一个C++ DirectUI库。接口、命名等借鉴Qt,而并非使用Windows风格。

    MetalBone的特点是,使用CSS来定制样式(如果没有CSS的话,则什么也不显示,lol)。目前可以使用Direct2D或Google Skia来绘制界面。MetalBone使用的是 WWM协议(基于LGPL)


    12.SonicUI2011

    效果比较不错的一款皮肤库

    作者CSDN地址是 

    http://my.csdn.net/akof1314


    13 基于OpenGl的界面库 beGUI-0.1.3-src

    代码托管地址

     http://code.google.com/p/begui/


                   二 未开源或商业界面库



    1.Flash4UI 

     看命名就知道是将Flash嵌入到UI中。

    官方网站是  http://www.flash4ui.com/

    效果图片



    2.bolt 迅雷7界面引擎

    迅雷界面引擎,这个用过迅雷下载和迅雷看看的就有体会了,界面的确是做的非常的赞。而且流畅,CPU占用和内存各种都很棒。采用了脚本交互的方式,脚本语言采用了Lua.可惜的是迅雷只开放了接口SDK给个人使用。

    官方网址 http://bolt.xunlei.com/


    3.clayui

    百度百科说明   clayui是一个采用纯C++编写的界面框架,可以很方便的移植到各种系统上。现在支持的系统包括android,windows,wince,linux。clayui的特点是能实现各种2D,3D动画,一些WPF,FLEX才能实现的界面效果,通过clayui可以很方便的实现。 clayui的底层渲染支持纯软件渲染,d3d,opengl es硬件加速渲染,您可以根据自身的需求选择合适的渲染方式,使您界面的用户体验达到最佳效果

    效果


    4.DSkinLite

    官方网址  http://www.uieasy.cn/dskinlite/

    官方Demo



    5.libuiDK

    官方说明:LibUIDK是国际上顶尖的专业开发Windows平台下图形用户界面的开发包,也是国内第一款商业的高级界面开发工具。该开发包基于Microsoft的MFC库。使用此开发工具包可轻易把美工制作的精美界面用Visual C++实现,由于LibUIDK采用所见即所得的方式创建产品界面,所以极大的提高了产品的开发速度,并大大增强图形用户界面(GUI)的亲和力。LibUIDK还可以使您的软件轻松具有当今流行的换肤功能,以提高产品的竞争力。

    官方网站

    http://www.iuishop.com/index.asp

    实例



    6. SiteUi   SkinSE  都有官方网站。就不继续搬砖的工作了。


    7.(未开源)上海勇进UIPower

    这个比较牛逼。一款界面库就是大几百万的。老总阙海忠还亲自录了20集的界面库相关的视频

    官方网站 http://www.uipower.com/

    这是老阙的视频。



    8.炫彩界面库

    炫彩界面库貌似是私人开发的一个界面库,可以用C++.c#易语言等来开发。炫彩库的作者貌似是湖北襄阳人哟。

    官方网站 http://www.xcgui.com/


    9.魔方界面库

    官方网站 http://www.muilib.com/

    MuiLib(Magic UI Library)Windows高级界面开发库是在国内首家免费开源的DuiLib界面开发库基础上经过针对性的扩展而发展起来的,他继承了DuiLib高度自由灵活的特点,并吸收了其他界面库的一些优点,针对Windows层窗口按像素透明技术而重点优化后形成的一个优秀界面开发库,是一个使用纯C++调用Windows API的开发库,无任何其他第三方依赖框架,您可以使用其提供的各种高级控件来创建更加炫酷的用户界面


    10 XtremeToolkit

    Codejock 公司出品的一款界面库。应用也是比较广泛的。在2013版的大灰狼远程操控中就采用了这款界面库。


    11.Sharpui

    代码托管地址  https://github.com/china520/sharpui

    Sharpui是居于现在流行的DUI思想的一套界面库,可以方便实现半透明和各种界面效果,采用纯c++实现,分为引擎和控件两个部分,这两个部分采用动态库的形式提供,引擎部分处理了事件、资源、渲染、控制逻辑,同时提供了各种应用层面控件的实现基类,包括:Visual、Element、FrameworkElement、Control、ContentControl、Window、Panel、Popup,这些类封装了基础控件的实现细则,所有用户实现的控件都必须继承自这些类,对于需要呈现的控件必须继承至FrameworkElement。
    控件部分提供的所有控件均采用DUI方式实现、分层绘制,实现各种常用的布局控件,可灵活实现界面的自动布局;Sharpui本身所有数据结构采用原生实现,内存自动管理,不依赖于std的任何容器,使得库的使用更加独立、编译更加简单,使用VS任意一个版本编译都可以用在其它版本里,不需要担心由于std版本原因而产生编译问题。



    以上都是我在工作和个人业余时间收集积累的开源或商业界面库,这些界面库各有各的特色和侧重点,也有不同的换肤思想,如果要用在项目中还是要进行适当的增删整改。

    由于个人能力水平见识有限,也有些大神的作品没有被收录其中。表示遗憾。




    /**************************************************Witch_Soya***********************************************************/

    /**************************************************2013年9月3日15:55:18***********************************************/

    展开全文
  • 教你用Python写界面

    万次阅读 多人点赞 2018-11-18 18:58:06
    作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几种我认识的 1.tkinter Tkinter(也叫Tk...

    好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释

    作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几种我认识的

    1.tkinter

    Tkinter(也叫Tk接口)是Tk图形用户界面工具包标准的Python接口。Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具。Tk和Tkinter可以运行在大多数的Unix平台、Windows、和Macintosh系统。

    Tkinter 由一定数量的模块组成。Tkinter位于一个名为_tkinter(较早的版本名为tkinter)的二进制模块中 。Tkinter包含了对Tk的低 级接口模块,低级接口并不会被应用级程序员直接使用,通常是一个共享库(或DLL),但是在一些情况下它也被Python解释器静态链接。

    2.pyqt

    PyQt是Qt库的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次发布也是在1998年,但是当时它叫 PyKDE,因为开始的时候SIP和PyQt没有分开。PyQt是用SIP写的。PyQt 提供 GPL版和商业版。

    3.wxpython

    wxPython 是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。 wxPython 是作为优秀的跨平台 GUI 库 wxWidgets 的 Python 封装和 Python 模块的方式提供给用户的。

    就如同Python和wxWidgets一样,wxPython也是一款开源软件,并且具有非常优秀的跨平台能力,能够运行在32位windows、绝大多数的Unix或类Unix系统、Macintosh OS X上。

    4.Kivy

    这是一个非常有趣的项目,基于OpenGL ES 2,支持Android和iOS平台的原生多点触摸,作为事件驱动的框架,Kivy非常适合游戏开发,非常适合处理从widgets到动画的任务。如果你想开发跨平台的图形应用,或者仅仅是需要一个强大的跨平台图形用户开发框架,Kivy都是不错的选择。
    5.pygame

    Pygame是跨平台Python模块,专为电子游戏设计,包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言汇编语言)束缚。

    这个库使用来写游戏的,但是你也可以用来写界面,嘿嘿

    那选择什么库是个人的喜好,但是我推荐尽可能去选择一种通过且学习资料比较多的吧,我这里选择的是tkinter,项目要求比较急,没怎么挑就选了。。。。

    我学习也不是很深,如果你想要进行更深的学习请前往tkinter官方文档

    先来看看Tkinter里面的基础控件

    接下来的代码讲解中你需要导入这些

    from tkinter import *
    from tkinter.tix import Tk, Control, ComboBox  #升级的组合控件包
    from tkinter.messagebox import showinfo, showwarning, showerror #各种类型的提示框

    在进行界面绘制之前你需要初始化Tk()

    root = Tk() # 初始化Tk()

    root便是你布局的根节点了,以后的布局都在它之上

    root.title("hello tkinter")    # 设置窗口标题
    root.geometry("800x1000")    # 设置窗口大小 注意:是x 不是*
    root.resizable(width=True, height=True) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
    root.tk.eval('package require Tix')  #引入升级包,这样才能使用升级的组合控件

    设置一些窗口属性

    1.Label

    再来看看Label,它的属性很多

    activebackground, activeforeground, anchor,
    background, bitmap, borderwidth, cursor,
    disabledforeground, font, foreground,
    highlightbackground, highlightcolor,
    highlightthickness, image, justify,
    padx, pady, relief, takefocus, text,
    textvariable, underline, wraplength
    height, state, width

    太多了,作用基本和名字一样,这里就不一一说了,你可以自己去试试,我说一下常用的属性

    lable = Label(root, text="label", bg="pink",bd=10, font=("Arial",12), width=8, height=3)
    lable.pack(side=LEFT)

     

     

    第一个 要依附的节点
    text 上面显示的字
    bg 背景颜色  也可以传rgb16进制的形式
    bd 边框宽度
    font 字体 第一个是字体样式 第二个是字体大小
    width  height 宽 高
    bitmap 图像
    highlightcolor 高亮时字体颜色
    highlightbackground 高亮时背景颜色
    textvariable 绑定的变量 之后如果变量值发生变动 字也会随之改变
    wraplength 换行控制 如果是50就表示宽度到50就换行显示

    最后你需要调用pack()来把控件布置上去,你可以指定布局方式,可定义的属性也非常多

    # Booleans
    NO=FALSE=OFF=0
    YES=TRUE=ON=1
    
    # -anchor and -sticky
    N='n'
    S='s'
    W='w'
    E='e'
    NW='nw'
    SW='sw'
    NE='ne'
    SE='se'
    NS='ns'
    EW='ew'
    NSEW='nsew'
    CENTER='center'
    
    # -fill
    NONE='none'
    X='x'
    Y='y'
    BOTH='both'
    
    # -side
    LEFT='left'
    TOP='top'
    RIGHT='right'
    BOTTOM='bottom'
    
    # -relief
    RAISED='raised'
    SUNKEN='sunken'
    FLAT='flat'
    RIDGE='ridge'
    GROOVE='groove'
    SOLID = 'solid'
    
    # -orient
    HORIZONTAL='horizontal'
    VERTICAL='vertical'
    
    # -tabs
    NUMERIC='numeric'
    
    # -wrap
    CHAR='char'
    WORD='word'
    
    # -align
    BASELINE='baseline'
    
    # -bordermode
    INSIDE='inside'
    OUTSIDE='outside'
    
    # Special tags, marks and insert positions
    SEL='sel'
    SEL_FIRST='sel.first'
    SEL_LAST='sel.last'
    END='end'
    INSERT='insert'
    CURRENT='current'
    ANCHOR='anchor'
    ALL='all' # e.g. Canvas.delete(ALL)
    
    # Text widget and button states
    NORMAL='normal'
    DISABLED='disabled'
    ACTIVE='active'
    # Canvas state
    HIDDEN='hidden'
    
    # Menu item types
    CASCADE='cascade'
    CHECKBUTTON='checkbutton'
    COMMAND='command'
    RADIOBUTTON='radiobutton'
    SEPARATOR='separator'
    
    # Selection modes for list boxes
    SINGLE='single'
    BROWSE='browse'
    MULTIPLE='multiple'
    EXTENDED='extended'
    
    # Activestyle for list boxes
    # NONE='none' is also valid
    DOTBOX='dotbox'
    UNDERLINE='underline'
    
    # Various canvas styles
    PIESLICE='pieslice'
    CHORD='chord'
    ARC='arc'
    FIRST='first'
    LAST='last'
    BUTT='butt'
    PROJECTING='projecting'
    ROUND='round'
    BEVEL='bevel'
    MITER='miter'
    
    # Arguments to xview/yview
    MOVETO='moveto'
    SCROLL='scroll'
    UNITS='units'
    PAGES='pages'

    写完这些你运行程序发现还是无法出现界面,那是因为你还少了一句

    root.mainloop()

    加上这句话使程序进入消息循环,界面便会显示出来

    学完了label之后学其他控件也就简单了很多,因为很多属性都是相同的

    2.Button

    button=Button(root,text='QUIT',command=root.quit,activeforeground="black",activebackground='blue',bg='red',fg='white')
    button.pack(fill=Y,expand=1)

    之前说过的属性如果没有特殊情况就不再说了

    command 点击调用的方法
    activeforeground 点击时按钮上字的颜色
    activebackground 点击时按钮的背景颜色

    3.Scale

    def resize(ev=None):
        lable.config(font='Helvetica -%d bold'%scale.get())
    scale=Scale(root,from_=10,to=40,orient=HORIZONTAL,command=resize)
    scale.set(12)
    scale.pack()

    和button不同的是command不再是点击事件了而是拖动事件 ,调用set()方法可以设置当前位置

    from_ 滑动条起始值
    to 滑动条终点值
    origent 样式 两种样式 一横一竖

    4.NumbericUpDown

    ct=Control(root,label='Number:',integer=True,max=12,min=2,value=2,step=2)
    ct.label.config(font='Helvetica 14 bold')
    ct.pack()
    integer 是否为整数
    max 最大值
    min 最小值
    value 初始值
    step 步长

    这是一个数字选择框 其中的字体配置需要使用config()方法来进行配置

    5.ComboBox

    cb=ComboBox(root,label='Type:',editable=True)
    for animal in ('dog','cat','hamster','python'):
        cb.insert(END,animal)
    cb.pack()

    这是一个下拉选择框,label前面要显示的字,editable控制是否可更改

    调用insert()给下拉选择框添加选项

    6.Menu

    def click():
        print("点击了一次")
    menubar=Menu(root)
    root.config(menu=menubar)
    filemenu=Menu(menubar,tearoff=0)
    menubar.add_cascade(label='文件',menu=filemenu)
    filemenu.add_command(label='新建...',command=click())
    filemenu.add_command(label='打开...',command=click())
    filemenu.add_command(label='保存',command=click())
    filemenu.add_command(label='关闭填写',command=root.quit)

    惨淡蓝需要所依附的节点配置menu才能起作用

    调用add_cascade给menu添加一项选项

    带哦用add_command则是给外层的选项添加一个子选项

    7.Frame

    frame1 =Frame(root)
    frame1.pack(fill=X)
    lable1=Label(frame1,text='您的花名:  ')
    lable1.grid(row=1,column=0)

    frame相当于一个局部的窗体,可以用来装载其它控件

    使用grid能让你更容易把握控件的位置,你可以指定它出现在几行几列,是否跨行跨列,跨几行等等

    8.Radiobutton

    frame2=Frame(root)
    frame2.pack(fill=X)
    lable2=Label(frame2,text='您的性别:  ')
    lable2.grid(row=1,column=0)
    sex=StringVar()
    sex_male=Radiobutton(frame2,text='男',fg='blue',variable=sex,value='男')
    sex_male.grid(row=1,column=2)
    sex_female=Radiobutton(frame2,text='女',fg='red',variable=sex,value='女')
    sex_female.grid(row=1,column=4)

    这是一个单选框,里面的属性之前也说过

    9.ListBox

    frame4 =Frame(root)
    frame4.pack(fill=X)
    lable4=Label(frame4,text='4、请删除您不会的变成语言:  ')
    lable4.grid(row=1,column=0)
    listbox=Listbox(frame4)
    listbox.grid(row=1,column=1)
    for item in ["C","C++","JAVA","PYTHON","R","SQL","JS"]:
        listbox.insert(END,item)
    DELETE=Button(frame4,text="删除",command=lambda listbox=listbox:listbox.delete(ANCHOR))
    DELETE.grid(row=1,column=2)
    language=Button(frame4,text="确定")
    language.grid(row=2,column=1)

    这是一个列表,注意这里按钮点击事件的写法是用lambda表达式写的

    10.Canvas

    canvas = Canvas(window, width = 200, height = 100, bg = "White")
    canvas.pack()

    这是一个画板,你可以在上面画各种形状,上例子:

    from tkinter import *
    
    class CanvasDemo:
        def __init__(self):
            window = Tk()
            window.title("CanvasDemo")
    
            self.canvas = Canvas(window, width = 200, height = 100, bg = "White")
            self.canvas.pack()
    
            frame = Frame(window)
            frame.pack()
    
            btRectangle = Button(frame, text = "长方形", command = self.displayRect)
            btOval = Button(frame, text="椭 圆", command=self.displayOval)
            btArc = Button(frame, text = "圆 弧", command = self.displayArc)
            btPolygon = Button(frame, text="多边形", command=self.displayPolygon)
            btLine = Button(frame, text=" 线 ", command=self.displayLine)
            btString = Button(frame, text="文 字", command=self.displayString)
            btClear = Button(frame, text="清 空", command=self.clearCanvas)
    
            btRectangle.grid(row = 1, column = 1)
            btOval.grid(row=1, column=2)
            btArc.grid(row=1, column=3)
            btPolygon.grid(row=1, column=4)
            btLine.grid(row=1, column=5)
            btString.grid(row=1, column=6)
            btClear.grid(row=1, column=7)
    
            window.mainloop()
    
        def displayRect(self):
            self.canvas.create_rectangle(10, 10, 190, 90, tags = "rect")
        def displayOval(self):
            self.canvas.create_oval(10, 10, 190, 90, tags = "oval", fill = "red")
        def displayArc(self):
            self.canvas.create_arc(10, 10, 190, 90, start = -90, extent = 90, width = 5, fill = "red", tags = "arc")
        def displayPolygon(self):
            self.canvas.create_polygon(10, 10, 190, 90, 30, 50, tags = "polygon")
        def displayLine(self):
            self.canvas.create_line(10, 10, 190, 90, fill = 'red', tags = "line")
            self.canvas.create_line(10, 90, 190, 10, width = 9, arrow = "last", activefill = "blue", tags = "line")
        def displayString(self):
            self.canvas.create_text(60, 40, text = "Hi,i am a string", font = "Tine 10 bold underline", tags = "string")
        def clearCanvas(self):
            self.canvas.delete("rect", "oval", "arc", "polygon", "line", "string")
    
    CanvasDemo()

     11.CheckButton

    frame8=Frame(root)
    frame8.pack()
    agree=StringVar()
    agree=Checkbutton(frame8,text='我同意',variable=agree,onvalue='确定',offvalue="不确定",)
    agree.grid()

    这是一个多选框,oncalue代表被勾选时的值,offvalue代表不被勾选时的值

    12.LabelFrame

    frame10=Frame(root)
    frame10.pack()
    group=LabelFrame(frame10,text='特别鸣谢',padx=5,pady=5)
    group.grid()
    w=Label(group,text='容器框')
    w.pack()

    这是个容器框,padx,pady分别控制在x,y方向上的外边距

    差不多这些控件已经够用了,我这还有几个小例子供你练习

    展开全文
  • 地方

    主要面向想做出图形界面的C语言初学者

    C语言初学者开始都是在黑白控制台上开发一些小程序,实现一些小功能,因为基础的C语言可视化效果比较差,所展示的都是黑白的字符和数字,比较单调乏味。一些大学的计算机类专业学生,大一学习C语言,学习基础语法和算法,通过平台刷题提高自己编程能力,一般不专门学习图形化编程,期中或者期末可能会有开发一个小游戏或者小系统(如学生成绩管理系统、银行管理系统、日程管理系统等)的任务。这时如果在实现基本功能的情况下做出优美的图形界面,会比较出彩并且会有满满的成就感。

    一、环境准备

    操作系统:windows 10
    编译环境:VS 2017
    图形库:EasyX_20190415(beta)

    下载链接
    VS 2017: 微软官网
    EasyX图形库:EaxyX官网

    下面介绍一下EasyX:
    EasyX 是针对 C++ 的图形库,可以帮助 C语言或C++语言初学者快速上手图形和游戏编程,比如用编译环境和EasyX图形库可以轻松画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,或者导入一张图片,可以练习图形学的各种算法,等等。
    如何安装:
    需要先下载安装好编译环境VS2017,然后再下载安装EasyX图形库,安装时选择安装在Visual C++2017目录下即可。
    安装截图

    二、程序运行截图

    欢迎界面
    在这里插入图片描述
    系统初始界面
    在这里插入图片描述
    学生端
    在这里插入图片描述
    教师端
    在这里插入图片描述

    三、部分源码展示

    下面是代码的头文件、宏定义、函数声明部分。完整源码请在下方获取

     /************************************************************************
    程序名:日程管理系统
    版本号:2.0
    开发者:符泽林
    程序功能:1)设计学生端口和教师端口,学生端学生自我管理,教师端教师监督管理
    		  2)注册、登录账号,修改密码
    		  3)添加、修改、删除、显示日程
    		  4)文件自动保存
    		  5) 精美界面,界面友好,交互性强
    		  6)系统会进行自动保存
    		  7)登录后退出需要重新登录
    ************************************************************************/
    
    /*对库函数的定义*/
    #include <graphics.h>      // 引用图形库头文件
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    #include <conio.h>
    #include<tchar.h>
    
    /*宏定义*/
    #define NUMBER 100//定义可容纳(学生/教师)的用户数量 
    #define MANAGELENGTH 30//定义事件长度(包含时间) 
    #define STRLENGTH 30//定义用户名长度
    #define NUMLENGTH 12//定义密码长度 
    
    /*定义图片*/
    IMAGE welcome;//欢迎界面
    IMAGE welcome_button;//ENTER按钮
    IMAGE startup;//初始界面
    IMAGE stu1;//学生端初始
    IMAGE stu1_return;
    IMAGE stu1_exit;
    IMAGE stu_register;//学生端:创建账户
    IMAGE stu_logon;//学生端:学生登录
    IMAGE stu_resetpassword;//学生端:修改密码
    IMAGE stu_schedulemanagement1;//学生端:日程管理界面1
    IMAGE stu_schedulemanagement2;//学生端:日程管理界面2
    IMAGE stu_schedulemanagement2_return;
    IMAGE stu_schedulemanagement2_exit;
    IMAGE teacher1;//教师端初始
    IMAGE teacher1_return;
    IMAGE teacher1_exit;
    IMAGE teacher_register;//教师端:创建账户
    IMAGE teacher_logon;//教师端:教师登录
    IMAGE teacher_resetpassword;//教师端:修改密码
    IMAGE teacher_schedulemanagement1;//教师端:日程管理界面1
    IMAGE teacher_schedulemanagement2;//教师端:日程管理界面2
    IMAGE teacher_schedulemanagement2_return;
    IMAGE teacher_schedulemanagement2_exit;
    IMAGE createschedule;//学生端:创建日程
    IMAGE resetschedule;//学生端:修改日程
    IMAGE finishedcondition;//学生端:完成状态
    IMAGE setstuschedule;//教师端:设定学生日程
    IMAGE resetstuschedule;//教师端:修改学生日程
    IMAGE checkfinishedcondition;//教师端:查看完成状态
    IMAGE end;//结束界面
    
    /*全局变量*/
    int nStudentNum = 0;//注册的学生编号(从0开始)(同时也代表着注册人数) 
    int nTeacherNum = 0;//注册的教师编号 (第一个注册的用户编号为0) 
    int nStuFlag = 0;//定义判断学生是否登录的标志变量
    int nTeacherFlag = 0;//定义判断教师是否登录的标志变量 
    int studentnum;//定义登录的学生编号
    int teachernum;//定义登录的教师编号
    
    /*定义学生结构体数组*/
    struct student
    {
    	wchar_t szName[STRLENGTH];//定义学生用户名
    	wchar_t password1[NUMLENGTH];//定义学生账户密码
    	wchar_t password2[NUMLENGTH];//定义学生二次输入密码
    	int nSerialNum;//定义学生序号(从1开始) 
    	int nManagement = 0;//定义学生的日程事件数  
    	wchar_t Management1[10][MANAGELENGTH];//定义存储该学生设定的初始时间字符数组      设定一个学生最多设定10个事件 
    	wchar_t Management2[10][MANAGELENGTH];//定义存储该学生设定的截止时间字符数组
    	wchar_t Management3[10][MANAGELENGTH];//定义存储该学生设定的日程内容字符数组
    	wchar_t FinishStatus[10][MANAGELENGTH];//定义每个学生设定的日程的完成状态 
    }stu[NUMBER];
    
    /*定义教师的结构体数组*/
    struct  teacher
    {
    	wchar_t szName[STRLENGTH];//定义教师用户名
    	wchar_t password1[NUMLENGTH];//定义教师账户密码
    	wchar_t password2[NUMLENGTH];//定义教师二次输入密码 
    	int nSerialNum;//定义老师序号(从1开始) 
    }teacher[NUMBER];
    
    /*函数声明***********************************************/
    
    /*欢迎界面函数*/
    void Welcome(FILE *fp);
    
    /*文件保存函数*/
    void SaveFile(FILE *fp);
    
    /*一级主菜单函数*/
    void Select_MainMenu(FILE *fp);
    
    /*二级菜单函数*/
    
    //二级菜单学生端目录显示
    void OutputStu_SecondMenu(FILE *fp);
    //二级菜单教师端目录显示
    void OutputTeacher_SecondMenu(FILE *fp);
    //二级菜单:学生创建账户 
    void Stu_Register(FILE *fp);
    // 二级菜单:学生登录
    void Stu_Logon();
    //二级菜单:学生修改密码
    void Stu_ResetPassword(FILE *fp);
    //二级菜单:学生日程管理
    void Stu_ScheduleManagement(FILE *fp);
    //二级菜单:教师创建账户
    void Teacher_Register(FILE *fp);
    //二级菜单:教师登录
    void Teacher_Logon();
    //二级菜单:教师修改密码
    void Teacher_ResetPassword(FILE *fp);
    //二级菜单:教师对学生日程管理
    void Teacher_ScheduleManagement(FILE *fp);
    
    /*二级菜单结束*/
    
    /*三级菜单*/
    
    //三级菜单:新建日程 
    void CreateSchedule(FILE *fp);
    //三级菜单:修改日程
    void ResetSchedule(FILE *fp);
    //三级菜单:完成状态
    void FinishedCondition(FILE *fp);
    //三级菜单:设定学生日程
    void SetStuSchedule(FILE *fp);
    //三级菜单:修改学生日程
    void ResetStuSchedule(FILE *fp);
    //三级菜单:查看学生完成状态
    void CheckFinishedCondition();
    
    /*三级菜单结束*/
    
    /*函数声明结束********************************************/
    

    四、完整文件

    日程管理系统
    提取码:3x07
    说明:图片都是用ps自己制作的,切不可更改图片命名,否则会导致程序无法运行,因为图片命名和代码要保持一致。

    五、要点

    1、创建项目:新建-项目-空项目-右键“源文件”-添加-新建项-C++文件
    2、编码字符集:unicode字符集
    在这里插入图片描述
    3.将图片资源直接导入到所命名的文件夹中,注意不要将图片打包文件夹后再放入,要直接将图片导入对应文件夹。
    4.程序中要多次用到图形库的函数,建议刚接触的初学者查看EasyX安装时附带的官方帮助文档,也可以参考我分享的源代码。但是考虑到帮助文档内容较少,对函数的用法介绍较少,下面分享一个关于EasyX图形库详细函数用法介绍的文档。
    EasyX函数详细介绍文档
    提取码:6wdk
    5.解决方案配置有两种选择:debug和release,程序编译后会生成对应的文件,如debug文件夹,将图片资源导入该文件夹就可以直接运行文件夹内的可执行文件,否则无法运行,release同理。

    六、最后的话

    本文不谈高深的技术,只介绍了最基础的基于EasyX图形库的C语言图形化编程,比较简单适合初学者,但是学好了同样可以开发出非常棒的程序。当时刚接触C语言和图形界面时不知从何下手,后来发现EasyX这个简单好用的库,没有找到很多详细的文章和博客。自己看EaxyX帮助文档和一些源码学到了一些东西,学了ps做了几十张图片,最后写出了这个日程管理系统,于是决定将我学到的东西和写的程序分享给大家,没有多好,希望给大家一个参考,衷心的希望本文可以对大家有所帮助,欢迎大家留言呀。

    展开全文
  • 一个预览UX和Visual Studio 2019中的用户界面的变化 多年来,我们已经了解到,共享Visual Studio的进化,你–用户–早期和经常帮助我们为我们的社区提供最好的经验。我们很高兴能分享的今天,作为Visual Studio ...

    原文地址:https://blogs.msdn.microsoft.com/visualstudio/2018/11/12/a-preview-of-ux-and-ui-changes-in-visual-studio-2019/


    这么多年来,我们已经知道应该和你们一起分享Visual Studio的进化,你–我们的用户–早期通道版的和经常帮助我们为我们的社区提供最好的经验。我们很高兴今天能在这里分享的,作为Visual Studio 2019开发的一部分,我们一直在更新我们的主题,更新我们的产品图标和启动画面,帮助你更快的获得你想要的代码。我想你在改变我们的思维和展示所产生的用户体验,你会遇到的每一天。发表你的评论或建议的特征(或报告错误!)在开发者社区,你有机会提供输入到产品的设计,在过程的早期。

    1、更新我们的产品图标

    该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/1035 访问。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y0odYW0t-1596460503502)(https://devblogs.microsoft.com/visualstudio/wp-content/uploads/sites/4/2018/11/new-old-vs-win-icons-1.png)]

    Visual Studio 2017图标(左)和新的Visual Studio 2019的图标(右)

    你可能会注意到的第一个变化是刷新我们的产品和预览图标。我们致力于提高我们的图标为每个Visual Studio版本,你可以快速找出哪个版本的Visual Studio你打开和使用。我们发现一些可用性问题在图标的方式在发布Visual Studio 2017年的早期阶段,我们致力于解决这些问题的Visual Studio 2019年。

    有一件事是,当前图标的扁平化风格使它变得几乎看不见的背景有相似的颜色。采用FLUENT软件设计系统方法对深度、照明和材料,我们的视觉增强的图标使它更可见多种背景下。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNAb2sMY-1596460503506)(https://devblogs.microsoft.com/visualstudio/wp-content/uploads/sites/4/2018/11/new-vs-icon-taskbar.png)]

    新的Visual Studio 2019图标在任务栏和开始菜单

    我们总是在学习新的形势和环境下的Visual Studio标志可能出现。我们不断提高其可读性,减少它会在一个类似的彩色背景失去机会。

    在这里插入图片描述

    Visual Studio将释放图标(左)在Visual Studio 2019预览图标(右)

    我们面临的另一个挑战是一个预览和Visual Studio最终RTM版本之间的差异。我们的产品图标是我们能够传达这种差异最明显的方式,但这确实很难与Visual Studio 2017年图标集。Visual Studio的2017年,图标被设计为大的Visual Studio家族的一部分。我们使用的方法是将我们所有的图标与一贯的“丝带”下的右侧。然而,这使得识别标记,区分应用程序从一个另一个更小的空间。

    Visual Studio 2019年,我们开始通过消除任何多余的部分的图标。我们希望把重点放在视觉工作室最知名的元素:即,无限循环

    我们增加了无限循环的大小,这给了我们更多的空间和机会显示预览和发布图标之间的差异。我们还采取了更大胆的方法我们如何代表预览。在一些地方打破图标的形状,我们保持了Visual Studio的图标的整体形状。但我们表现出了鲜明的差异,可在同一时间,这表明一个完整的(如果不是生产准备)预览。

    我们正在为Mac图标,将在即将举行的预览亮相新的Visual Studio类似的方法。

    2、更容易启动您的代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DSEw4Nkx-1596460503515)(https://devblogs.microsoft.com/visualstudio/wp-content/uploads/sites/4/2018/11/command-bar-all.png)]

    开始为Mac Visual Studio窗口(左)和Visual Studio(右)

    通过研究和观察,我们发现机会简化选择,你必须在开始使用Visual Studio中最关键的步骤。我们意识到我们需要将我们所称的“下课”的经验,为您提供最佳的路径,期待你的代码。

    无论你是新的Visual Studio或经验丰富的Visual Studio开发,新启动窗口给你快速访问,开发商获取代码的最常见的方式:克隆或查看代码,打开项目或解决方案,打开电脑本地文件夹,并创建一个新的工程。

    我们知道如何重要的名单中最近的项目和文件夹从Visual Studio 2017中的当前IDE启动页是你(超过百分之90的人使用起始页也使用最近的项目列表),所以我们一定要保持其作为经验的一个焦点位置。

    你也会找到一个新的,简化的,先让你克隆Git工作流公共Git版本只需点击几下。

    最后,我们还将创建一个新的项目的经验,一个新的最流行的模板列表和改进的搜索和过滤功能。在选择一个模板的新的设计,一步一步的方法和配置它,我们相信我们有那么强烈的这样你就可以专注于一个单一的决定。你也可以探索其他的语言、平台和Visual Studio支持并最终能够安装他们的权利,从那里的项目类型。

    3、焕然一新的蓝色主题

    在这里插入图片描述

    刷新的蓝色主题(左)在目前的蓝色主题(右)

    其中最为引人注目的视觉冲击,你会看到当你运行Visual Studio 2019是我们更新的蓝色主题。超过一半的人使用蓝色的主题,但它看起来一样从Visual Studio 2012。我们把周围的变化希望简化Visual Studio用户界面。通过软化边缘围绕我们的图标按钮、工具栏和工具窗口,我们可以提出关注你在做什么。我们已经取得了很小的变化在整个UI,这总计达清洁接口同时满足我们的可访问性标准。我们开始用蓝色的主题,这样我们就可以在你面前得到这些更新,从你的反馈中学习,然后将它应用在我们的其他主题。

    4、指尖上的生产力

    在这里插入图片描述

    目前的指挥空间(顶部)和简化的版本的Visual Studio 2019(底部)

    寻找机会扩大代码的焦点和去除杂波,我们开始与垂直空间。通过移除标题栏,我们借此机会重新评估Visual Studio最上面的布局没有彻底改变你的工作流程。我们已经搜索界面,提高曝光度。随着即将到来的预览发布和更新,你会发现,在Visual Studio 2019的搜索是更强大和精确的。

    我们现在有一个集中的位置为团队协作使用活的标题栏中的份额。组合在一起,接近签署了在Visual Studio用户账户,它现在更容易看到那些你的合作。这是建立在Visual Studio的所有版本。我们还花时间清理默认图像对齐它更好地与Windows。

    这些小的变化使我们在IDE…回收重要空间允许更大的工具窗口,代码的空间更大,更快的获得…的工具和命令,不管你。

    5、引人注目的通知

    该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/1035 访问。

    在这里插入图片描述

    明年年初,我们的一个预览版本将包括通知UI更新。通过与你交谈,我们听说当前通知的位置,图标,和国家一直不清楚你一段时间。为了解决这个问题,我们正在通知在IDE的底部的状态栏的切入点。这个新的位置,避免破坏性的UI打断你的注意力,而使我们显示各种不同的服务信息(从现场分享拉请求评论的状态)的未来。我们也从国旗钟更新图标,根据你的意见。

    6、一个持续的对话

    我们很高兴能分享这些变化,我们一直在与你,我们想听听你对我们的新设计思想,所以请在下面留下你的评论。你也可以建议一个特征或我们的错误文件开发者社区。我们想让Visual Studio每次更新你的反馈更是关键。

    展开全文
  • 索引本章最佳实践正式开始编辑准备界面UI实体编写准备界面UI逻辑类UITankItem类UIReady类进入下一流程 本章最佳实践 UI界面管理器。 正式开始 在前几章我们已经完成了准备界面所需要的大部分内容,比如坦克、武器...
  • 在Python-OpenCV中显示图像时调用的是一个单独的窗口,有时我们需要将这些图像显示在PyQt的图形化界面上,这样就可以将整个图像显示与PyQt图形化界面进行整合。但OpenCV格式的图像和PyQt格式的图像并不同,这就需要...
  • Python界面 可视化开发(python3+PyQt5+Qt Designer)

    千次阅读 多人点赞 2019-11-18 09:33:14
    以前制作一个Python窗体界面,我都是用GUI窗口视窗设计的模块Tkinter一点一点敲出来的,今天朋友问我有没有Python窗体的设计工具,“用鼠标拖拖”就能完成窗体设计,我查了查相关资料,果然有一款好用的工具——Qt ...
  • 在linux下图形界面和命令行界面的切换我估计好多喜欢用linux系统的人都不太会遇到这个问题,因为linux图形界面会占用一些系统资源并且也没那么“好用”。1. 图形界面和命令行界面的切换如果linux系统安装了“全套”...
  • Qt-多界面编程(界面切换)

    万次阅读 多人点赞 2018-10-26 11:11:41
    在Qt编程中经常遇到多个界面之间的切换, 比如从登录界面跳转到主界面, 主界面跳转到设置界面,在返回到主界面 下面更加这个流程实现一个例子: 1.在QtCreator集成开发环境上创建MultiInterface工程如下(创建...
  • centos 7 启动与切换图形界面

    万次阅读 多人点赞 2018-11-03 20:37:39
    安装图形界面 默认情况下是不会安装图形界面的,所以需要自己手动安装,步骤如下: 开启系统,以root身份进入 安装X(X Window System),命令如下: yum groupinstall "X Window System" 其中大约有...
  • 现有2个项目,taskA、...taskA负责调用taskB中指定的界面。 taskB中有3个界面,a、b、c,每个界面显示它所在的task id。 SingleTask: 其中b界面被声明为SingleTask。 先运行taskB,显示a界面,由a界面调用
  • 使用java+Mysql数据库做一个简单的登录窗口界面

    万次阅读 热门讨论 2018-12-12 17:56:19
    原文:点击打开链接
  • 虚拟机Linux图形界面和命令界面切换

    万次阅读 2018-08-07 15:38:42
    --linux切换图形界面alt+ctrl + F1-F5 更改ubuntu鼠标移出快捷键alt + ctrl   ctrl + alt + F3 编辑模式 ctrl + alt + F1 图形界面模式
  • CentOS7图形界面与命令行界面切换

    万次阅读 2018-03-01 10:54:56
    在图形界面使用 ctrl+alt+F2切换到dos界面 dos界面 ctrl+alt+F2切换回图形界面在命令上 输入 init 3 命令 切换到dos界面 输入 init 5命令 切换到图形界面 如果想系统默认以某种方式启动, 使用systemd创建符号...
  • Linux之RedHat 7 图形界面版安装

    万次阅读 2018-09-12 11:33:02
    若分配1G以下内存则只能安装最小化版(无图形界面) 选择带界面的系统安装 安装位置默认分区就行 需设置root密码 等待安装 这里需要输入搜索才能继续,点界面是没用的 ...
  • CentOS 图形界面 命令行界面切换 多种方法

    万次阅读 多人点赞 2014-07-12 15:07:27
    方法1:运行命令到图形界面  #startx , 需要先配置图形界面信息  方法2:修改/etc/inittab文件中的   id:3:initdefault , 将3改为5 ,重新启动系统;  方法3:进入图形界面: init 5 从图形界面进入文本...
  • Linux如何从图形界面切换到命令界面

    万次阅读 2013-09-18 11:17:50
    在图形界面中找一个可以输入命令的地方.(我的RedHat9中默认是按alt+F2,你也可以自己找找命令行窗口之类的东西) 输入init 3 回车. 注意init后面有一个空格 等一会就进入了图形界面 用init 5可以回到图形界面 -*-*-*-*...
1 2 3 4 5 ... 20
收藏数 2,641,608
精华内容 1,056,643
关键字:

界面