C語(yǔ)言編寫(xiě)實(shí)現(xiàn)學(xué)生管理系統(tǒng)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
項(xiàng)目介紹
學(xué)生信息管理系統(tǒng)是一個(gè)基于C語(yǔ)言開(kāi)發(fā)的系統(tǒng),其中有用到冒泡排序、指針、結(jié)構(gòu)體、二位數(shù)組等知識(shí)。通過(guò)模塊化的方法編寫(xiě)各個(gè)函數(shù),其中在主界面函數(shù)調(diào)用各個(gè)模塊的函數(shù)的實(shí)現(xiàn)以下具體功能:
1、學(xué)生信息的增刪改查
2、學(xué)生成績(jī)的排序
3、統(tǒng)計(jì)學(xué)生人數(shù)
4、顯示所有學(xué)生的信息。
5、對(duì)學(xué)生信息存檔
總體設(shè)計(jì)
本實(shí)驗(yàn)通過(guò)在main函數(shù)打開(kāi)保存數(shù)據(jù)結(jié)果的文檔和調(diào)用主界面函數(shù);在主界面函數(shù)welcom()中實(shí)現(xiàn)邊框的繪制,以及顯示各個(gè)功能及各個(gè)功能對(duì)應(yīng)的函數(shù)實(shí)現(xiàn)方法。
錄入信息函數(shù)addInfo():此函數(shù)通過(guò)結(jié)構(gòu)體student來(lái)保存錄入的信息,其中為了確保數(shù)據(jù)的后續(xù)操作的準(zhǔn)確性,通過(guò)學(xué)號(hào)的唯一性來(lái)標(biāo)識(shí)每個(gè)學(xué)生的信息,通過(guò)編寫(xiě)及調(diào)用一個(gè)isIdSame()函數(shù),該函數(shù)通過(guò)遍歷所有學(xué)號(hào)確認(rèn)學(xué)號(hào)來(lái)保障學(xué)號(hào)的唯一性,學(xué)號(hào)重復(fù)會(huì)提示用戶需要重新輸入函數(shù)。
查找學(xué)生信息函數(shù):通過(guò)學(xué)號(hào)查找學(xué)生的信息,編寫(xiě)并調(diào)用一個(gè)findIndex()函數(shù),該函數(shù)會(huì)遍歷結(jié)構(gòu)體的學(xué)號(hào)信息,查詢到會(huì)返回該學(xué)號(hào)的坐標(biāo),沒(méi)有找到該學(xué)號(hào)則返回-1;通過(guò)變量target來(lái)保存返回的結(jié)果。如果target不等于-1,則程序找到了該學(xué)號(hào),通過(guò)編寫(xiě)并調(diào)用一個(gè)showInfo()函數(shù)來(lái)輸出所有該學(xué)生的信息;否則輸出查詢此人,因?yàn)橄聵?biāo)不可能為負(fù)數(shù)。
更新學(xué)生信息函數(shù)update():通過(guò)學(xué)號(hào)來(lái)找到該學(xué)生,調(diào)用findIndex()函數(shù)來(lái)確定該學(xué)生的位置,如果返回結(jié)果是小于0則函數(shù)結(jié)束,查無(wú)此人;若大于0則找到該學(xué)生,通過(guò)do…while函數(shù)switch選擇語(yǔ)句的嵌套來(lái)進(jìn)行用戶需要求改某一項(xiàng)的內(nèi)容。
刪除函數(shù)del():查找學(xué)生的步驟跟更新學(xué)生信息函數(shù)的流程一樣,如果findIndex()函數(shù)小于0則函數(shù)結(jié)束,否則通過(guò)一個(gè)for循環(huán)把結(jié)構(gòu)體的數(shù)組從光標(biāo)開(kāi)始往前覆蓋從而達(dá)到刪除效果。
插入學(xué)生信息函數(shù)inserInfo():通過(guò)要求用戶輸入位置來(lái)定位插入到位置,輸入用戶輸入的大于結(jié)構(gòu)體數(shù)組的總數(shù)則插入到最后一個(gè)數(shù)組。否則通過(guò)一個(gè)for循環(huán),把數(shù)組從最后開(kāi)始往后移一位,把用戶輸入的位置的結(jié)果移到后一數(shù)組就編寫(xiě)并調(diào)用插入函數(shù)inserCurrentInfo()對(duì)當(dāng)前位置數(shù)組進(jìn)行覆蓋插入。inserCurrentInfo()函數(shù)只負(fù)責(zé)對(duì)接收到的該位置的元素所有信息的寫(xiě)入。
排序函數(shù)sortTotal():創(chuàng)建一個(gè)臨時(shí)變量提供元素與元素之間交換信息。通過(guò)雙循環(huán)嵌套結(jié)構(gòu)進(jìn)行結(jié)構(gòu)體的分?jǐn)?shù)進(jìn)行大小對(duì)比、交換位置來(lái)進(jìn)行冒泡排序。最后排序完成之后輸出分?jǐn)?shù)由高到低排序的所有學(xué)生的信息。
顯示學(xué)生信息函數(shù)showAllInfo():該函數(shù)通過(guò)全局變量count(該變量記錄了所有添加、插入或刪除過(guò)的學(xué)生信息,能準(zhǔn)確記錄學(xué)生的總?cè)藬?shù))通過(guò)for循環(huán)去遍歷student結(jié)構(gòu)體,從而輸出所有的所生信息。
學(xué)生數(shù)據(jù)存檔函數(shù)writeData():該函數(shù)定義一個(gè)指針,以寫(xiě)入方式打開(kāi)”stu.txt文本”,并把該文本的地址賦給指針fp。通過(guò)一個(gè)for循環(huán)遍歷結(jié)構(gòu)體里的元素,把結(jié)構(gòu)體里的元素的屬性輸入到”stu.txt文本”。
詳細(xì)代碼
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> void addInfo();// 添加 void welcom(); //主界面? void showAllInfo();//展示所有信息? void showInfo(struct Student student);//展示學(xué)生信息? int findIndex(struct Student student[],int id);// 根據(jù)學(xué)號(hào) 返回對(duì)應(yīng)下標(biāo)? void del(); //刪除? void search();// 查找學(xué)生信息? void updata();//更新? void sortTotal();//按總分排序? void writeData();//數(shù)據(jù)寫(xiě)入文件中? void initData();//初始化數(shù)據(jù) 從文件中讀取數(shù)據(jù),初始化數(shù)組 void showCount(); // 展示存儲(chǔ)學(xué)生個(gè)數(shù)? void inserInfo();//插入學(xué)生信息? void inserCurrentInfo(int site); //當(dāng)前位置插入? void con();//按任意鍵繼續(xù)? int find1(struct Student student[],int id); //判斷學(xué)號(hào)是否有重復(fù) 重復(fù)返回1 不重復(fù)返回0? void isIdSame(int x); //校驗(yàn)所輸入學(xué)號(hào)是否重復(fù)? void gotoxy(int x,int y);//光標(biāo)定位 int color(int c); //設(shè)置顏色輸出? struct Student{ ?? ?int id; ?? ?char name[20]; ?? ?int _math; ?? ?int _chinese; ?? ?int _english; ?? ?int total;// 總分? } student[500];? int count=0;// 記錄當(dāng)前數(shù)組中存儲(chǔ)學(xué)生個(gè)數(shù)? //主函數(shù)? int main(){ ?? ?initData();? ?? ?welcom();? ?? ?return 0; } // 光標(biāo)定位? void gotoxy(int x, int y) { ?? ?COORD pos; ??? ?pos.X = x; ??? ?//橫坐標(biāo) ??? ?pos.Y = y; ??? ?//縱坐標(biāo) ??? ?SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } //設(shè)置顏色輸出? int color(int c) { ?? ?SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c); ? ? ? ?//更改文字顏色 ?? ?return 0; };? // 主界面? void welcom() { ?? ?while(1){ ?? ??? ?system("cls"); ?? ??? ??? ?int n; ?? ??? ??? ?int i,j = 1; ?? ??? ??? ?color(10); ? ? ? ? ??? ??? ??? ??? ??? ??? ??? ??? ?//淡綠色邊框 ?? ??? ??? ?for (i = 5; i <= 35; i++) ? ?? ??? ??? ??? ??? ??? ??? ?//循環(huán)y軸坐標(biāo),打印輸出上下邊框=== ?? ??? ??? ?{ ?? ??? ??? ??? ?for (j = 10; j <= 57; j++) ??? ??? ??? ??? ??? ?//循環(huán)x軸坐標(biāo),打印輸出左右邊框|| ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?gotoxy(j, i); ?? ??? ??? ??? ??? ?if (i == 5 || i == 35) printf("=");?? ??? ??? ?//輸出上下邊框=== ?? ??? ??? ??? ??? ?else if (j == 10 || j == 56) printf("||");?? ?//輸出左右邊框|| ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ? ?? ?color(15);//白色? ?? ??? ? ?? ?gotoxy(25,8); ?? ??? ? ?? ?printf("學(xué)生信息管理系統(tǒng)"); ?? ??? ??? ?color(14);?? ??? ??? ??? ?//設(shè)置字體顏色為黃色 ?? ??? ??? ?gotoxy(15, 12); ?? ??? ??? ?printf("1:錄入學(xué)生信息"); ?? ??? ??? ?gotoxy(35, 12); ?? ??? ??? ?printf("2.查找學(xué)生信息"); ?? ??? ??? ?gotoxy(15, 16); ?? ??? ??? ?printf("3.刪除學(xué)生信息"); ?? ??? ??? ?gotoxy(35,16); ?? ??? ??? ?printf("4.修改學(xué)生信息"); ?? ??? ??? ?gotoxy(15, 20); ?? ??? ??? ?printf("5.插入學(xué)生信息"); ?? ??? ??? ?gotoxy(35,20); ?? ??? ??? ?printf("6.按照學(xué)生成績(jī)排序");?? ?? ?? ??? ??? ?gotoxy(15, 24); ?? ??? ??? ?printf("7.統(tǒng)計(jì)學(xué)生總數(shù)"); ?? ??? ??? ?gotoxy(35,24); ?? ??? ??? ?printf("8.顯示所有學(xué)生信息"); ?? ??? ??? ?gotoxy(15, 28); ?? ??? ??? ?printf("9.學(xué)生數(shù)據(jù)存檔并退出"); ?? ??? ??? ?gotoxy(25,32);? ?? ??? ??? ?int choose; ?? ??? ??? ?printf("請(qǐng)選擇:[ ]\b\b"); //\b 光標(biāo)回退一格 ? ?? ??? ??? ?color(15); // ?顏色變回白色? ?? ??? ? ?? ?scanf("%d", &choose); ?? ??? ? ?? ??? ?switch (choose){ ?? ??? ? ?? ? ?? ??? ?case 1:addInfo(); break; ?? ??? ? ?? ? ?? ??? ?case 2:search(); break; ?? ??? ? ?? ? ?? ??? ?case 3:del(); break; ?? ??? ? ?? ? ?? ??? ?case 4:updata(); break; ?? ??? ? ?? ? ?? ??? ?case 5:inserInfo();break;? ?? ??? ? ?? ? ?? ??? ?case 6:sortTotal(); break; ?? ??? ? ?? ? ?? ??? ?case 7:showCount(); break; ?? ??? ? ?? ? ?? ??? ?case 8:showAllInfo(); break; ?? ??? ? ?? ? ?? ??? ?case 9:writeData();exit(0); ?? ??? ? ?? ? ?? ??? ?}? ?? ?}?? ??? ??? ??? ? } // 添加? void addInfo(){ ?? ?system("cls"); ?? ?printf("\t添加學(xué)生信息\n"); ?? ?printf("請(qǐng)輸入學(xué)號(hào)\n"); ?? ?isIdSame(count); ?? ?printf("請(qǐng)輸入姓名\n"); ?? ?scanf("%s",&student[count].name); ?? ?printf("請(qǐng)輸入語(yǔ)文成績(jī)\n"); ?? ?scanf("%d",&student[count]._chinese); ?? ?printf("請(qǐng)輸入數(shù)學(xué)成績(jī)\n"); ?? ?scanf("%d",&student[count]._math); ?? ?printf("請(qǐng)輸入英語(yǔ)成績(jī)\n"); ?? ?scanf("%d",&student[count]._english); ?? ?student[count].total=student[count]._chinese+student[count]._english+student[count]._math; ?? ?printf("%s的信息錄入成功\n\n",student[count].name); ?? ?int choose; ?? ?printf("1繼續(xù) 2返回主界面\n");? ?? ?count++; ? ?? ?scanf("%d",&choose); ?? ?if(choose==1){ ?? ??? ?addInfo(); ?? ?}? ?? ?system("cls");? ? }? ? // 查找 展示結(jié)果? void search(){ ?? ?system("cls"); ?? ?int id; ?? ?printf("請(qǐng)輸入你想查找學(xué)生的學(xué)號(hào)\n"); ?? ?scanf("%d",&id); ?? ?int target = findIndex(student,id); ?//目標(biāo)下表 ?? ?int flag=1;//是否存在要查詢的學(xué)號(hào)? ?? ? ?? ?//for循環(huán)對(duì)比? ?? ?if(target != -1)? ?? ?{ ?? ??? ?printf("\n\t查詢結(jié)果\n\n"); ?? ??? ?showInfo(student[target]); ?? ??? ?con(); ? ?? ??? ? ?? ?} ? ?? ?else{ // 輸出查詢結(jié)果? ?? ??? ??? ?printf("\n查無(wú)此人\n");? ?? ??? ??? ??? ?con(); ?? ?}? } ? ? // 更新? void updata(){ ?? ?system("cls"); ?? ?int id; ?? ?printf("請(qǐng)輸入你要修改學(xué)生的學(xué)號(hào)\n"); ?? ?scanf("%d",&id); ?? ?int?? ?target = findIndex(student,id); ? ?? ?if(target<0){ ?? ??? ?printf("查無(wú)此人"); ?? ??? ?con();? ?? ?}else{ ?? ??? ?int flag=1;?? ? ?? ?do{ ?? ??? ?int choose=0; ?? ??? ?printf("請(qǐng)輸入需要修改的選項(xiàng)\t(1.學(xué)號(hào)\t2.姓名\t3.語(yǔ)文\t4.數(shù)學(xué)\t5.英語(yǔ)):\n"); ?? ??? ?scanf("%d",&choose);? ?? ??? ??? ?switch (choose) { ?? ??? ??? ??? ?case 1: ?? ??? ??? ??? ??? ?printf("請(qǐng)輸入學(xué)號(hào)\n"); //?? ??? ??? ??? ??? ?scanf("%d",&student[target].id); ?? ??? ??? ??? ??? ?isIdSame(target);?? ??? ??? ? ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 2: ?? ??? ??? ??? ??? ?printf("請(qǐng)輸入姓名\n"); ?? ??? ??? ??? ??? ?scanf("%s",&student[target].name); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 3: ?? ??? ??? ??? ??? ?printf("請(qǐng)輸入語(yǔ)文成績(jī)\n"); ?? ??? ??? ??? ??? ?scanf("%d",&student[target]._chinese); ?? ??? ??? ??? ??? ?break;? ?? ??? ??? ??? ?case 4: ?? ??? ??? ??? ??? ?printf("請(qǐng)輸入數(shù)學(xué)成績(jī)\n"); ?? ??? ??? ??? ??? ?scanf("%d",&student[target]._math); ?? ??? ??? ??? ??? ?break;?? ? ?? ??? ??? ??? ?case 5: ?? ??? ??? ??? ??? ?printf("請(qǐng)輸入英語(yǔ)成績(jī)\n"); ?? ??? ??? ??? ??? ?scanf("%d",&student[target]._english); ?? ??? ??? ??? ??? ?break;?? ??? ? ? ?? ??? ??? ?}? ?? ??? ??? ?student[target].total=student[target]._chinese+student[target]._english+student[target]._math; ?? ??? ??? ?printf("%s的信息修改成功\n",student[target].name); ?? ??? ??? ?printf("\n按1繼續(xù) 按2退出修改\n"); ?? ??? ??? ?int choose2;? ?? ??? ??? ?scanf("%d",&choose2); ?? ??? ??? ?if(choose2==1){ ?? ??? ??? ??? ?flag=1; ?? ??? ??? ?}else{ ?? ??? ??? ??? ?flag=0; ?? ??? ??? ?}? ?? ??? ??? ? ?? ?}while(flag); ? ?? ?}?? ? }? //刪除 void del(){ ?? ?system("cls");?? ? ?? ?int id; ?? ?int target;//目標(biāo)元素的下標(biāo)? ?? ?printf("\n請(qǐng)輸入你想刪除學(xué)生的學(xué)號(hào)\n"); ?? ?scanf("%d",&id); ?? ?target=findIndex(student, id); ?? ?if(target<0){ ?? ??? ?printf("\n查無(wú)此人\n"); ?? ??? ?con(); ?? ??? ? ?? ?} else{ ?? ??? ? for(int i=target;i<count;i++){ ?? ??? ? ?? ?student[i]=student[i+1]; //刪除操作 后一位元素覆蓋前一位元素? ?? ??? ? } ?? ??? ?printf("刪除成功\n"); ?? ??? ?con(); ?? ?count--;? ?? ?}? } ? //插入學(xué)生信息 void inserInfo(){ ?? ?system("cls"); ?? ?int site; //位置? ?? ?printf("請(qǐng)輸入你要插入學(xué)生信息的位置(從0開(kāi)始):\n"); ?? ?scanf("%d",&site); ?? ?//插入位置大于總數(shù),則插入在數(shù)組最后一位 ?? ?if ( site > count){ ?? ??? ?inserCurrentInfo(count);? ?? ??? ?printf("%s的信息插入成功\n", student[count].name); ?? ??? ? ?? ?}else{ ?? ??? ?//不是最后一位 從當(dāng)前位置 數(shù)組全部后移一位? ?? ??? ?for (int i = count; i >= site; i--){ ?? ??? ??? ??? ?student[i + 1] = student[i]; ?? ??? ??? ?} ?? ??? ?//在當(dāng)前位置添加學(xué)員 ?? ??? ?inserCurrentInfo(site); ?? ??? ?printf("%s同學(xué)的信息插入成功\n", student[site].name); ?? ??? ?con();? ?? ??? ?} ? }? //當(dāng)前位置插入 void inserCurrentInfo(int site){ ??? ?printf("請(qǐng)輸入學(xué)號(hào)\n"); ??? ?isIdSame(site); ??? ?printf("請(qǐng)輸入姓名\n"); ??? ?scanf("%s", student[site].name); ??? ?printf("請(qǐng)輸入語(yǔ)文成績(jī)\n"); ??? ?scanf("%d", &student[site]._chinese); ??? ?printf("請(qǐng)輸入數(shù)學(xué)成績(jī)\n"); ??? ?scanf("%d", &student[site]._math); ??? ?printf("請(qǐng)輸入英語(yǔ)成績(jī)\n"); ??? ?scanf("%d", &student[site]._english); ?? ?student[site].total= student[site]._chinese+student[site]._english+student[site]._math; ??? ?count++; ??? ?con(); ?} // 判斷學(xué)號(hào)是否重復(fù) 重復(fù)返回1 否則返回0? int find1(struct Student student[],int id) { ?int temp = 0; ?for(int i=0;i<count;i++) ? { ? ?if(student[i].id==id) ? ? { ? ? ?temp=1; ? ? ?break; ? ? } ? }? ?return temp; }? //校驗(yàn)所添加學(xué)號(hào)是否重復(fù) void isIdSame(int x){ ? ?? ?int inputId;?? ? ?? ?scanf("%d",&inputId); ?? ? do{ ?? ? ? if(find1(student,inputId)){ ?? ? ? ? printf("學(xué)號(hào)有重復(fù),請(qǐng)重新輸入\n"); ?? ? ? ? scanf("%d",&inputId); ?? ? ? ?} ?? ? ? else ?? ? ? ?{ ?? ? ? ? student[x].id=inputId; ?? ? ? ? break; ?? ? ? ?} ?? ? ?}while(1); } ? // 根據(jù)學(xué)號(hào) 返回下標(biāo)? int findIndex (struct Student student[],int id){ ?? ?int temp; ?? ?for(int i=0;i<count;i++){ ?? ??? ?if(student[i].id==id){ ?? ??? ??? ?temp=i; ?? ??? ??? ?break;? ?? ??? ?} else { ?? ??? ??? ?temp = -1;? ?? ??? ?}? ?? ?} ?? ? ?? ?return temp; } //按總分排序 ?void sortTotal(){ ??? ?//冒泡排序? ?? ?struct Student temp;// 元素與元素交換的臨時(shí)容器? ?? ?for (int i = 0; i < count - 1; i++){ ?? ??? ?for (int j = 0; j < count - 1 - i; j++){ ?? ??? ??? ?if (student[j].total<student[j+1].total){ ?? ??? ??? ??? ?temp = student[j + 1]; ?? ??? ??? ??? ?student[j + 1] = student[j]; ?? ??? ??? ??? ?student[j]= temp; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?printf("排序完成"); ?? ?showAllInfo();?? ?? ?} ?//按任意鍵繼續(xù)? ?void con(){ ??? ?printf("\n按任意鍵繼續(xù)\n");? ??? ?getch(); ?};? ?//展示學(xué)生總個(gè)數(shù)? ?void showCount(){ ??? ?system("cls");? ??? ?printf("\n\t學(xué)生總個(gè)數(shù)為:%d個(gè)\n",count);? ?? ?con();? ?}? ?//初始化數(shù)據(jù)? ?void initData(){ ??? ?FILE * fp = NULL; ??? ?fp = fopen("stu.txt", "r"); ??? ?if (!fp){ ??? ??? ?printf("文件打開(kāi)失敗\n"); ??? ??? ?exit(0);// 退出程序? ??? ?} ??? ?while (1){ ? ?//讀取數(shù)據(jù) 賦值給數(shù)組? ??? ??? ?fscanf(fp, "%d%s%d%d%d%d", &student[count].id, student[count].name, &student[count]._chinese, &student[count]._math, &student[count]._english, &student[count].total); ??? ??? ?if (feof(fp)){ //文件末尾 跳出循環(huán)? ??? ??? ??? ?break; ??? ??? ?} ??? ??? ?count++; ??? ?} ?} ?//數(shù)據(jù)寫(xiě)入文件中? ?void writeData(){ ?? ?FILE * fp = NULL; ?? ?fp = fopen("stu.txt", "w"); ?? ?for (int i = 0; i < count; i++){ ?? ??? ?fprintf(fp, "%d\t%s\t%d\t%d\t%d\t%d\n", student[i].id, student[i].name, student[i]._chinese, student[i]._math, student[i]._english,student[i].total); ?? ?} ?? ?printf("數(shù)據(jù)保存成功\n"); ?? ? ?} ? ? // 展示所有信息 void showAllInfo(){ ?? ?system("cls");//清屏? ?? ?for(int i=0;i<count;i++){ ?? ??? ?showInfo(student[i]);?? ?? ?? ?}? ?? ?con();? }? // 展示學(xué)生信息 void showInfo(struct Student stu){//傳入數(shù)組里的元素? ?? ?printf("學(xué)號(hào):%d\t姓名:%s\t語(yǔ)文:%d\t數(shù)學(xué):%d\t英語(yǔ):%d\t總分:%d",stu.id,stu.name,stu._chinese,stu._math,stu._english,stu.total); ?? ?printf("\n-----------------分割線-----------------------\n");? }?
主界面
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言編寫(xiě)學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)C語(yǔ)言版
- 學(xué)生成績(jī)管理系統(tǒng)C語(yǔ)言代碼實(shí)現(xiàn)
- C語(yǔ)言利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生管理系統(tǒng)
- C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)源代碼
- C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(單鏈表)
- C語(yǔ)言學(xué)生管理系統(tǒng)源碼分享
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生學(xué)籍管理系統(tǒng)
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)24位彩色圖像二值化
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)24位彩色圖像二值化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10C++實(shí)現(xiàn)簡(jiǎn)易通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06C語(yǔ)言棧與隊(duì)列相互實(shí)現(xiàn)詳解
棧和隊(duì)列,嚴(yán)格意義上來(lái)說(shuō),也屬于線性表,因?yàn)樗鼈円捕加糜诖鎯?chǔ)邏輯關(guān)系為 "一對(duì)一" 的數(shù)據(jù),但由于它們比較特殊,本章講解分別用隊(duì)列實(shí)現(xiàn)棧與用棧實(shí)現(xiàn)隊(duì)列2022-04-04C++深入探究哈希表如何封裝出unordered_set和unordered_map
哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過(guò)把關(guān)鍵碼映射的位置去尋找存放值的地方,說(shuō)起來(lái)可能感覺(jué)有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典2022-06-06C/C++自主分配出現(xiàn)double free or corruption問(wèn)題解決
這篇文章主要為大家介紹了C/C++出現(xiàn)double free or corruption問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04