欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實(shí)現(xiàn)魔方比賽管理系統(tǒng)

 更新時(shí)間:2022年05月30日 10:41:56   作者:神奇的布?xì)W  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)魔方比賽管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)魔方比賽管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define AVAILABLE 0
#define UNAVAILABLE 1
#define MAXNAME 30
#define CLEAR "cls"
?
typedef struct match{
? ? char *name;
? ? int id;
? ? int count;
? ? int status;
? ? struct match *next;
}Match;
?
void welcome();
void error(char *); ? ? ? ?
char land(); ? ? ? ? ? ? ??
int player(); ? ? ? ? ??
int usrmanager(); ? ? ? ? ? ?
int viewmatch(); ? ? ? ? ??
int addmatch(); ? ? ? ? ? ? ??
int modmatch(); ? ? ? ? ? ? ?
int delmatch(); ? ? ? ? ? ? ? ?
void printmatch(Match *); ? ? ?
Match *lookup(char *, int); ? ?
int joinmatch(); ? ? ? ? ? ??
int finishmatch(); ? ? ? ? ? ?
?
Match *head = NULL;
int nmatch = 0;
?
//主函數(shù)
?
int main(){
? ??
? ? welcome();
? ? return 0;
}
?
void welcome(){
? ? printf("*************************歡迎使用魔方比賽管理系統(tǒng)*************************\n");
? ? while(1){
? ? ? ? printf("-------------------------------------\n");
? ? ? ? printf("請(qǐng)輸入項(xiàng)目前編號(hào)執(zhí)行相關(guān)操作:\n");
? ? ? ? printf("\n[1] 管理員入口\n\n[2] 選手入口\n\n[0] 退出\n\n");
? ? ? ? switch(land()){
? ? ? ? ? ? case '1':
? ? ? ? ? ? ? ? while(1){
? ? ? ? ? ? ? ? ? ? if(usrmanager()){
? ? ? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case '2':
? ? ? ? ? ? ? ? while(1){
? ? ? ? ? ? ? ? ? ? if(player()){
? ? ? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case '0':
? ? ? ? ? ? ? ? exit(0);
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? error("采集項(xiàng)目參數(shù)失敗");
? ? ? ? }
? ? }
}
char land(){
? ? char c, flag;
? ? int i;
? ? while(1){
? ? ? ? for(i = 0; (c = getchar()) != '\n'; flag = c, ++i)
? ? ? ? ? ? ;
? ? ? ? if(i == 1){
? ? ? ? ? ? if(flag == '1' || flag == '2' || flag == '0'){
? ? ? ? ? ? ? ? return flag;
? ? ? ? ? ? }
? ? ? ? }else if(i == 0){
? ? ? ? ? ? continue;
? ? ? ? }
? ? ? ? error("[請(qǐng)輸入命令: 1 / 2 / 0 選擇項(xiàng)目]");
? ? }
? ? return '\0';
}
void error(char *s){
? ? fprintf(stderr, "%s\n", s);
}
char dostudent(){
? ? char c, flag;
? ? int i;
? ? while(1){
? ? ? ? for(i = 0; (c = getchar()) != '\n'; flag = c, ++i )
? ? ? ? ? ? ;
? ? ? ? if(i == 1){
? ? ? ? ? ? if(flag == '1' || flag == '2' || flag == '3' || flag == '0'){
? ? ? ? ? ? ? ? return flag;
? ? ? ? ? ? }
? ? ? ? }else if(i == 0){
? ? ? ? ? ? continue;
? ? ? ? }
? ? ? ? error("[請(qǐng)輸入命令: 1 / 2 / 3/ 0 選擇項(xiàng)目]");
? ? }
}
int player(){
? ? printf("-------------------------------------\n");
? ? printf("請(qǐng)輸入項(xiàng)目前編號(hào)執(zhí)行相關(guān)操作:\n\n");
? ? printf("[1] 報(bào)名比賽\n[2] 完成比賽\n[3] 查看比賽\n");
? ? printf("[0] 返回主頁\n");
? ? switch(dostudent()){
? ? ? ? case '1':
? ? ? ? ? ? joinmatch();
? ? ? ? ? ? break;
? ? ? ? case '2':
? ? ? ? ? ? finishmatch();
? ? ? ? ? ? break;
? ? ? ? case '3':
? ? ? ? ? ? viewmatch();
? ? ? ? ? ? break;
? ? ? ? case '0':
? ? ? ? ? ? return 0;
? ? ? ? default:
? ? ? ? ? ? error("采集項(xiàng)目參數(shù)失敗");
? ? ? ? ? ? break;
? ? }
? ? return 1;
}
int joinmatch(){
? ? system(CLEAR);
? ? char sname[MAXNAME];
? ? printf("搜索比賽:\n");
? ? ? ? scanf("%s", sname);
? ? ? ? getchar();
? ? ? ? Match *bp;
? ? ? ? char *namep = NULL;
? ? ? ? if((bp = lookup(namep = strdup(sname), 0)) == NULL){
? ? ? ? ? ? printf("比賽 %s 不存在\n", namep);
? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? return -1;
? ? ? ? }else{
? ? ? ? ? ? printmatch(bp);
? ? ? ? ? ? if(! bp->status){
? ? ? ? ? ? ? ? printf("參加比賽: Y N\n");
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? printf("比賽進(jìn)行中\(zhòng)n");
? ? ? ? ? ? ? ? return 0;
? ? ? ? ? ? }
? ? ? ? ? ? while(1){
? ? ? ? ? ? ? ? char c = '\0';
? ? ? ? ? ? ? ? scanf("%c", &c);
? ? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? ? if(!(c == 'Y' || c == 'y' || c == 'N' || c == 'n')){
? ? ? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? ? ? error("指令無效");
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(c == 'Y' || c == 'y'){
? ? ? ? ? ? ? ? ? ? --bp->count > -1 ? printf("成功\n") : printf("失敗\n");
? ? ? ? ? ? ? ? ? ? if(! bp->count){
? ? ? ? ? ? ? ? ? ? ? ? bp->status = UNAVAILABLE;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? return bp->id;
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? return 0;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } ?
? ? return -1;
}
int finishmatch(){
? ? system(CLEAR);
? ? char sname[MAXNAME];
? ? printf("完成比賽:\n");
? ? scanf("%s", sname);
? ? getchar();
? ? Match *bp;
? ? char *namep;
? ? if((bp = lookup(namep = strdup(sname), 0)) == NULL){
? ? ? ? fflush(stdin);
? ? ? ? printf("此賽事沒有注冊(cè)\n");
? ? ? ? return -1;
? ? }else{
? ? ? ? printmatch(bp);
? ? ? ? printf("完成比賽: Y N\n");
? ? ? ? while(1){
? ? ? ? ? ? char c = '\0';
? ? ? ? ? ? scanf("%c", &c);
? ? ? ? ? ? getchar();
? ? ? ? ? ? if(!(c == 'Y' || c == 'y' || c == 'N' || c == 'n')){
? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? error("指令無效");
? ? ? ? ? ? }else if(c == 'Y' || c == 'y'){
? ? ? ? ? ? ? ? bp->count++ ? 0: (bp->status = AVAILABLE);
? ? ? ? ? ? ? ? printf("成功\n");
? ? ? ? ? ? ? ? return bp->id;
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? return 0;
? ? ? ? ? ? }
? ? ? ? }
? ? }
?
? ? return -1;
}
char domanager(){
?
? ? char c, flag;
? ? int i;
? ??
? ? while(1){
? ? ? ? for(i = 0; (c = getchar()) != '\n'; flag = c, ++i)
? ? ? ? ? ? ;
? ? ? ? if(i == 1){
? ? ? ? ? ? if(flag == '1' || flag == '2' || flag == '3' || flag == '4' || flag == '0'){
? ? ? ? ? ? ? ? return flag;
? ? ? ? ? ? }
? ? ? ? }else if(i == 0){
? ? ? ? ? ? continue;
? ? ? ? }
? ? ? ? error("[請(qǐng)輸入命令: 1 / 2 / 3/ 4 / 0 選擇項(xiàng)目]");
? ? ? ? ? ??
? ? }
? ??
? ? return '\0';
}
int usrmanager(){
? ? printf("-------------------------------------\n");
? ? printf("請(qǐng)輸入項(xiàng)目前編號(hào)執(zhí)行相關(guān)操作:\n\n");
? ? printf("[1] 查看比賽項(xiàng)目\n[2] 添加新項(xiàng)目\n[3] 修改已有項(xiàng)目\n[4] 刪除比賽項(xiàng)目\n");
? ? printf("[0] 返回主頁\n");
? ? switch(domanager()){
? ? ? ? case '1':
? ? ? ? ? ? viewmatch();
? ? ? ? ? ? break;
? ? ? ? case '2':
? ? ? ? ? ? addmatch();
? ? ? ? ? ? break;
? ? ? ? case '3':
? ? ? ? ? ? modmatch();
? ? ? ? ? ? break;
? ? ? ? case '4':
? ? ? ? ? ? delmatch();
? ? ? ? ? ? break;
? ? ? ? case '0':
? ? ? ? ? ? return 0;
? ? ? ? default:
? ? ? ? ? ? error("采集項(xiàng)目參數(shù)失敗");
? ? ? ? ? ? break;
? ? }
? ? return 1;
?
}
int viewmatch(){
? ? system(CLEAR); ? ? ?
? ? Match *bp;
? ? for(bp =head; bp != NULL; bp = bp->next){
? ? ? ? printmatch(bp);
? ? }
? ? if(nmatch){
? ? ? ? return nmatch;
? ? }else{
? ? ? ? printf("比賽沒有這個(gè)項(xiàng)目\n");
? ? ? ? return 0;
? ? }
? ? return -1;
}
void printmatch(Match *bp){
? ? printf("項(xiàng)目編號(hào):%d\n", bp->id);
? ? printf("項(xiàng)目名:%s\n", bp->name);
? ? printf("項(xiàng)目狀態(tài):%s\n", bp->status ? "未開始" : "開始");
}
int addmatch(){
? ? system(CLEAR); ? ??
? ? char sname[MAXNAME];
? ? int id, count;
? ? char *namep;
?
? ? while(1){
? ? ? ? id = 0;
? ? ? ? count = 0;
? ? ? ? namep = NULL;
? ? ? ? printf("請(qǐng)輸入比賽名:\n");
? ? ? ? scanf("%s", sname);
? ? ? ? getchar();
? ? ? ? printf("請(qǐng)輸入小于1000的比賽編號(hào):\n");
? ? ? ? scanf("%d", &id);
? ? ? ? getchar();
? ? ? ? if(!(id > 0 && id < 1000)){
? ? ? ? ? ? error("輸入編號(hào)不符合要求");
? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? continue;
? ? ? ? }
? ? ? ? printf("請(qǐng)輸入小于50的比賽選手?jǐn)?shù)量:\n");
? ? ? ? scanf("%d", &count);
? ? ? ? getchar();
? ? ? ? if(!(count > 0 && count < 50)){
? ? ? ? ? ? error("輸入數(shù)目不符合要求");
? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? continue;
? ? ? ? }
? ? ? ? Match *bp; ? ? ? ?
? ? ? ? if((bp = lookup(namep = strdup(sname), id)) == NULL){
? ? ? ? ? ? bp = (Match *)malloc(sizeof (Match));
? ? ? ? ? ? if(bp == NULL || (bp->name = namep) == NULL){
? ? ? ? ? ? ? ? error("添加比賽失敗");
? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? bp->id = id;
? ? ? ? ? ? bp->count = count;
? ? ? ? ? ? bp->status = AVAILABLE;
? ? ? ? ? ? ++nmatch;
? ? ? ? ? ??
? ? ? ? ? ? bp->next = head;
? ? ? ? ? ? head = bp;
? ? ? ? ? ? printf("比賽 %s 注冊(cè)成功\n", sname);
? ? ? ? ? ? return id;
? ? ? ? }else{
? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? error("項(xiàng)目名或編號(hào)已經(jīng)被占用");
? ? ? ? }
? ? }
?
? ? return -1;
}
Match *lookup(char *s, int id){
? ? Match *bp;
? ? for(bp = head; bp != NULL; bp = bp->next){
? ? ? ? if(id == bp->id || strcmp(s, bp->name) == 0){
? ? ? ? ? ? return bp;
? ? ? ? }
? ? }
? ? return NULL;
}
int modmatch(){ ?
? ? system(CLEAR); ? ?
? ? Match *bp = NULL;
? ? while(1){
? ? ? ? int id = 0;
? ? ? ? printf("請(qǐng)輸入要修改信息的項(xiàng)目編號(hào):\n");
? ? ? ? scanf("%d", &id);
? ? ? ? getchar();
? ? ? ? if(!(id > 0 && id < 1000)){
? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? error("項(xiàng)目編號(hào)不符合要求");
? ? ? ? ? ? continue;
? ? ? ? }
? ? ? ? if((bp = lookup("", id)) != NULL){
? ? ? ? ? ? printf("以下為要修改的項(xiàng)目的現(xiàn)有信息:\n");
? ? ? ? ? ? printmatch(bp);
? ? ? ? ? ? printf("[1] 修改項(xiàng)目名\n[2] 修改比賽選手?jǐn)?shù)量\n[3] 修改項(xiàng)目狀態(tài)\n[0] 放棄修改\n");
? ? ? ? ? ? while(1){
? ? ? ? ? ? ? ? int i;
? ? ? ? ? ? ? ? scanf("%d", &i);
? ? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? ? if(!(i == 1 || i == 2 || i == 3 || i == 0)){
? ? ? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? ? ? error("輸入項(xiàng)目前編號(hào)選擇相關(guān)項(xiàng)目");
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? switch(i){
? ? ? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? ? ? while(1){
? ? ? ? ? ? ? ? ? ? ? ? ? ? char newname[MAXNAME], *namep;
? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("項(xiàng)目名:\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? scanf("%s", newname);
? ? ? ? ? ? ? ? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? ? ? ? ? ? ? ? if((lookup(namep = strdup(newname), 0)) != NULL){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? error("項(xiàng)目名已存在");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? if((bp->name = namep) != NULL){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("修改成功\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return id;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? ? ? while(1){
? ? ? ? ? ? ? ? ? ? ? ? ? ? int bnum;
? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("輸入比賽數(shù)量:\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? scanf("%d", &bnum);
? ? ? ? ? ? ? ? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(!(bnum > 0 || bnum < 1000)){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? error("數(shù)目不符合要求");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? bp->count = bnum;
? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("修改成功\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? return id;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? ? ? while(1){
? ? ? ? ? ? ? ? ? ? ? ? ? ? char c;
? ? ? ? ? ? ? ? ? ? ? ? ? ? int status;
? ? ? ? ? ? ? ? ? ? ? ? ? ? status = bp->status;
? ? ? ? ? ? ? ? ? ? ? ? ? ? status == AVAILABLE ? printf("修改狀態(tài)為[未開始]: Y N\n") : printf("修改狀態(tài)為[開始]: Y N\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? scanf("%c", &c);
? ? ? ? ? ? ? ? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(!( c == 'Y' || c == 'y' || c == 'N' || c == 'n')){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? error("指令無效");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(c == 'Y' || c == 'y'){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?status == AVAILABLE ? bp->status = UNAVAILABLE : (bp->status = AVAILABLE);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?printf("修改成功\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?return id;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("放棄修改\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return 0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case 0:
? ? ? ? ? ? ? ? ? ? ? ? return 0;
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? error("獲取參數(shù)失敗");
? ? ? ? ? ? ? ? ? ? ? ? break; ??
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? printf("沒有此比賽\n");
? ? ? ? ? ? return 0;
? ? ? ? }
? ? }
? ? return -1;
}
int delmatch(){
? ? system(CLEAR); ? ?
? ? Match *bp, *fbp;
? ??
? ? int id = 0;
? ? printf("請(qǐng)輸入要注銷的項(xiàng)目編號(hào):\n");
? ? scanf("%d", &id);
? ? getchar();
? ? if(!(id > 0 && id < 1000)){
? ? ? ? fflush(stdin);
? ? ? ? error("項(xiàng)目編號(hào)不符合要求");
? ? ? ? return -1;
? ? }
? ? for(fbp = bp = head; bp != NULL; fbp = bp, bp = bp->next){
? ? ? ? if(bp->id == id){
? ? ? ? ? ? printmatch(bp);
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? if(bp != NULL){
? ? ? ? while(1){
? ? ? ? ? ? printf("確定要注銷此項(xiàng)目:Y ?N\n");
? ? ? ? ? ? char YN;
? ? ? ? ? ? scanf("%c", &YN);
? ? ? ? ? ? getchar();
? ? ? ? ? ? if(!((YN == 'Y' || YN == 'y') || (YN == 'N' || YN == 'n'))){
? ? ? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? ? ? error("指令無效\n");
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? if(YN == 'Y' || YN == 'y'){
? ? ? ? ? ? ? ? bp == head ? head = bp->next : (fbp->next = bp->next);
? ? ? ? ? ? ? ? free(bp->name); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? free(bp);
? ? ? ? ? ? ? ? bp = NULL;
? ? ? ? ? ? ? ? printf("項(xiàng)目注銷成功\n");
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? printf("放棄注銷\n");
? ? ? ? ? ? ? ? return 0;
? ? ? ? ? ? }
? ? ? ? } ?
? ? ? ? return id;
? ? }else{
? ? ? ? printf("要注銷的項(xiàng)目編號(hào)不存在\n");
? ? ? ? return -1;
? ? }
? ? return -1;
}

主界面包含管理員入口、選手入口、和退出功能。

管理員入口進(jìn)入有如下功能

選手入口進(jìn)入有如下功能

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論