日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

c语言如何做一个打卡的程序,C语言实现学生打卡系统

發(fā)布時(shí)間:2023/12/31 windows 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言如何做一个打卡的程序,C语言实现学生打卡系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文實(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

#include

#include

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í)有所幫助,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的c语言如何做一个打卡的程序,C语言实现学生打卡系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。