写在前面
用c语言写图形化数据统计程序是博主这学期的工程实践作业,在写这个程序的过程中,发现csdn相关的资料很少,所以把自己的代码贴出来(使用了Easy-X图形库函数),方便小伙伴们参考。哈哈哈,有很多不足之出,欢迎大家的批评指导。
完整的代码文件请文末自取
一、程序功能描述
用户可通过文件读取方式传入数据并得到直观的统计图表
运行程序时,首先出现程序名——图形化数据统计程序,背景为闪烁移动的星星。按下任意键以确认进入程序。之后用户需要在登录界面输入用户名和密码验证身份,验证通过后方可使用程序提供的功能,系统默认需要先上传数据,用户输入存有数据的文件名,程序读取文件内的数据并显示到屏幕上。若读取成功,跳转到菜单界面;若失败,则给出相应提示后再跳转到菜单界面。若数据有误可选择修改数据功能进行更正;若文件上传失败或想统计其他数据 ,可选择重新上传功能。
用户在菜单界面可选择以下功能:
- 重新上传数据
- 修改数据
- 显示柱状图
- 显示折线图
- 显示饼图
- 退出
除退出功能外,其他功能完成后都会返回到菜单界面,统计图绘制完成后会将统计图以jpg格式保存到image文件夹,方便用户随时查看。
二、绘图模块代码
下面将绘制直方图、折线图和饼图代码贴出来供大家参考
#include"head.h"
//绘制直方图
void DrawHistogram(int mode)
{
Node* struPstr = head;
int iLiney = 440; // 背景直线
int iMultiple; // 数值转化为坐标的倍数
int iRectangley, iRectanglex = 80;// 矩形左上y坐标,左下x坐标
int iCoordinatey ; // 文字坐标
int iZengLiang ; // 坐标增量
int iTxty = 0; // 纵坐标文字
char strSring[10];
char strHistogramName[50]; // 统计图名称
strcpy(strHistogramName,strZhuTi);
// 增量处理
if(mode == 1)
{
iZengLiang = 10;
iMultiple = 4;
}
else
{
iZengLiang = 40;
iMultiple = 1;
}
// 绘图
initgraph(700, 550);
settextcolor(YELLOW);
strcat(strHistogramName,"直方图");
outtextxy(250,480,strHistogramName); // 输出统计图名称
setcolor(WHITE);
settextcolor(WHITE);
while(iLiney>=40)
{
iCoordinatey = iLiney;
itoa(iTxty, strSring, 10);
outtextxy(0, iCoordinatey, strSring); // 纵坐标文字
iTxty += iZengLiang;
line(40, iLiney, 640