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

C語(yǔ)言實(shí)現(xiàn)學(xué)生打卡系統(tǒng)

 更新時(shí)間:2020年12月30日 13:20:43   作者:ly_1115  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生打卡系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

題目描述

1.學(xué)生信息及打卡情況的錄入
2.修改某個(gè)學(xué)生的打卡情況
3.查詢某個(gè)學(xué)生的打卡情況
4.曠課學(xué)生的姓名及次數(shù)
5.學(xué)生打卡的總評(píng)分?jǐn)?shù)計(jì)算

完整代碼

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

FILE *fp; //定義文件
char a;  //返回選擇變量
float kq = 10;  //應(yīng)到打卡次數(shù)

 struct student
{
 char name[10];   //姓名
 char number[11];  //學(xué)號(hào)
 char sex;      //性別
 int year;      //出生日期--年
 int month;     //出生日期--月
 int day;      //出生日期--日
 int k;       //打卡次數(shù)
}stu[100];

void input();
void change();
void search();
void times();
void evaluate();
int main();

int main()
{
 int it = 0;
 printf("\t\t★★★★★★★★★★★★★★★★★★★★★★★★\n");
 printf("\t\t★     ※歡迎進(jìn)入學(xué)生考勤系統(tǒng)       ★\n");
 printf("\t\t★                      ★\n");
 printf("\t\t★     1.學(xué)生信息及打卡情況錄入      ★\n");
 printf("\t\t★                      ★\n");
 printf("\t\t★     2.修改某個(gè)學(xué)生的打卡情況      ★\n");
 printf("\t\t★                      ★\n");
 printf("\t\t★     3.查詢某個(gè)學(xué)生的打卡記錄      ★\n");
 printf("\t\t★                      ★\n");
 printf("\t\t★     4.曠課學(xué)生的姓名及次數(shù)       ★\n");
 printf("\t\t★                      ★\n");
 printf("\t\t★     5.學(xué)生打卡的總評(píng)分?jǐn)?shù)計(jì)算      ★\n");
 printf("\t\t★                      ★\n");
 printf("\t\t★     6.退出系統(tǒng)             ★\n");
 printf("\t\t★                      ★\n");
 printf("\t\t★★★★★★★★★★★★★★★★★★★★★★★★\n");
 printf("\t *******請(qǐng)選擇您需要的操作******* ");
 scanf("%d", &it);
 switch (it)
 {
 case 1: input(); break;
 case 2:change(); break;
 case 3:search(); break;
 case 4:times(); break;
 case 5:evaluate(); break;
 case 6:      break;
 default: printf("請(qǐng)重新輸入!\n");
 }
 if (it == 6)
 printf("\t\t\t退出考勤系統(tǒng),歡迎下次使用!");
 system("pause");
 return 0;
}

void input()
{
 int i = 0;
 int j = 0;
 int x = 1;
 printf("************1.學(xué)生信息及打卡情況錄入************\n");
 if ((fp = fopen("data.txt", "w")) == NULL)
 {
 printf("文件打開失?。?\n");
 main();
 }
 for (i = 0; x == 1; i++)
 {
 for (; j == 0;)
 {
  getchar();
  printf("請(qǐng)輸入第%d個(gè)學(xué)生的姓名:", i + 1);
  gets(stu[i].name);
  printf("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào):", i + 1);
  gets(stu[i].number);
  printf("請(qǐng)輸入第%d個(gè)學(xué)生的性別(男-m 女-f):", i + 1);
  stu[i].sex = getchar();
  printf("請(qǐng)輸入第%d個(gè)學(xué)生的出生日期(格式:年-月-日):", i + 1);
  scanf("%d%d%d", &stu[i].year, &stu[i].month, &stu[i].day);
  printf("請(qǐng)輸入第%d個(gè)學(xué)生當(dāng)前的打卡次數(shù):", i + 1);
  scanf("%d", &stu[i].k);
  printf("您輸入的信息為: 姓名%s 學(xué)號(hào)%s  性別%c  出生日期 %d年%d月%d日  打卡次數(shù)%d \n ",
  stu[i].name, stu[i].number, stu[i].sex,stu[i].year, stu[i].month, stu[i].day, stu[i].k);
  printf("請(qǐng)確定信息 (重輸-0 確定-1): ");
  scanf("%d", &j); //輸入確認(rèn)
 } 
 j = 0;
 if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
  printf("文件寫入錯(cuò)誤! \n"); // 寫入文件
 printf("是否繼續(xù)輸入下一個(gè)學(xué)生的信息 終止-0 繼續(xù)-1: ");
 scanf("%d", &x);  //繼續(xù)輸入的選擇
 }
 fclose(fp);
 printf("返回主菜單-0 :");
 getchar();
 a = getchar();
 getchar();
 if (a == '0')
 main();   //返回主菜單
}   //錄入數(shù)據(jù)函數(shù)結(jié)束

