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

C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)

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

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

設(shè)計(jì)要求

設(shè)計(jì)學(xué)籍管理系統(tǒng)

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

完整代碼

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

運(yùn)行結(jié)果

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

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

相關(guān)文章

  • C語言實(shí)現(xiàn)簡單五子棋小游戲

    C語言實(shí)現(xiàn)簡單五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C++ boost庫的安裝過程詳解

    C++ boost庫的安裝過程詳解

    這篇文章主要介紹了C++ boost庫的安裝過程詳解,文中通過示例代碼和圖片介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)

    C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)項(xiàng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 淺析內(nèi)存對齊與ANSI C中struct型數(shù)據(jù)的內(nèi)存布局

    淺析內(nèi)存對齊與ANSI C中struct型數(shù)據(jù)的內(nèi)存布局

    當(dāng)在C中定義了一個結(jié)構(gòu)類型時(shí),它的大小是否等于各字段(field)大小之和?編譯器將如何在內(nèi)存中放置這些字段?ANSI C對結(jié)構(gòu)體的內(nèi)存布局有什么要求?而我們的程序又能否依賴這種布局
    2013-09-09
  • C++?電話號碼的字母組合功能實(shí)現(xiàn)

    C++?電話號碼的字母組合功能實(shí)現(xiàn)

    這篇文章主要介紹了C++?電話號碼的字母組合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Qt使用SQLite數(shù)據(jù)庫存儲管理圖片文件

    Qt使用SQLite數(shù)據(jù)庫存儲管理圖片文件

    這篇文章主要為大家詳細(xì)介紹了Qt如何使用SQLite數(shù)據(jù)庫實(shí)現(xiàn)存儲管理圖片文件的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • C語言實(shí)現(xiàn)數(shù)組移位、前移、后移與整體移動實(shí)例代碼

    C語言實(shí)現(xiàn)數(shù)組移位、前移、后移與整體移動實(shí)例代碼

    C語言中通??梢允褂醚h(huán)語句實(shí)現(xiàn)數(shù)組的移動,下面這篇文章主要給大家介紹了關(guān)于C語言實(shí)現(xiàn)數(shù)組移位、前移、后移與整體移動的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • QT實(shí)現(xiàn)貪吃蛇游戲

    QT實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語言進(jìn)階棧幀示例詳解教程

    C語言進(jìn)階棧幀示例詳解教程

    這篇文章主要為大家介紹了C語言進(jìn)階棧幀的示例詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • 詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用

    詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用

    這篇文章主要介紹了詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08

最新評論