学生信息管理系统(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
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 }
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
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 }
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
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引擎)——数据结构课程设计的主要内容,如果未能解决你的问题,请参考以下文章