void change()
{
 printf("************2.修改某個(gè)學(xué)生的打卡情況************\n");
 int i = 0;
 int j = 0;
 int t = 10;
 int it = 10;
 int x = 10;;
 char name[10] = { 0 };
 char number[10] = { 0 };
 if ((fp = fopen("data.txt", "r")) == NULL)  //將文件內(nèi)容讀入內(nèi)存
 {
 printf("文件打開失??! \n");
 main();
 }
 for (i = 0; feof(fp) == 0; ++i)
 {
 fread(&stu[i], sizeof(struct student), 1, fp); //讀取文件內(nèi)容
 }
 printf("選擇修改對(duì)象:按姓名查找-1 按學(xué)號(hào)查找-2: ");
 scanf("%d", &it);
 if (it == 1)   //按姓名查找開始
 {
 printf("請(qǐng)輸入需要修改學(xué)生的姓名: ");
 scanf("%s", &name);
 for (j = 0; t != 0; j++)
  t = strcmp(stu[j].name, name);
 if (j == i)
 {
  t = 0;
  printf("未找到該學(xué)生信息,請(qǐng)重新輸入! \n");
  fclose(fp);
 }
 if (j < i)  //查詢成功
 {
  printf("您查詢的信息為: 姓名%s 學(xué)號(hào)%s  性別%c  打卡次數(shù)%d \n ",
  stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].k);
 }
 printf("是否確認(rèn)修改該生打卡信息 否-0 是-1: ");
 scanf("%d", &x);
 if (x == 1)
 {
  printf("請(qǐng)輸入新的打卡次數(shù): ");
  scanf("%d", &stu[j-1].k);  //輸入新的打卡次數(shù)
  if ((fp = fopen("data.txt", "w")) == NULL) //以只寫方式打開
  {
  printf("文件打開失?。?\n");
  main();
  }
  if (fwrite(&stu[j], sizeof(struct student), 1, fp) != 1)
  printf("文件寫入錯(cuò)誤! \n");  //寫入文件
 }
 fclose(fp);
 }//按姓名查找結(jié)束
 if (it == 2)  //按學(xué)號(hào)查找開始
 {
 printf("請(qǐng)輸入需要修改學(xué)生的學(xué)號(hào):");
 scanf("%s", &number);
 for (j = 0; t != 0; j++)
  t = strcmp(stu[j].number, number);
 if (j == i)
 {
  t = 0;
  printf("未找到該學(xué)生信息,請(qǐng)重新輸入! \n");
 }
 if (j < i)  //查詢成功
 {
  printf("您查詢的信息為: 姓名%s 學(xué)號(hào)%s  性別%c 打卡次數(shù)%d \n ",
  stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].k);
 }
 printf("是否確認(rèn)修改該生打卡信息 否-0 是-1:");
 scanf("%d", &x);
 if (x == 1)
 {
  printf("請(qǐng)輸入新的打卡次數(shù): ");
  scanf("%d", &stu[j-1].k);  //輸入新的打卡次數(shù)
  if ((fp = fopen("data.txt", "w")) == NULL) //以只寫方式打開
  {
  printf("文件打開失??! \n");
  main();
  }
  if (fwrite(&stu[j], sizeof(struct student), 1, fp) != 1)
  printf("文件寫入錯(cuò)誤! \n");  //寫入文件
 }
 fclose(fp);
 }//按學(xué)號(hào)查詢結(jié)束
 printf("是否繼續(xù)修改其他學(xué)生打卡信息 返回主菜單-0 繼續(xù)-1: ");
 scanf("%d", &x);
 if (x == 1) change();
 else    main(); //返回主菜單   
}  //修改數(shù)據(jù)函數(shù)內(nèi)容結(jié)束


