第二次毕业设计任务书

1.第二阶段中的每周具体任务如下:

计划安排时间 计划完成内容 是否完成
2017.03.11~2017.04.14(4-8周)

1.继续学习相关内容,并实际用到开发环境中去编写测试代码;

2.把核心代码写好;

3.并开始准备毕业论文;

进行中

第四周

 查阅相关获取系统信息状态的API,编写出一个基于控制台的简单查看系统各种状态信息的程序。 完成
第五周

 扩展基本功能,不仅是局限于获取系统信息,比如有网的情况下通过调用API获取天气的信息数据等。

待完成
第六周

 研究图形化界面的编写,把相应功能用GUI界面显示。

待完成
第七周 继续上周的内容,研究图形化界面显示信息。(因为难度就在这里,动态实时显示数据信息之类的) 待完成

第八周

1.继续编写代码

2.开始准备毕业论文

待完成

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

2.我的conky功能需求分析:

  conky属于监测软件,要做到实时监测系统状态信息并反馈给用户,以便于实现系统的简单管理控制等,以下便是我暂时能想到要实现的功能:

基本功能设计:

1.显示 CPU 占用情况、磁盘容量、OS 版本号、日历、网络情况等等各类系统的信息。

2.估计会加上对数据库的操作,对一些信息的保存和读取,比如利用数据库来实现一些显示数据内容的更新。

3.联网操作,获取web端返回的信息处理并显示。比如显示天气数据就需要进行联网,这个得申请API(我在中国天气网里面申请过,但是现在还没结果,估计是不给我权限了,那后面要试试google的API)

 4.最重要的是通过图形化界面展示(感觉此部分难度比较大,所以是我重点关注部分)。

 

以下便是功能关系图:

 

 理想效果下的效果图(感觉很无奈啊,技术能力不是很高(¬_¬),到达这种效果估计跟登天一样,不过发上来解解馋):

 


 

3.代码及效果展示:

只贴出部分功能代码及效果实现图:

我暂时先用了2个比较简单的获取系统信息的例子。因为有一些实现起来比较困难我还在想办法解决(类似联网获取天气数据的情况,网络数据实时流量的检测等)

比如:

1.我想知道系统的时间,就可以根据下面的提供的函数和结构体变量进行获取:

 1 typedef struct _SYSTEMTIME {  //用来保存获取时间的结构体
 2     WORDwYear;        //
 3     WORDwMonth;        //
 4     WORDwDay;        //
 5     WORDwDayOfWeek; //周几    
 6     WORDwHour;        //小时 24小时制 
 7     WORDwMinute;    //分钟 
 8     WORDwSecond;    //
 9     WORDwMilliseconds;//毫秒 
10 } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
11 
12 SYSTEMTIME systime;//定义该结构体用来保存信息 
13 
14 GetLocalTime(&systime);//通过此函数获取本地当前时间 

格式化输出想要现实的信息:

GetLocalTime(&systime);
sprintf(szbuf, "\r%4d年%2d月%2d日%2d时%2d分%2d秒 周%d ", systime.wYear, systime.wMonth, systime.wDay, systime.wHour, systime.wMinute, systime.wSecond,systime.wDayOfWeek);
cout<<szbuf;

效果截图:

 

 

2.我想了解电脑内存的使用情况该怎么办呢(如果不知道任务管理器可以显示或者电脑没装啥软件显示的呢)其实,我们也可以自己动手来写一个查看自己电脑内存使用情况的小demo。

通过上网查阅资料才发现统计系统内存使用情况是非常简单的,直接使用GlobalMemoryStatus函数进行查询就可以了,不过也同时需要一个结构体变量作为该函数的参数用作保存信息。

GlobalMemoryStatus函数:

1 void WINAPI GlobalMemoryStatus(
2     __out    LPMEMORYSTATUS lpBuffe; //传入一个MEMORYSTATUS结构体变量
3 )

作为参数传入的结构体变量定义:

 1 typedef struct _MEMORYSTATUS {  //注释来自百度 有一些不太懂的 我也没专门查资料了解 因为没用到
 2 DWORD dwLength;         // MEMORYSTATUS结构的大小,用来供函数检测结构的版本。
 3 DWORD dwMemoryLoad;     // 内存使用率(已用内存的百分比) 
 4 DWORD dwTotalPhys;         // 物理内存总量大小。    就是实际内存总量的大小 
 5 DWORD dwAvailPhys;         // 可用物理内存大小。
 6 DWORD dwTotalPageFile;     // 交换文件总的大小。       不太懂是啥 我也没用到 
 7 DWORD dwAvailPageFile;    // 交换文件中空闲部分大小。   还是不太懂 
 8 DWORD dwTotalVirtual;     // 用户可用的地址空间 
 9 DWORD dwAvailVirtual;    // 当前空闲的地址空间
10 } MEMORYSTATUS, *LPMEMORYSTATUS;

这个函数将信息保存到作为参数传入的MEMORYSTATUS类型的结构体中,然后通过MEMORYSTATUS结构体变量打印我们需要显示的信息内容:

//因为获取到的是字节数bytes 为了直观的显示 我定义了一个宏

#define MB (1024 * 1024)    //2^20

MEMORYSTATUS memstat;

GlobalMemoryStatus(&memstat);

cout<<"当前内存使用率:\t"<<memstat.dwMemoryLoad<<"%"<<endl;
cout<<"当前内存总大小:\t"<<memstat.dwTotalPhys / MB<<"MB"<<endl;
cout<<"当前可用内存大小:\t"<<memstat.dwAvailPhys / MB<<"MB"<<endl;
cout<<"当前已用内存大小:\t"<<(memstat.dwTotalPhys - memstat.dwAvailPhys) / MB<<"MB"<<endl;

 效果截图:

 


 

4.心得与体会:

  通过这周的学习和代码的编写,我发现只是获取系统信息还是挺简单的,不过要图形化并显示出来那就比较难了,我现在心里也没啥底,我也尽量把我想到的想实现的功能都加上去,不过我相信我还是能完成我自己给自己定的需求的。

 


 

5.参考文献:

  前面这几个获取系统信息的还是挺简单的,当然我也是在网上参考其他人写的,他们才是真正的大神

posted @ 2017-03-16 17:23  看物是人非  阅读(237)  评论(2编辑  收藏  举报