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

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();/*三级菜单结束*//*函数声明结束********************************************/

四、完整文件

程序中要多次用到图形库的函数,建议刚接触的初学者查看EasyX安装时附带的官方帮助文档,也可以参考我的源代码。但是考虑到帮助文档内容较少,对函数的用法介绍较少,EasyX图形库详细函数用法介绍文档和完整代码文件可以添加微信获取:A18792660219

注:如果有特别需要,可以微信私我获取ppt、开发文档、用户手册、演示视频等配套资料。

五、要点

1、创建项目:新建-项目-空项目-右键“源文件”-添加-新建项-C++文件
2、编码字符集:unicode字符集

3.将图片资源直接导入到所命名的文件夹中,注意不要将图片打包文件夹后再放入,要直接将图片导入对应文件夹。

4.解决方案配置有两种选择:debug和release,程序编译后会生成对应的文件,如debug文件夹,将图片资源导入该文件夹就可以直接运行文件夹内的可执行文件,否则无法运行,release同理。

5.信息存储用的C语言文件模块,相信可以解决大多数C语言初学者的难题。

六、最后的话

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

C语言初学者如何做出美观的图形界面(附源码及完整文件)相关推荐

  1. C语言——史上最全通讯录讲解(附源码)

    C语言--史上最全通讯录讲解(附源码) 一.开始界面的打印 二.对六大板块进行定义操作 三.对联系人进行初始化 四.对通讯录进行初始化 4.1动态版本 4.2静态版本 五.通讯录六大功能的具体实现 5 ...

  2. C语言实现中国象棋(Qt实现界面,源码下载,详细注释,易移植)

    前言:中国象棋的规则很多人都懂,用C语言做一个中国象棋游戏,其要点是怎么把抽象的规则变成形象.具体的代码.本项目提供详细的实现思路,源码附带大量的注释说明,源码逐步地实现了每一种棋类的走棋规则.吃棋规 ...

  3. 教你一小时做出推箱子游戏【附源码】

    经典的推箱子是一个古老游戏,目的是在训练你的逻辑思考能力. 在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排 ...

  4. 取消预约的c语言代码大全,C语言机房机位预约系统课设(附源码).doc

    PAGE PAGE 1 C语言机房机位预约系统课设 项目说明 本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行.(书生) 项目运行 ...

  5. C语言C++图形库---贪吃蛇大作战【附源码】

    这一节中,我们来做一款经典小游戏,贪吃蛇.先看看最终效果图 在开始之前,我们把窗体创建好. 创建一个800 * 600的窗体.这一次我们使用默认的原点和坐标轴:原点在窗体左上角,X轴正方向向右,Y轴正 ...

  6. C语言青蛙过河游戏超详细教程【附源码】

    今天给大家带来一个青蛙过河小游戏代码,先看看效果吧! 开始界面: 游戏界面 : 游戏中界面:  胜利界面: 死亡界面: 代码我们分了几个模块来写,这样不容易写乱,也方便后续修改 木板模块: #incl ...

  7. C语言做的接鸡蛋小游戏(附源码注释)【原创】

    //以下是接鸡蛋小游戏源码 .建议在VS中运行调试! /* 头文件 */ # include <windows.h> # include <stdlib.h> # includ ...

  8. C#反射技术在多语言实现中的实际用处参考,让初学者学技术有个针对性【附源码】...

    做软件,有点儿类似铁人三项比赛?赛跑.射击.游泳?  光某个环节突出,也没多大用,需要整体能力都强,能把整体都可以搞定,才容易得到比赛的胜利,光某一环节非常优秀,也赢得不来整个比赛. 这些年也还了不少 ...

  9. 惊呆了!C语言也能画小猪佩奇?【附源码】社会我佩奇哥!

    社会我佩奇兄那么火,那么我们接下来就分享下如何用 C语言 画小猪佩奇 使用带符号距离场(signed distance field, SDF)表示圆形: 沿用这个方法表示形状,但这次我们想利用 ASC ...

最新文章

  1. matlab从flove,Matlab玩出新高度,变身表白女友神器_善良995的博客-CSDN博客
  2. MySQL删除s表命令_SQLServer数据库sql语句中----删除表数据drop、truncate和delete的用法...
  3. Windows组策略完善主机安全整改实战(1)
  4. 安卓模拟器获取服务器信息出错,安卓模拟器客户端与服务器不同步
  5. Linux--安装截图工具Shutter
  6. 搭建IntelliJ IDEA+maven+jetty+SpringMVC 开发环境(二)
  7. Java泛型的个人理解
  8. 蓝桥杯 错误票据——2013年省赛C/C++ A组
  9. Java打印菱形源码及介绍
  10. 推荐一款好用的取色器(仅支持windows)
  11. vue把数据导出为Excel表格的方法
  12. iOS 录音,播放并上传
  13. MP3编码之shine压缩异常解决
  14. 制作u盘winpe启动盘_干货| 如何制作U盘启动盘安装操作系统
  15. php版本高无法删除栏目,phpcms不能删除栏目怎么办
  16. 项目Kick Off的作用
  17. 影响世界的100条管理名言
  18. 双鱼林php生成器,双鱼林php代码生成器 v2.0 完整版
  19. 微信小程序ios端唤醒不了拨打电话或者部分电话拨打不了解决方案
  20. java毕业设计KTV点歌系统mybatis+源码+调试部署+系统+数据库+lw

热门文章

  1. 爆肝,Unity3D游戏开发(第 2 章 编辑器的结构)
  2. MFC绘制双有理Bezier曲面
  3. 对物联网通信技术原理的认知与理解
  4. Springboot+vue项目毕业生信息招聘平台
  5. hibernate入门项目(一)
  6. 联想笔记本-野兽模式设置
  7. 在群辉上搭建git服务器
  8. Wireshark学习十:应用Wireshark显示过滤器分析特定数据流(下)
  9. Hadoop之——HDFS命令
  10. JavaScript 计算星座和生肖