void search()
{
 printf("************3.查詢某個(gè)學(xué)生的打卡記錄************\n");
 int i = 0;
 int j = 0;
 int it = 10;
 int t = 10;
 int x = 10;
 char name[10] = { 0 };
 char number[10] = { 0 };
 if ((fp = fopen("data.txt", "r")) == NULL)  //將文件內(nèi)容讀入內(nèi)存
 {
 printf("文件打開失??! \n");
 main();
 }
 for (i = 0; feof(fp) == 0; ++i)
 {
 fread(&stu[i], sizeof(struct student), 1, fp); //讀取文件內(nèi)容
 }
 printf("選擇查找方式:按姓名查找-1 按學(xué)號(hào)查找-2: ");
 scanf("%d", &it);
 if (it == 1)   //按姓名查找開始
 {
 printf("請(qǐng)輸入需要查詢學(xué)生的姓名: ");
 scanf("%s", &name);
 for (j = 0; t != 0; j++)
  t = strcmp(stu[j].name, name);
 if (j == i)
 {
  t = 0;
  printf("未找到該學(xué)生信息,請(qǐng)重新輸入! \n");
 }
 if (j < i)  //查詢成功
 {
  printf("您查詢的信息為: 姓名%s 學(xué)號(hào)%s  性別%c  出生日期 %d年%d月%d日  打卡次數(shù)%d \n ",
  stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].year, stu[j - 1].month, stu[j - 1].day, stu[j - 1].k);
 }
 fclose(fp);
 }//按姓名查詢結(jié)束
 if (it == 2)  //按學(xué)號(hào)查找開始
 {
 printf("請(qǐng)輸入需要查詢學(xué)生的學(xué)號(hào):");
 scanf("%s", &number);
 for (j = 0; t != 0; j++)
  t = strcmp(stu[j].number, number);
 if (j == i)
 {
  t = 0;
  printf("未找到該學(xué)生信息,請(qǐng)重新輸入! \n");
 }
 if (j < i)  //查詢成功
 {
  printf("您查詢的信息為: 姓名%s 學(xué)號(hào)%s  性別%c  出生日期 %d年%d月%d日  打卡次數(shù)%d \n ",
  stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].year, stu[j - 1].month, stu[j - 1].day, stu[j - 1].k);
 }
 fclose(fp);
 }
 printf("是否繼續(xù)查詢其他學(xué)生打卡信息 返回主菜單-0 繼續(xù)-1: ");
 scanf("%d", &x);
 if (x == 1) search();
 else    main(); //返回主菜單  
}

void times()
{
 printf("************4.曠課學(xué)生的姓名及次數(shù) ************\n");
 int i = 0;
 int j = 0;
 int it = 0;
 if ((fp = fopen("data.txt", "r")) == NULL)  //將文件內(nèi)容讀入內(nèi)存
 {
 printf("文件打開失?。?\n");
 main();
 }
 for (i = 0; feof(fp) == 0; i++)
 {
 fread(&stu[i], sizeof(struct student), 1, fp); //讀取文件內(nèi)容
 }
 printf("曠課學(xué)生的姓名及次數(shù)如下:\n ");
 for (j = 0; j < i-1;j++ )
 {
 if (stu[j].k < kq)
 printf("姓名%s 學(xué)號(hào)%s  缺課次數(shù)%f \n ",stu[j].name, stu[j].number, (kq - stu[j].k));
 }
 printf("是否返回主菜單 0否 1是: ");
 scanf("%d", &it);
 if (it == 0) return;
 else main();
}

