int delete_student() { int i,j = 0 ; char dele_name[MAX_NAME]; printf("delete_student name:\n"); scanf("%s",dele_name); for(i = 0; i < student_count; i++){ if(strcmp(stu[i].name, dele_name) == 0){ for(j = i; j < student_count; j++){ strcpy(stu[j].name,stu[j+1].name); stu[j].number = stu[j+1].number; stu[j].score = stu[j+1].score; } break; } } if(j){ printf("delete success\n"); mem2file(); return 0; }else printf("not find\n"); return 1; }
int add_student() { printf("name:\n"); scanf("%s",stu[student_count].name); printf("number:\n"); scanf("%d",&stu[student_count].number); printf("score:\n"); scanf("%d",&stu[student_count].score); student_count++; mem2file(); printf("success\n"); return 1; }
int change_student() { int i; if((i = find_name()) != -1){ printf("name:\n"); scanf("%s",stu[i].name); printf("number:\n"); scanf("%d",&stu[i].number); printf("score:\n"); scanf("%d",&stu[i].score); mem2file(); printf("change success\n"); return 0; }else{ printf("not find you want to change student\n"); } }
void CSender::OnRecvData(const InterfaceDescription::Member* /*pMember*/, const char* /*srcPath*/, Message& msg) { uint8_t * data; size_t size; mTrain::iterator iter; const char * pJoiner = msg->GetSender(); mTrain & train = m_mTrain[pJoiner]; SessionId sessionId = m_pMob->GetSessionID(); msg->GetArg(0)->Get("ay", &size, &data); if (IS_TRAIN_HEADER(data) && size == sizeof(TRAIN_HEADER)) { TRAIN_HEADER * pTH = (TRAIN_HEADER *)data; if (pTH->action == ACT_END) OnDataEnd(pTH->footprint, pJoiner); else if (pTH->action == ACT_NO_MISSING) m_pMob->SetSignal(pJoiner, false); else { train[pTH->chain].action = pTH->action; train[pTH->chain].footprint = pTH->footprint; blkInit(&(train[pTH->chain].body)); memcpy(train[pTH->chain].extra, pTH->extra, TRAIN_EXTRA_LEN); if (pTH->action == ACT_FILE) { FILE_SEND_ITEM * pFSI = (FILE_SEND_ITEM *)pTH->extra; if (pFSI) { qcc::String uri = pFSI->uri; train[pTH->chain].path = mem2file(0, 0, uri.substr(uri.find_last_of('.')).data()); } } } } else if ((iter = train.find(((int*)data)[0])) != train.end()){ if (size == sizeof(int)) { switch (iter->second.action) { case ACT_SIGNAL: MissingCheck(iter->second.body.z); blkFree(&(iter->second.body)); break; case ACT_MISSING: { sqlite3_stmt *pStmt = NULL; sqlite3_stmt *pStmt2 = NULL; SYNC_DATA sd; strcpy_s(sd.joiner, sizeof(sd.joiner), m_pMob->GetJoinName()); QUERY_SQL_V(m_pMob->GetUndoDB(), pStmt2, ("SELECT num, snum, base_table, redo FROM works WHERE joiner=%Q AND snum IN (%s)", sd.joiner, iter->second.body.z), sd.snum = sqlite3_column_int(pStmt2, 1); strcpy_s(sd.base_table, sizeof(sd.base_table), (const char *)sqlite3_column_text(pStmt2, 2)); sd.snum_prev = -1; QUERY_SQL_V(m_pMob->GetUndoDB(), pStmt, ("SELECT joiner, snum FROM works WHERE num < %d AND base_table=%Q ORDER BY num DESC LIMIT 1", sqlite3_column_int(pStmt2, 0), sd.base_table), strcpy_s(sd.joiner_prev, sizeof(sd.joiner_prev), (const char *)sqlite3_column_text(pStmt, 0)); sd.snum_prev = sqlite3_column_int(pStmt, 1); break; ); alljoyn_send(sessionId, msg->GetSender(), ACT_DATA, (char *)sqlite3_column_text(pStmt2, 3), sqlite3_column_bytes(pStmt2, 3) + 1, (const char *)&sd, sizeof(SYNC_DATA)); ); blkFree(&(iter->second.body)); break; } case ACT_DATA: { TRAIN & cargo = m_mStation[pJoiner][iter->second.footprint]; cargo.action = iter->second.action; blkMove(&(cargo.body), &(iter->second.body)); memcpy(cargo.extra, iter->second.extra, TRAIN_EXTRA_LEN); break; } case ACT_FLIST: if (sizeof(FILE_SEND_ITEM) % iter->second.body.nUsed == 0) { int n = 0; Block data; vRecvFiles::iterator _iter; FILE_SEND_ITEM * pFSI = (FILE_SEND_ITEM *)iter->second.body.z; blkInit(&data); while (n < iter->second.body.nUsed) { if ((_iter = std::find_if(gRecvFiles.begin(), gRecvFiles.end(), find_uri(sessionId, msg->GetSender(), pFSI->uri))) == gRecvFiles.end() || (*_iter)->mtime != pFSI->mtime || (*_iter)->mtime != pFSI->mtime) mem2mem(&data, (char *)pFSI, sizeof(FILE_SEND_ITEM)); n += sizeof(FILE_SEND_ITEM); pFSI++; } if (data.nUsed > 0) SendData(pJoiner, iter->second.footprint, ACT_FLIST_REQ, sessionId, data.z, data.nUsed); // special target most be assigned. else OnDataEnd(iter->second.footprint, pJoiner); blkFree(&data); blkFree(&(iter->second.body)); } break; case ACT_FLIST_REQ: if (sizeof(FILE_SEND_ITEM) % iter->second.body.nUsed == 0) { int n = 0; FILE_SEND_ITEM * pFSI = (FILE_SEND_ITEM *)iter->second.body.z; while (n < iter->second.body.nUsed) { SendFile(pJoiner, iter->second.footprint, ACT_FILE, sessionId, pFSI); n += sizeof(FILE_SEND_ITEM); pFSI++; } SendData(pJoiner, iter->second.footprint, ACT_END, sessionId, 0, 0);// special target most be assigned. } blkFree(&(iter->second.body)); break; case ACT_FILE: SaveFileInfo(sessionId, pJoiner, iter->second.path.data(), (FILE_SEND_ITEM *)iter->second.extra); break; default: blkFree(&(iter->second.body)); break; } train.erase(iter); }