学生信息管理系统(cocos2d引擎)——数据结构课程设计

Posted 树的种子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学生信息管理系统(cocos2d引擎)——数据结构课程设计相关的知识,希望对你有一定的参考价值。

老师手把手教了两天半,看了一下模式,加了几个功能就大功告成了!!!

给我的感想就是全都是指针!

 

添加图片精灵:

CCSprite*  spBG = CCSprite::create("");

this->addChild(spBG);  //添加到当前层

spGB->setPosition(ccp(x,y));  //设置坐标

spGB->setScale(0.5);  //缩放

 

文字按钮:

CCMenuItemFont* pItem = CCMenuItemFont::create("wenzi",this,menu_selector(回调函数));

再将文字按钮添加到菜单中

CCMenu* menu = CCMen::create(pItem,NULL);

this->addChild(menu);

menu->setPosition(ccp(x,y));

 

//创建文本

CCLabelTTF* ttf = CCLabelTTF::create("wenben","字体",48.0f);

this->addChild(ttf);

ttf->setPosition(cco(x,y));

//创建输入框(1、九点图,2、输入框)

CCScale9Sprite* input = CCScale9Sprite::create("");

accountBox = CCEditBox::create(CCSizeMake(r,c),input);

this->addChild(accounBox);

accountBox->setPosition(ccp(x,y));

accountBox->setInputFlag(kEditBoxInputFlagPassword);  //输入模式为密码输入

 

按钮回调函数,看输入框accountBox的内容是否是密码;

不是密码:

弹出输入框  CCMessageBox("","");

是密码切换场景

CCDirector* director = CCDirector::sharedDirector();

director->replaceScene(ListViewLayer::scene());  //另一个头文件,里面的一个场景;

 

接下来,和之前的一样了;无非就是一些按钮,文本,输入框。

在init()里面画好面板;

各种按钮里面的回调函数。

然后中文转码utf-8老师已经写好了;

