<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
突發奇想寫了個隨機點名器…以供使用
main函數
#include "myList.h" #define FILENAME "stu.txt" void menu();//畫面介面; void userOptions(Node* headNode);//使用者選項 int main(void) { SetConsoleTitle(L"隨機抽查系統"); Node* List = createrList(); readInfoFromFile(List, FILENAME); while (true) { menu(); userOptions(List); system("pause"); system("cls"); } system("pause"); return 0; } void menu() { printf("ttt學生點名系統n"); printf("tt1)開始隨機抽查" "tt2)新增學生n" "tt3)刪除學生" "tt4)修改學生資訊n" "ttq)退出n"); printf("請輸入你的選項:"); } void userOptions(Node* List) { Student info; char choose = '0'; choose = enter(); switch (choose) { case '1': printf("ttt*開始隨機抽查*n"); seekNode(List, rollCall(LengthNode(List))); break; case '2': printf("tttttt已有學生如下n"); printfNode(List); printf("ttt*新增學生*n"); printf("注意請從%d之後開始也就是%dn", LengthNode(List),LengthNode(List)+1); printf("tt請輸入學生序號:"); scanf_s("%d",&info.num); printf("tt請輸入學生學號:"); scanf_s("%ld", &info.number); printf("tt請輸入學生姓名:"); scanf_s("%s", info.name, sizeof(info.name)); insetNodeByHead(List, info); break; case '3': printf("tttttt已有學生如下n"); printfNode(List); printf("ttt*刪除學生*n"); printf("tt請輸入學生學號(後兩位即可):"); scanf_s("%ld", &info.number); deleteNodeAppoinNumber(List, info.number); break; case'4': printf("已有學生如下n"); printfNode(List); printf("ttt*修改學生資訊*n"); printf("tt請輸入學生學號:"); scanf_s("%ld", &info.number); upDataNode(List, info.number); break; case'q': printf("ttquit!n"); exit(0); break; default: break; } weiteInfoToFile(List, FILENAME); }
enter.h
(這個就是我自己寫來玩的,讀取輸入的字元,你們也可以自己弄一個,就可以不用我這個了。但是要記得修改一下參照這個的程式碼喔)
#pragma once //防止重複參照 #include "myList.h" //處理寫入 char enter(void); //函數宣告 char enter(void) { short count = 1;//次數 char input = getchar(); // 讀取單個字元 fflush(stdin);//清空輸入快取區,防止讀取後,又讀取 for (int i = 1; i <= 12; i++) {//如果超過誤輸入超過13次,強制退出程式 if (input == 'n') {//如果讀取的一直是回車,就會執行,否則返回該值 count++; scanf_s("%c", &input, 3); fflush(stdin); if (count == 5) { printf("ntttttt別再調皮了!n"); continue; } else if (count == 11) { printf("ntttttt別在摁確認鍵了!最後一次機會了n"); continue; } else if (count == 13) { printf("ntttttt程式已強制退出!byebye"); exit(0); } } else { return input; } } return 0; }
myList.h
#pragma once #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <time.h> #include <windows.h> #include "enter.h" typedef struct student {//型別 long int number; char name[10]; int num;//給定一個序號然後新增一個學生後就自加1; }Student; typedef struct Node { Student data; struct Node* next; }Node; //建立連結串列 Node* createrList(void) { Node* headNode = (Node*)malloc(sizeof(Node)); if (headNode) { headNode->next = NULL; } return headNode; } //建立結點 Node* createrNode(Student data) { Node* newNode = (Node*)malloc(sizeof(Node)); if (newNode) { newNode->data = data; newNode->next = NULL; } return newNode; } //插入結點 void insetNodeByHead(Node* headNode, Student data) { Node* newNode = createrNode(data); newNode->next = headNode->next; headNode->next = newNode; } //刪除結點 void deleteNodeAppoinNumber(Node* headNode, long int number) { Node* posNode = headNode->next; Node* posFrontNode = headNode; if (posNode == NULL) { printf("tt表中沒有學生n"); } else { while (posNode->data.number != number) {//沒有找到就繼續找 posFrontNode = posNode; posNode = posNode->next; if (posNode == NULL) {//找完最後一個了還沒有 printf("tt表中沒有該學生n"); return; } } //找到了,執行刪除操作 posFrontNode->next = posNode->next; free(posNode); printf("tt刪除完成!"); } } //修改結點 void upDataNode(Node* headNode, long int number) { Node* posNode = headNode->next; Node* posFrontNode = headNode; char choose = '0'; if (posNode == NULL) { printf("tt該表中沒有學生t"); } else { while (posNode->data.number != number) { posFrontNode = posNode; posNode = posNode->next; if (posNode == NULL) { printf("tt表中沒有該學生n"); return; } } while (true) { printf("tt請選擇要修改的選項:1)姓名 2)學號 q)退出!n"); printf("tt請輸入:"); choose = enter(); switch (choose) { case '1': printf("tt請輸入你要更改的名字(原姓名是%s):", posNode->data.name); scanf_s("%s", posNode->data.name, sizeof(posNode->data.name)); system("pause"); break; case '2': printf("tt請輸入你要更改的學號(原學號是%ld):", posNode->data.number); scanf_s("%ld", &posNode->data.number); system("pause"); break; case 'q': printf("ttquit!"); return; default: printf("請輸入正確選項:"); break; } } } } //列印結點 void printfNode(Node* headNode) { Node* pMove = headNode->next; printf("tttttttt學號tt姓名n"); while (pMove != NULL) { printf("tttttttt%ldt%sn", pMove->data.number, pMove->data.name); pMove = pMove->next; } printf("n"); } //檔案讀 bool readInfoFromFile(Node* headNode, char* fileName) { Student data; boolean one = false; FILE* fp; fopen_s(&fp, fileName, "r"); if (fp == NULL) { fopen_s(&fp, fileName, "w+"); } if (fp == NULL) { return EOF; } while (fscanf_s(fp, "%dt%ldt%s" , &data.num,&data.number, data.name, sizeof(data.name)) != EOF) { insetNodeByHead(headNode, data); } if (fp == NULL) { return EOF; } fclose(fp); return 0; } //檔案寫 bool weiteInfoToFile(Node* headNode, char* fileName) { FILE* fp; fopen_s(&fp, fileName, "w"); Node* pMove = headNode->next; if (fp == NULL) { return EOF; } while (pMove) { fprintf_s(fp, "%dtt%ldtt%sn", pMove->data.num,pMove->data.number,pMove->data.name); pMove = pMove->next; } if (fp == NULL) { return EOF; } fclose(fp); return 0; } //求出連結串列長度然後返回 int LengthNode(struct Node* headNode) { int length = 0; struct Node* pMove = headNode->next; while (pMove) { length++; pMove = pMove->next; } return length; } //讀取亂數然後選出該學生 void seekNode(Node* headNode, long int rand_1) { Node* posNode = headNode->next; Node* posFrontNode = headNode; if (posNode == NULL) { printf("tt該表中沒有學生t"); } else { //這裡的number改為num while (posNode->data.num != rand_1) { posFrontNode = posNode; posNode = posNode->next; if (posNode == NULL) { printf("tt該表中沒有這這個學號(%ld)的學生n", rand_1); return; } } printf("就決定是你了->"); printf("tt%ldt%snnnnn", posNode->data.number, posNode->data.name); } } //產生亂數 long int rollCall(long int length) { long int number; srand((unsigned)time(NULL)); number = rand() % length + 1;//33+40;//length+1 return number; }
到此這篇關於基於C語言實現隨機點名器(附原始碼)的文章就介紹到這了,更多相關C語言隨機點名器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45