北風(fēng)吹,秋風(fēng)涼,一到期末就發(fā)慌!現(xiàn)在已經(jīng)到期末了,學(xué)生們也是時(shí)候該交上這一學(xué)期的答卷了,那么作為學(xué)習(xí)C語(yǔ)言這一門課程的學(xué)生來說,什么樣的作業(yè)題目是每年都必出的呢? 沒錯(cuò),就是《學(xué)生管理系統(tǒng)》,不論是學(xué)生信息管理系統(tǒng),又或者學(xué)生成績(jī)管理系統(tǒng),都是學(xué)生管理系統(tǒng)的一部分,每年可能其他的作業(yè)題目不會(huì)出,但是這個(gè)題目卻是百分百都會(huì)出的! 題目是發(fā)下來了,可是一般除了學(xué)霸之外,大部分的人就是一臉懵逼的狀態(tài)了,這是什么鬼?要怎么做?我該怎么辦? 然后嘛,懵逼了相當(dāng)一段時(shí)間之后,就得到處找答案了!要不加個(gè)群?jiǎn)栂??可是沒人幫忙做呀!要不找個(gè)人幫我做?貌似別人也不會(huì)免費(fèi)做?。∷懔耍€是百度吧! 然后就會(huì)出現(xiàn)各種各樣的學(xué)生管理系統(tǒng)! 比如這樣的: 學(xué)習(xí)群(564950050) 一看就高大上,但是往下一看,卻看得一臉懵逼?這是用什么做的?不認(rèn)識(shí)啊。。。。。。算了,不管他,接著找吧! 然后又發(fā)現(xiàn)了這樣的: 學(xué)習(xí)群(564950050) 這個(gè)看起來不錯(cuò),雖然沒有那么華麗,但也有模有樣的嘛!然后看下怎么做的,excuse me?這是什么寫的? MFC? QT? 還是Java? 框架什么的都沒學(xué)過啊。。。。。還是找找其他的吧! 然后就發(fā)現(xiàn)了這樣的: 學(xué)習(xí)群(564950050) 蒼天??! 大地啊!終于讓我找到了熟悉的黑窗口啦?。?! 沒錯(cuò)就是我們熟悉的win32控制臺(tái)應(yīng)用程序,天天寫的黑窗口??! 就這個(gè)了!然后copy一下代碼 去試試!嗯 ,沒毛病,一噸Bug,都不知道怎么改了 (┬_┬) 哪哪都是錯(cuò)! 鑒于這種情況的發(fā)生,我就給大家?guī)砹烁R簦?/p> 學(xué)習(xí)群(564950050) 簡(jiǎn)潔的界面,不錯(cuò)吧 ! 學(xué)習(xí)群(564950050) 學(xué)生資料查詢,也不錯(cuò)吧! 下面看看代碼吧: #include #include #include #include //學(xué)生的結(jié)構(gòu)體 typedef struct stu { intnum;//學(xué)號(hào) charname[20];//姓名 floatchinese;//語(yǔ)文 floatmath;//數(shù)學(xué) floatenglish;//英語(yǔ) floatphysics;//物理 struct stu* pnext; //結(jié)構(gòu)體的內(nèi)部指針 }STU; STU* pStu = NULL;//定義一個(gè)指針 FILE *fp; void Welcome() { printf('\n\n\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 學(xué)生管理系統(tǒng)┃\n'); printf('\t\t\t┣━━━━━━━━━━━━━━━━━━━━━━━┫\n'); printf('\t\t\t┃ ①添加學(xué)生信息┃\n'); printf('\t\t\t┃ ②查找學(xué)生信息┃\n'); printf('\t\t\t┃ ③刪除學(xué)生信息┃\n'); printf('\t\t\t┃ ④修改學(xué)生信息┃\n'); printf('\t\t\t┃ ⑤退出學(xué)生系統(tǒng)┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t請(qǐng)選擇:'); } //添加信息 //函數(shù)里面沒有任何的返回值 操作了一個(gè)全局變量 void AddInformation() { system('cls'); int number; STU* pNew; STU* pTemp = pStu; while (pTemp->pnext != NULL) { pTemp = pTemp->pnext; } printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 添 加 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t您需要添加幾位學(xué)員:'); scanf('%d', &number); // for已知循環(huán)次數(shù) while未知循環(huán)次數(shù) for (int i = 1; i <= number;="">=> { system('cls'); printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 添 加 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); pNew = (STU*)malloc(sizeof(STU)); pNew->pnext = NULL; printf('\t\t\t請(qǐng)輸入第%d個(gè)學(xué)員信息:\n', i); printf('\t\t\t學(xué)號(hào):'); scanf('%d', &pNew->num); printf('\t\t\t姓名:'); scanf('%s', pNew->name); printf('\t\t\t語(yǔ)文:'); scanf('%f', &pNew->chinese); printf('\t\t\t數(shù)學(xué):'); scanf('%f', &pNew->math); printf('\t\t\t英語(yǔ):'); scanf('%f', &pNew->english); printf('\t\t\t物理:'); scanf('%f', &pNew->physics); pTemp->pnext = pNew; pTemp = pTemp->pnext; } printf('\n\t\t\t保存成功!按任意鍵繼續(xù)...'); _getch(); } //全部瀏覽 void SearchAll() { STU* pTemp = pStu->pnext; printf('\t\t\t 學(xué)號(hào)\t姓名\t語(yǔ)文\t數(shù)學(xué)\t英語(yǔ)\t物理\t\n'); // for while 循環(huán)次數(shù) while (pTemp != NULL) //什么時(shí)候退出循環(huán) { printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); pTemp = pTemp->pnext; } _getch(); } //按照學(xué)號(hào)查找 void SearchNum() { int keynum; STU* pTemp = pStu->pnext; printf('\t\t\t請(qǐng)輸入要查找的學(xué)號(hào):'); scanf('%d', &keynum); while (pTemp != NULL) { if (keynum == pTemp->num) { printf('\t\t\t查找到的信息:\n'); printf('\t\t\t 學(xué)號(hào)\t姓名\t語(yǔ)文\t數(shù)學(xué)\t英語(yǔ)\t物理\t\n'); printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); _getch(); return; } pTemp = pTemp->pnext; } printf('\t\t\t沒有找到你需要的內(nèi)容!\n'); _getch(); } //按照姓名查找 void SearchName() { char keyname[20]; STU* pTemp = pStu->pnext; printf('\t\t\t請(qǐng)輸入要查找的姓名:'); scanf('%s', &keyname); while (pTemp != NULL) { if (!strcmp(keyname, pTemp->name)) { printf('\t\t\t查找到的信息:\n'); printf('\t\t\t 學(xué)號(hào)\t姓名\t語(yǔ)文\t數(shù)學(xué)\t英語(yǔ)\t物理\t\n'); printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); _getch(); return; } pTemp = pTemp->pnext; } printf('\t\t\t沒有找到你需要的內(nèi)容!\n'); _getch(); } //查找信息 void Search() { int choice; do { system('cls'); printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 查 找 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t 1.全部瀏覽\n'); printf('\t\t\t 2.按學(xué)號(hào)查找\n'); printf('\t\t\t 3.按姓名查找\n'); printf('\t\t\t 4.返回主菜單\n\t\t\t '); scanf('%d', &choice); switch (choice) { case 1:SearchAll(); break; case 2:SearchNum(); break; case 3:SearchName(); break; default:break; } } while (choice != 4); } //刪除信息 void Delete() { int keynum; //按照學(xué)號(hào)來刪除 STU* pPre = pStu; STU* pDel = pStu->pnext; system('cls'); printf('\n\n'); printf('\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n'); printf('\t\t\t┃ 刪 除 信 息┃\n'); printf('\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━┛\n'); printf('\t\t\t請(qǐng)輸入學(xué)號(hào):'); scanf('%d', &keynum); while (pDel != NULL) { if (keynum == pDel->num) { printf('已查找到%d號(hào)學(xué)員:\n', keynum); printf('\t\t\t 學(xué)號(hào)\t姓名\t語(yǔ)文\t數(shù)學(xué)\t英語(yǔ)\t物理\t\n'); printf('\t\t\t %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n', pDel->num, pDel->name, pDel->chinese, pDel->math, pDel->english, pDel->physics); printf('\t\t\t 是否刪除該信息?(Y/N)'); char ch; fflush(stdin); ch = getchar(); if (ch == 'Y' || ch == 'y') { pPre->pnext = pDel->pnext; free(pDel); return; } else { return; } } pDel = pDel->pnext; pPre = pPre->pnext; } printf('\t\t\t未找到該學(xué)員信息!'); _getch(); } //修改信息 void Modify() { } void ScanfTxt() { } void PrintToTxt() { STU* pTemp = pStu->pnext; if ((fp = fopen('學(xué)生信息.txt', 'w')) == NULL) { printf('\t\t\t打開文件失敗!\n'); _getch(); return; } while (pTemp != NULL) { fprintf(fp, '%d %s %.1f %.1f %.1f %.1f\n', pTemp->num, pTemp->name, pTemp->chinese, pTemp->math, pTemp->english, pTemp->physics); pTemp = pTemp->pnext; } fclose(fp); printf('\t\t\t保存成功!'); _getch(); exit(0); } //主函數(shù) int main() { int choice; if ((fp = fopen('學(xué)生信息.txt', 'r')) == NULL) { printf('\t\t\t打開文件失敗!'); _getch(); return -1; } pStu = (STU*)malloc(sizeof(STU)); //分配一個(gè)學(xué)員的內(nèi)存大小 pStu->pnext = NULL; while (1) { system('cls'); Welcome(); scanf('%d', &choice); switch (choice) { case 1: //添加學(xué)生信息 AddInformation(); break; case 2: //查找學(xué)生信息 //學(xué)號(hào) 姓名 Search(); break; case 3: //刪除信息 Delete(); break; case 4: //修改信息 Modify(); break; case 5: //讓所有信息保存到文件中 PrintToTxt(); break; default: break; } } return 0; } 總的來說嘛,學(xué)習(xí)C語(yǔ)言并不難,各位可以加下群564950050,一起可以交流提升學(xué)習(xí),編程不要覺得很難,你覺得難是因?yàn)樯磉厸]有相同興趣的人,只有你在孤軍奮斗,如果碰到一個(gè)問題總是得不到解決,自然而然就沒有再學(xué)下去的興趣了,有伙伴一起學(xué)習(xí)才有學(xué)習(xí)的動(dòng)力! |
|