贴上自己写的东西,其他的老师已经写好了

 

 1 #ifndef _Students_H_
 2 #define _Students_H_
 3 #include <iostream>
 4 using namespace std;
 5 class Students
 6 {
 7 public:
 8     int m_iNumber;
 9     char m_strName[32];
10     char m_sex;
11 public:
12     Students(int iNumber, char* strName,char sex);
13 };
14 #endif
Students.h
1 #include "Students.h"
2 
3 
4 Students::Students(int iNumber, char* strName,char sex)
5 {
6     m_iNumber = iNumber;
7     strcpy(m_strName, strName);
8     m_sex = sex;
9 }
Students.cpp
 1 #ifndef _Manager_H_
 2 #define _Manager_H_
 3 #include <iostream>
 4 using namespace std;
 5 #include <vector>
 6 #include "Students.h"
 7 class Manager
 8 {
 9 private:
10     Manager();
11 public:
12     static Manager* m_pStance;
13     static Manager* getInstance();
14 
15     // 管理学生容器
16     vector<Students*> _vStudent;
17 };
18 
19 #endif
Manager.h
 1 #include "Manager.h"
 2 
 3 Manager* Manager::m_pStance = NULL;
 4 Manager* Manager::getInstance()
 5 {
 6     if(m_pStance == NULL)
 7     {
 8         m_pStance = new Manager;
 9     }
10     return m_pStance;
11 }
12 
13 Manager::Manager()
14 {
15     Students* s = new Students(1000,"TreeDream",\'F\');
16     _vStudent.push_back(s);
17     s = new Students(1001,"马里奥", \'M\');
18     _vStudent.push_back(s);
19 }
Manager.cpp
 1 #ifndef __TABLEVIEWTESTSCENE_H__
 2 #define __TABLEVIEWTESTSCENE_H__
 3 
 4 #include "cocos2d.h"
 5 #include "cocos-ext.h"
 6 USING_NS_CC;
 7 USING_NS_CC_EXT;
 8 
 9 #include "ChineseString.h"
10 #include "Manager.h"
11 
12 //需要实现CCTabelViewDelegate和CCTabelViewDataSource这两个接口
13 class ListViewLayer : public CCLayer, 
14     public CCTableViewDataSource, 
15     public CCTableViewDelegate
16 {
17 private:
18     CCTableView* pTableView;
19     vector<Students*>::iterator it;
20 
21     CCLabelTTF* ttf;    //提示信息
22 
23     // 添加对话框需要的UI
24     CCLayerColor* layerBg;
25     CCEditBox* edit_id;
26     CCEditBox* edit_name;
27     CCEditBox* edit_sex;
28     CCMenu* menu_add_done;
29     //  添加按钮回调函数
30     void AddCallBack(CCObject* obj);
31     //  添加按钮回调函数
32     void AddDoneCallBack(CCObject* obj);
33     // 添加按钮回调函数
34     void AddDel(CCObject* obj);
35     void DelDoneCallBack(CCObject* obj);
36 
37     void Oride(CCObject* obj);
38     void OrideCallBack(CCObject* obj);
39     void OrideInf(CCObject* obj);
40 
41 
42     void Searchs(CCObject* obj);
43     void searchsInf(CCObject* obj);
44 
45     void MySort ();
46 
47 public:
48     static cocos2d::CCScene* scene();
49     // 初始化层
50     virtual bool init();
51 
52     /*因为CCTableView继承自CCScrollView所以要实现这俩个方法,里边一般都不写东西*/
53     virtual void scrollViewDidScroll(CCScrollView* view);
54     virtual void scrollViewDidZoom(CCScrollView* view);
55 
56     /*CCTabelViewDelegate类的虚函数*/
57     //处理触摸点击事件
58     virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);
59 
60     /*CCTabelViewDataSource类的虚函数*/
61     //每一项的宽度和高度
62     virtual CCSize cellSizeForTable(CCTableView *table);
63     //生成列表每一项的内容
64     virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
65     //一共多少项
66     virtual unsigned int numberOfCellsInTableView(CCTableView *table);
67 
68     // 创建层
69     CREATE_FUNC(ListViewLayer);
70 };
71 
72 #endif 
ListViewLayer.h
  1 #include "ListViewLayer.h"
  2 
  3 CCScene* ListViewLayer::scene()
  4 {
  5     CCScene *scene = CCScene::create();
  6     ListViewLayer *layer = ListViewLayer::create();
  7     scene->addChild(layer);
  8     return scene;
  9 }
 10 
 11 bool ListViewLayer::init()
 12 {
 13     //  添加背景
 14     CCSprite* spBg = CCSprite::create("HelloWorld.jpg");
 15     this->addChild(spBg);
 16     spBg->setPosition(ccp(1240/2, 640/2));
 17     // 放大
 18     spBg->setScale(1.5f);
 19 
 20     bool bRet = false;
 21     do
 22     {
 23         CC_BREAK_IF( !CCLayer::init() );
 24 
 25         // 创建对话框(参数:窗口大小)
 26         pTableView = CCTableView::create(this, CCSizeMake(960, 600));
 27         // 设置表格方向(垂直)
 28         pTableView->setDirection(kCCScrollViewDirectionVertical);
 29         // 设置坐标
 30         pTableView->setPosition(CCPointZero);
 31         // 设置delegate代理
 32         pTableView->setDelegate(this);
 33         // 设置起点(从上往下)
 34         pTableView->setVerticalFillOrder(kCCTableViewFillTopDown);
 35         // 添加到当前层
 36         this->addChild(pTableView);
 37         // 必须加,意思是用现有的配置去刷新所有的cell
 38         pTableView->reloadData();
 39 
 40 
 41         bRet = true;
 42     }while(0);
 43 
 44     // 添加按钮
 45     CCMenuItemImage* item_add = CCMenuItemImage::create(
 46         "CloseNormal.png",
 47         "CloseSelected.png",
 48         this,
 49         menu_selector(ListViewLayer::AddCallBack));
 50     // 添加菜单
 51 
 52     CCMenuItemImage* item_del = CCMenuItemImage::create(
 53         "del.png",
 54         "CloseSelected.png",
 55         this,
 56         menu_selector(ListViewLayer::AddDel));
 57 
 58     CCMenuItemImage*item_oride = CCMenuItemImage::create(
 59         "oride.png",
 60         "CloseSelected.png",
 61         this,
 62         menu_selector(ListViewLayer::Oride));
 63 
 64     CCMenuItemImage* item_search = CCMenuItemImage::create(
 65         "search.png",
 66         "search.png",
 67         this,
 68         menu_selector(ListViewLayer::Searchs));
 69 
 70     CCMenu* menu_add = CCMenu::create(item_add,item_del,item_oride,item_search,NULL);
 71     item_del->setPositionY(50);
 72     item_oride->setPositionY(100);
 73     item_search->setPositionY(150);
 74     this->addChild(menu_add);
 75     menu_add->setPosition(ccp(700,300));
 76 
 77     return true;
 78 }
 79 
 80 void ListViewLayer::Searchs(CCObject* obj) {
 81 
 82     // 添加半透明的背景
 83     layerBg = CCLayerColor::create(ccc4(0,0,0,127));
 84     this->addChild(layerBg);
 85 
 86     // 1. 创建点9图
 87     CCScale9Sprite* input = CCScale9Sprite::create("input.png");
 88     // 2. 创建输入框
 89     edit_id = CCEditBox::create(
 90         CCSizeMake(220,40),
 91         input);
 92     // 3.添加当前层
 93     this->addChild(edit_id);
 94     // 4.设置坐标
 95     edit_id->setPosition(ccp(450,300));
 96     edit_id->setPlaceHolder(ChineseString::GBKToUTF8("请输入姓名:"));
 97 
 98     // 完成添加菜单项
 99     CCMenuItemFont* item_add_done = CCMenuItemFont::create(
100         ChineseString::GBKToUTF8("查询"),
101         this,
102         menu_selector(ListViewLayer::searchsInf));
103     menu_add_done = CCMenu::create(item_add_done,NULL);
104     this->addChild(menu_add_done);
105     menu_add_done->setPosition(ccp(450,50));
106 
107 }
108 
109 void ListViewLayer::searchsInf(CCObject* obj) {
110 
111 
112     char* name = (char*)ChineseString::UTF8ToGBK(edit_id->getText());
113 
114     this->removeChild(ttf);
115     this->removeChild(edit_id);
116     this->removeChild(layerBg);
117     this->removeChild(menu_add_done);
118     
119     bool flag = false;
120     Students* sTemp;
121     for(it = Manager::getInstance()->_vStudent.begin();it!=Manager::getInstance()->_vStudent.end();it++) {
122         sTemp = *it;
123         if(strcmp(name,sTemp->m_strName)==0) {
124             // 显示详细内容
125             ttf = CCLabelTTF::create(
126                 ChineseString::GBKToUTF8(CCString::createWithFormat
127                 ("%d %s %c",
128                 sTemp->m_iNumber,
129                 sTemp->m_strName,
130                 sTemp->m_sex)->getCString()),
131                 "Arial",
132                 24);
133             this->addChild(ttf);
134             ttf->setPosition(ccp(100,100));
135             flag = true;
136             break;
137         }
138     }
139     if(flag==false) {
140         // 显示详细内容
141         this->removeChild(ttf);
142         ttf = CCLabelTTF::create(
143             ChineseString::GBKToUTF8(CCString::createWithFormat
144             ("%s %s",name,"不存在")->getCString()),
145             "Arial",
146             24);
147         this->addChild(ttf);
148         ttf->setPosition(ccp(100,100));
149     }
150 }
151 
152 //产生学号检查
153 void ListViewLayer::Oride(CCObject* obj) {
154 
155     // 添加半透明的背景
156     layerBg = CCLayerColor::create(ccc4(0,0,0,127));
157     this->addChild(layerBg);
158 
159     // 1. 创建点9图
160     CCScale9Sprite* input = CCScale9Sprite::create("input.png");
161     // 2. 创建输入框
162     edit_id = CCEditBox::create(
163         CCSizeMake(220,40),
164         input);
165     // 3.添加当前层
166     this->addChild(edit_id);
167     // 4.设置坐标
168     edit_id->setPosition(ccp(450,300));
169     edit_id->setPlaceHolder(ChineseString::GBKToUTF8("请输入学号:"));
170 
171     // 完成添加菜单项
172     CCMenuItemFont* item_add_done = CCMenuItemFont::create(
173         ChineseString::GBKToUTF8("修改"),
174         this,
175         menu_selector(ListViewLayer::OrideCallBack));
176     menu_add_done = CCMenu::create(item_add_done,NULL);
177     this->addChild(menu_add_done);
178     menu_add_done->setPosition(ccp(450,50));
179 
180 }
181 
182 //产生更替信息
183 void ListViewLayer::OrideCallBack(CCObject* obj) {
184 
185     this->removeChild(edit_id);
186     this->removeChild(menu_add_done);
187     this->removeChild(layerBg);
188     
189 
190     bool flag = false;
191 
192     int id = ChineseString::StringToInt(edit_id->getText());
193     for(it = Manager::getInstance()->_vStudent.begin();it!=Manager::getInstance()->_vStudent.end();it++) {
194         Students* sTemp = *it;
195         if(id==sTemp->m_iNumber) {
196             flag = true;
197             break;
198         }
199     }
200     if(flag==true) {
201         // 添加半透明的背景
202         layerBg = CCLayerColor::create(ccc4(0,0,0,127));
203         this->addChild(layerBg);
204 
205 
206         // 1. 创建点9图
207         CCScale9Sprite* input = CCScale9Sprite::create("input.png");
208         // 2. 创建输入框
209         edit_id
210             = CCEditBox::create(
211             CCSizeMake(220,40),
212             input);
213         // 3.添加当前层
214         this->addChild(edit_id);
215         // 4.设置坐标
216         edit_id->setPosition(ccp(450,300));
217         edit_id->setPlaceHolder(ChineseString::GBKToUTF8("请输入学号:"));
218 
219         input = CCScale9Sprite::create("input.png");
220         // 2. 创建输入框
221         edit_name = CCEditBox::create(
222             CCSizeMake(220,40),
223             input);
224         edit_name->setPlaceHolder(ChineseString::GBKToUTF8("请输入姓名:"));
225         // 3.添加当前层
226         this->addChild(edit_name);
227         // 4.设置坐标
228         edit_name->setPosition(ccp(450,200));
229 
230         input = CCScale9Sprite::create("input.png");
231         // 2. 创建输入框
232         edit_sex = CCEditBox::create(
233             CCSizeMake(220,40),
234             input);
235         edit_sex->setPlaceHolder(ChineseString::GBKToUTF8("请输入性别:"));
236         // 3.添加当前层
237         this->addChild(edit_sex);
238         // 4.设置坐标
239         edit_sex->setPosition(ccp(450,100));
240 
241         以上是关于学生信息管理系统(cocos2d引擎)——数据结构课程设计的主要内容,如果未能解决你的问题,请参考以下文章

《黑马程序猿》 cocos2d游戏引擎复习笔记一

《黑马程序猿》 cocos2d游戏引擎复习笔记一

面向基于英特尔&#174; 架构的 Android* 的 CoCos2D

Cocos2d-android游戏引擎

如何使用cocos2d

高效使用搜索引擎的几个小技巧,工作党学生党必备技能!