最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)學生學籍管理系統(tǒng)課程設計

 更新時間:2022年07月22日 09:42:38   作者:成就一億技術人  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)學生學籍管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)學生學籍管理系統(tǒng)的具體代碼,供大家參考,具體內容如下

設計要求

設計學籍管理系統(tǒng)

1、添加學生信息
2、瀏覽學生信息
3、查詢學生信息
4、修改學生信息
5、冊J除學生信息
6、排序學生信息
7、讀取文件學生
8、保存到文件

完整代碼

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<windows.h>
#define M 80//對結構體變量(學生數(shù)目)進行宏定義
const char* path = "D://C 語言課程設計//信息存儲文件.txt";
FILE* fp;//定義指向文件的指針
struct student
{
?char name[20]; //姓名
?char sex[10]; //性別
?int age; //年齡
?char num[20]; //學號
?char major[30];//專業(yè)
?char classes[30];//班級
?int math;//數(shù)學成績
?int english;//英語成績
};//定義結構體變量
int jiami();
void input(struct student stu[M]);
void output(struct student stu[M]);
void lookfor(struct student stu[M]);
void order(struct student stu[M]);
void delete_s(struct student stu[M]);
void modify(struct student stu[M]);
void xuehao(struct student stu[M]);
void xingming(struct student stu[M]);
void fileread(struct student stu[M]);
void filewrite(struct student stu[M]);
int count;//判斷學生的數(shù)目
struct student t;
int jiami()
{
?int s = 123, m;//s 為密碼,m 為輸入的密碼
?int i = 0;//用來判斷輸入的密碼是否正確
?printf("請輸入密碼(僅有三次機會):");
?scanf("%d", &m);//第一次輸入密碼
?if (m != s)
?{
?printf("密碼錯誤,還有兩次機會:");
?scanf("%d", &m);//第二次輸入密碼
?if (m != s)
?{
?printf("密碼錯誤,最后一次機會:");
?scanf("%d", &m);//第三次輸入密碼
?if (m != s)
?{
?printf("密碼錯誤\n");
?}
?else i = 1;
?}
?else i = 1;
?}?
?else i = 1;
?return i;
}
int main()
{
?int choice, sum, i;//choice 用來判斷輸入的命令;sum 用來記錄輸入錯誤的次數(shù);i 用來判斷輸入的密碼是否正確
?struct student stu[M];
?sum = 0;//初始化 sum?
?i = jiami();
?if (i == 1)//判斷輸入的密碼是否正確
?do
?{
?printf("\t-------------------------------------------------\n");
?printf("\t\t+ 學生學籍管理系統(tǒng) +\n");
?printf("\t-------------------------------------------------\n");
?printf("\t\t ***************\n");
?printf("\t\t 1、添加學生信息\n");
?printf("\t\t 2、瀏覽學生信息\n");
?printf("\t\t 3、查詢學生信息\n");
?printf("\t\t 4、修改學生信息\n");
?printf("\t\t 5、刪除學生信息\n");
?printf("\t\t 6、排序學生信息\n");
?printf("\t\t 7、讀取文件學生\n");
?printf("\t\t 8、保存到文件\n");
?printf("\t\t 9、退出系統(tǒng)\n");
?printf("\t\t ***************\n");
?printf("請輸入你的選擇\n"); //輸出菜單
?scanf("%d", &choice); //輸入選擇
?fflush(stdin); //清空緩沖區(qū)?
?if (choice > 9 || choice <= 0)
?{
?sum++;
?if (sum >= 5)
?{
?printf("輸入錯誤次數(shù)過多,程序將重新開始\n");
-7-
?system("pause");
?system("cls"); //清屏
?}
?}
?switch (choice)
?{
?case 1:
?input(stu);
?break; //添加學生信息?
?case 2:
?output(stu);
?break;//瀏覽學生信息
?case 3:
?lookfor(stu);
?break; //尋找學生信息
?case 4:
?modify(stu);
?break; //修改學生信息
?case 5:
?delete_s(stu);
?break; //刪除學生信息
?case 6:
?order(stu);
?break; //排序學生信息
?case 7:
?fileread(stu);
?break; //從文件中讀取學生信息
?case 8:
?filewrite(stu);
?break; //將學生信息寫入文件
?case 9:
?printf("感謝你使用學生學籍管理系統(tǒng),請關掉程序!\n");
?system("pause");
?break;
?default:
?printf("無效的選擇!請重新輸入!\n");
?break;
?}
?} while (choice != 9);
?printf("密碼輸入錯誤,程序結束\n");
?return 0;
}
void input(struct student stu[M])//自定義輸入函數(shù)
{
?system("cls");//清屏
?printf("請?zhí)砑右斎雽W生的信息\n");
?printf("請輸入學生的姓名\n");
?scanf("%s", &stu[count].name );//輸入學生姓名
?printf("請輸入學生的性別\n");
?scanf("%s", &stu[count].sex);//輸入學生性別
?printf("請輸入學生的年齡\n");
?scanf("%d", &stu[count].age);//輸入學生年齡
?printf("請輸入學生的學號\n");
?scanf("%s", &stu[count].num);//輸入學生學號
?printf("請輸入學生的專業(yè)\n");
?scanf("%s", &stu[count].major);//輸入學生專業(yè)
?printf("請輸入學生的班級\n");
?scanf("%s", &stu[count].classes); //輸入學生班級
?printf("請輸入學生的數(shù)學成績\n");
?scanf("%d", &stu[count].math); //輸入學生數(shù)學成績
?printf("請輸入學生的英語成績\n");
?scanf("%d", &stu[count].english);//輸入學生英語成績
?count++;//計算學生人數(shù)
}
void output(struct student stu[M])//自定義輸出函數(shù)
{
?int j;
?system("cls");//清屏
?if (count == 0)//判斷目前是否有學生信息
?{
?printf("當前已存入學生的信息為 0 個\n");
?return;
?}
?else
?{
?for (j = 0; j < count; j++)
?{
?printf("姓名:%s, ", stu[j].name);//輸出姓名
?printf("性別:%s, ", stu[j].sex);//輸出性別
?printf("年齡:%d, ", stu[j].age);//輸出年齡
?printf("學號:%s, ", stu[j].num);//輸出學號
?printf("專業(yè):%s, ", stu[j].major);//輸出專業(yè)
?printf("班級:%s, ", stu[j].classes);//輸出班級
?printf("數(shù)學成績:%d, ", stu[j].math);//輸出數(shù)學成績
?printf("英語成績:%d\n", stu[j].english);//輸出英語成績
?}
?} }
void lookfor(struct student stu[M])//自定義查詢函數(shù)
{
?int choice;//定義選擇
?system("cls");//清屏
?if (count == 0)//判斷目前是否有學生信息
?{
?printf("當前已存學生的信息為 0 個,無法查詢!!!\n");
?return;
?}
?else
?{
?printf("請選擇你所要查詢的方式: 1、學號 2、姓名 3、取消\n");
?scanf("%d", &choice);//輸入選項
?switch (choice)
?{
?case 3:return; break;
?case 2:xingming(stu); break;//按姓名查詢
?case 1:xuehao(stu); break; //按學號查詢
?default:printf("無效的選擇!請重新輸入!\n"); break;
?}
?} }?
void xuehao(struct student stu[M])//自定義學號查詢函數(shù)
{
?int j, flag = 0;
?int k = 0;//判斷是否找到該學生信息
?char xh[25];
?system("cls");
?printf("請輸入你想要查詢的學生的學號");
?scanf("%s", xh);//輸入學號
?fflush(stdin);//清空緩沖區(qū)
?for (j = 0; j < count; j++)
?{
?if (strcmp(stu[j].num, xh) == 0)//找到該學號的學生信息
?{
?printf("姓名:%s\t\t", stu[j].name);//輸出姓名
?printf("性別:%s\t\t", stu[j].sex);//輸出性別
?printf("年齡:%d\t\t", stu[j].age);//輸出年齡
?printf("學號:%s\t\t", stu[j].num);//輸出學號
?printf("專業(yè):%s\t\t", stu[j].major);//輸出專業(yè)
?printf("班級:%s\t\t", stu[j].classes);//輸出班級
?printf("數(shù)學成績:%d\t\t", stu[j].math);//輸出數(shù)學成績
?printf("英語成績:%d\t\t", stu[j].english);//輸出英語成績 //出該學生的信息
?k = 1;
?}
?}
?if (k == 0)//沒有找到該學號
?{
?printf("很抱歉,沒有你所需要的學生信息\n");
?} }
void xingming(struct student stu[M])//自定義姓名查詢函數(shù)
{
?int n = 0;
?int j, flag = 0;
?char xm[25];
?system("cls");
?printf("請輸入你想要查詢的學生的姓名");
-11-
?scanf("%s", xm);
?fflush(stdin);
?for (j = 0; j < count; j++)
?{
?if (strcmp(stu[j].name, xm) == 0)
?{
?printf("姓名:%s\t\t", stu[j].name);//輸出姓名
?printf("性別:%s\t\t", stu[j].sex);//輸出性別
?printf("年齡:%d\t\t", stu[j].age);//輸出年齡
?printf("學號:%s\t\t", stu[j].num);//輸出學號
?printf("專業(yè):%s\t\t", stu[j].major);//輸出專業(yè)
?printf("班級:%s\t\t", stu[j].classes);//輸出班級
?printf("數(shù)學成績:%d\t\t", stu[j].math);//輸出數(shù)學成績
?printf("英語成績:%d\t\t", stu[j].english);//輸出英語成績 //輸出該學生的信息
?n = 1;
?}
?}
?if (n == 0)
?{
?printf("很抱歉,沒有你所需要的學生信息\n");
?} }
void order(struct student stu[M])//自定義排序函數(shù)
{
?int j, k, choice, max;
?system("cls");
?printf("請輸入你想要進行排序的方式\n");
?printf("1、數(shù)學 2、英語\n");
?scanf("%d", &choice); //輸入選項
?switch (choice)
?{
?case 1:
?for (j = 0; j < count; j++)
?{
?max = j;
?for (k = j + 1; k < count; k++)
?if (stu[k].math > stu[max].math)
?{
?t = stu[k];
?stu[k] = stu[max];
?stu[max] = t;
?}
?};
?break; //按數(shù)學成績排序
?case 2:
?for (j = 0; j < count; j++)
?{
?max = j;
?for (k = j + 1; k < count; k++)
?if (stu[k].english > stu[max].english)
?{
?t = stu[k];
?stu[k] = stu[max];
?stu[max] = t;
?}
?};
?break; //按英語成績排序
?default:
?printf("無效的選擇!請重新輸入!\n");
?break;
?}
?if (choice >= 1 && choice <= 5)
?printf("排序成功?。。?);
}
void delete_s(struct student stu[M])//自定義刪除函數(shù)(按學號刪除)?
{
?int j, index = 0, k = count;
?char xh[25];
?system("cls");
?if (count == 0)//判斷學生數(shù)量是否為 0?
?{
?printf("當前已存學生信息為 0 個,無法刪除!!!\n");
?return;
?}
?else
?{
?printf("請輸入你想要刪除的同學學號\n");
?scanf("%s", xh);//輸入刪除學生的學號
?fflush(stdin); //清空緩沖區(qū)
?for (j = 0; j < count; j++)
?{
?if (strcmp(stu[j].num, xh) == 0) //尋找該學生
?{
?for (j = index; j < count; j++)
?stu[j] = stu[j + 1];
?count--;
?if (count < k) //判斷是否刪除成功
?printf("你已經(jīng)刪除成功\n");
?}
?index++;
?}
?if (j == count) //判斷是否有該學生的信息
?printf("抱歉!!!沒有你所需要刪除的學生信息!*_*!\n");
?} }
void modify(struct student stu[M])//自定義修改函數(shù)
{
?int j, flag = 0, course;
?int i = 0;
?char xh[25];
?system("cls");
?if (count == 0) //判斷是否有學生信息
?{
?printf("當前已存學生信息為 0 個,無法修改!!!\n");
?return;
?}
?else
?{
?printf("請輸入你想要修改的同學學號\n");
-14-
?scanf("%s", &xh); //輸入要修改學生的學號
?fflush(stdin);
?for (j = 0; j < count; j++)
?{
?if (strcmp(stu[j].num, xh) == 0)
?{
?i = 1;
printf("你確定要修改學生的信息嗎?如果不確定的話,請關掉本程序吧!\n");
?printf("選擇課程: 1、數(shù)學 2、英語 3、跳過\n");
?scanf("%d", &course); //選擇要修改的一部分學生信息
?switch (course)
?{
?case 1:printf("請輸入你想要修改后的學生成績\n");?
scanf("%d", &stu[j].math); break; //修改數(shù)學成績
?case 2:printf("請輸入你想要修改后的學生成績\n");?
scanf("%d", &stu[j].english); break;//修改英語成績
?case 3:break;
?default:printf("無效的選擇!請重新輸入!\n"); break;
?}
?printf("選擇信息: 1、學號 2、性別 3、年齡 4、專業(yè) 5、班級 6、跳過\n");
?scanf("%d", &course); //選擇要修改的一部分學生信息?
?switch (course)
?{
?case 1:scanf("%s", stu[j].num); break;//修改學號
?case 2:printf("請輸入修改后的信息:"); scanf("%s",?
stu[j].name); break;//修改性別
?case 3:printf("請輸入修改后的信息:"); scanf("%d",?
&stu[j].age); break;//修改年齡
?case 4:printf("請輸入修改后的信息:"); scanf("%s",?
stu[j].major); break;//修改專業(yè)
?case 5:printf("請輸入修改后的信息:"); scanf("%s",?
&stu[j].classes); break;//修改班級
?case 6:break;
?default:printf("無效的選擇!請重新輸入!\n"); break;
?}
?}?
?}
?}
?if (i == 0) printf("無該學生信息!!\n");
?return;
}
void filewrite(struct student stu[M])//自定義寫入文件函數(shù)
{
?char f;
?int j = 0;
?system("cls");
?printf("請選擇是否要存入已輸入的學生信息:'y'還是'n'???\n");
?scanf("%c", &f); //判斷是否寫入文件
?fflush(stdin); //清空緩沖區(qū)
?while (f != 'y' && f != 'n')
?{
?if (f != 'y' && f != 'n')
?printf("輸入錯誤,請重新輸入\n");
?printf("以下操作將會覆蓋已存儲的數(shù)據(jù),確定請輸入'y'或'n'?\n");
?scanf("%c", &f);
?fflush(stdin);
?}
?if (f == 'y')
?{
?if ((fp = fopen(path, "wb")) == NULL)
?{
?printf("無法打開文件\n");
?exit(0);
?}
?for (j = 0; j < count; j++)
?{
?fwrite(&stu[j], sizeof(struct student), 1, fp); //將學生信息寫入文件
?}
?fclose(fp);
?if (count == 0)//判斷學生數(shù)目是否為 0?
?printf("沒有文件,無法保存\n");
?else
?printf("數(shù)據(jù)存儲完畢\n");
?system("pause");
?}
?else
?return;
}
void fileread(struct student stu[M])//自定義讀取文件信息函數(shù)
{
?char f;
?int j = 0;
?system("cls");//?????????
?printf("請選擇是否要讀取已輸入的學生信息:'y'還是'n'?\n");
?scanf("%c", &f); //判斷是否從文件中讀取學生信息
?fflush(stdin); //清空緩沖區(qū)
?if (f == 'y')
?{
?if ((fp = fopen(path, "rb")) == NULL)
?{
?printf("cannot open this file\n");
?exit(0);
?}
?fread(&stu[j], sizeof(struct student), 1, fp); //從文件中讀取學生信息
?count = 0;
?count++;
?j++;
?while (fread(&stu[j], sizeof(struct student), 1, fp))
?{
?j++;
?count++;
?}
?fclose(fp);
?printf("數(shù)據(jù)讀取完畢!\n");
?system("pause");
?}?
?else
?return;
}

運行結果

本次登錄設置的密碼是123,當然你也可以自己修改密碼
后面的需要執(zhí)行哪項功能,就輸入對應數(shù)字就可以!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • VSCode配置C/C++語言環(huán)境(2023最新版)

    VSCode配置C/C++語言環(huán)境(2023最新版)

    這篇文章主要介紹了VSCode配置C/C++語言環(huán)境(2023最新版)的全過程,本文給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Qt6遠程連接MySQL數(shù)據(jù)庫的簡單易上手版

    Qt6遠程連接MySQL數(shù)據(jù)庫的簡單易上手版

    在Qt應用程序里,可實現(xiàn)遠程MySQL服務器的連接操作,本文就來介紹一下Qt6遠程連接MySQL數(shù)據(jù)庫,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • C語言 結構體數(shù)組詳解及示例代碼

    C語言 結構體數(shù)組詳解及示例代碼

    本文主要介紹C語言 結構體數(shù)組,這里整理了相關資料及簡單示例代碼,以便大家學習參考,有興趣的小伙伴可以看下
    2016-08-08
  • 詳解C語言中return返回函數(shù)局部變量的問題

    詳解C語言中return返回函數(shù)局部變量的問題

    本文主要介紹了C語言中return返回函數(shù)局部變量的問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++實操之內聯(lián)成員函數(shù)介紹

    C++實操之內聯(lián)成員函數(shù)介紹

    大家好,本篇文章主要講的是C++實操之內聯(lián)成員函數(shù)介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++實現(xiàn)簡單的學生管理系統(tǒng)

    C++實現(xiàn)簡單的學生管理系統(tǒng)

    本文給大家分享的是使用C++實現(xiàn)的簡單的學生管理系統(tǒng)的代碼,主要是通過鏈表來實現(xiàn),非常簡潔,有需要的小伙伴可以參考下。
    2015-07-07
  • C語言數(shù)組應用實現(xiàn)掃雷游戲

    C語言數(shù)組應用實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C語言數(shù)組應用實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言的動態(tài)內存管理的深入了解

    C語言的動態(tài)內存管理的深入了解

    這篇文章主要為大家詳細介紹了語言C的動態(tài)內存管理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Easyx實現(xiàn)窗口自動碰撞的小球

    Easyx實現(xiàn)窗口自動碰撞的小球

    這篇文章主要為大家詳細介紹了Easyx實現(xiàn)窗口自動碰撞的小球,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C/C++中的內存管理小結

    C/C++中的內存管理小結

    這篇文章主要介紹了C/C++中的內存管理小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05

最新評論

鄂托克旗| 巴林右旗| 右玉县| 海口市| 双桥区| 措美县| 台中县| 临夏市| 通江县| 新郑市| 梨树县| 扎赉特旗| 南充市| 广安市| 荥阳市| 城步| 双流县| 砀山县| 乌恰县| 灵川县| 安义县| 五寨县| 四会市| 唐海县| 龙口市| 尖扎县| 鄢陵县| 仁布县| 禹州市| 尼勒克县| 花莲市| 吉安市| 额敏县| 浮梁县| 乐至县| 台中县| 阿鲁科尔沁旗| 安新县| 冷水江市| 靖宇县| 泗洪县|