void evaluate()
{
 printf("************5.學(xué)生打卡的總評(píng)分?jǐn)?shù)計(jì)算************\n");
 int i = 0;
 int j = 0;
 int t = 10;
 int it = 10;
 int x = 10;
 float score=0;
 char name[10] = { 0 };
 char number[10] = { 0 };
 if ((fp = fopen("data.txt", "r")) == NULL) //將文件讀入內(nèi)存
 {
 printf("文件打開失??! \n");
 main();
 }
 for (i = 0; feof(fp) == 0; ++i)
 fread(&stu[i], sizeof(struct student), 1, fp);  //讀取文件內(nèi)容
 printf("選擇計(jì)算對(duì)象:1 按姓名查找 2 按學(xué)號(hào)查找: ");
 scanf("%d", &it);
 if (it == 1)   //按姓名查找開始
 {
 printf("請(qǐng)輸入需要計(jì)算分?jǐn)?shù)的學(xué)生姓名: ");
 scanf("%s", &name);
 for (j = 0; t != 0; ++j)
  t = strcmp(stu[j].name, name);
 if (j == i)
 {
  t = 0;
  printf("未找到該學(xué)生信息,請(qǐng)重新輸入! \n");
  fclose(fp);
 }
 if (j < i)  //查詢成功
 {
  printf("您查詢的信息為: 姓名%s 學(xué)號(hào)%s  打卡次數(shù)%d \n ",
  stu[j - 1].name, stu[j - 1].number, stu[j - 1].k);
  score = stu[j-1].k / kq * 100;
  printf("該生當(dāng)前打卡總評(píng)分為 %5.2f \n", score);
 }
 fclose(fp);
 printf("是否繼續(xù)計(jì)算其他學(xué)生打卡分?jǐn)?shù) 0否 1是");
 scanf("%d", &x);
 if (x == 1) evaluate();
 else     main();
 }   //按姓名查找結(jié)束
 if (it == 2)  //按學(xué)號(hào)查找開始
 {
 printf("請(qǐng)輸入需要計(jì)算分?jǐn)?shù)的學(xué)生學(xué)號(hào):");
 scanf("%s", &number);
 for (j = 0; t != 0; j++)
  t = strcmp(stu[j].number, number);
 if (j == i)
 {
  t = 0;
  printf("未找到該學(xué)生信息,請(qǐng)重新輸入! \n");
 }
 if (j < i)  //查詢成功
 {
  printf("您查詢的信息為: 姓名%s 學(xué)號(hào)%s  性別%c  打卡日期 %d年%d月%d日  打卡次數(shù)%d \n ",
  stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].year, stu[j - 1].month, stu[j - 1].day, stu[j - 1].k);
  score = (float)(stu[j-1].k) / kq * 100;
  printf("該生當(dāng)前打卡總評(píng)分為 %5.2f \n", score);
 }
 fclose(fp);
 printf("是否繼續(xù)計(jì)算其他學(xué)生打卡分?jǐn)?shù) 0否 1是");
 scanf("%d", &x);
 if (x == 1) evaluate();
 else     main();
 }  //按學(xué)號(hào)查找結(jié)束
 printf("0 返回主菜單\n");
 getchar();
 a = getchar();
 getchar();
 if (a == '0')
 main(); //返回主菜單     
}

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

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)文件讀寫

    C語(yǔ)言實(shí)現(xiàn)文件讀寫

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)文件讀寫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++靜態(tài)變量,常量的存儲(chǔ)位置你真的了解嗎

    C++靜態(tài)變量,常量的存儲(chǔ)位置你真的了解嗎

    這篇文章主要介紹了C++中靜態(tài)變量與常量的存儲(chǔ)位置的相關(guān)資料,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-08-08
  • C語(yǔ)言中的malloc使用詳解

    C語(yǔ)言中的malloc使用詳解

    這篇文章主要介紹了C語(yǔ)言中的malloc的使用,包括用其動(dòng)態(tài)申請(qǐng)二維數(shù)組等功能,需要的朋友可以參考下
    2015-08-08
  • C++命名空間域的實(shí)現(xiàn)示例

    C++命名空間域的實(shí)現(xiàn)示例

    命名空間域就是一個(gè)獨(dú)立的空間外面不能直接調(diào)用該空間域只能用訪問限定符指定訪問該空間域,本文主要介紹了C++命名空間域的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 深入解析int(*p)[]和int(**p)[]

    深入解析int(*p)[]和int(**p)[]

    以下是對(duì)int(*p)[]和int(**p)[]的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • C/C++ Qt ToolBar菜單組件的具體使用

    C/C++ Qt ToolBar菜單組件的具體使用

    ToolBar工具欄在所有窗體應(yīng)用程序中都廣泛被使用,使用ToolBar可以很好的規(guī)范菜單功能分類,本文就詳細(xì)的介紹一下ToolBar組件的應(yīng)用,感興趣的可以了解一下
    2021-11-11
  • 一起來學(xué)習(xí)C++中類的this指針以使用

    一起來學(xué)習(xí)C++中類的this指針以使用

    這篇文章主要為大家詳細(xì)介紹了C++中類的this指針以使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++?typedef常見用法詳解

    C++?typedef常見用法詳解

    這篇文章主要介紹了C++?typedef用法詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • C語(yǔ)言深入探索數(shù)據(jù)類型的存儲(chǔ)

    C語(yǔ)言深入探索數(shù)據(jù)類型的存儲(chǔ)

    使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2022-07-07
  • VSCode配置C++環(huán)境的方法步驟(MSVC)

    VSCode配置C++環(huán)境的方法步驟(MSVC)

    這篇文章主要介紹了VSCode配置C++環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論