c语言学生考勤系统
項(xiàng)目要求:
 學(xué)生考勤系統(tǒng)
 功能:學(xué)生考勤系統(tǒng)應(yīng)包含各班學(xué)生的全部信息。每個(gè)學(xué)生是一條記錄,包括姓名、性別、學(xué)號(hào)、出勤情況等。本系統(tǒng)可模擬考勤過(guò)程,記錄考勤結(jié)果,并能夠在課程結(jié)束后按照設(shè)定的考勤評(píng)分標(biāo)準(zhǔn)自動(dòng)給出每個(gè)學(xué)生的考勤分?jǐn)?shù)。
 分步實(shí)施:
 (1)初步完成總體設(shè)計(jì),搭好框架,確定人機(jī)對(duì)話界面,確定函數(shù)個(gè)數(shù);
 (2)最低要求:建立一個(gè)文件,包括同一個(gè)班的10個(gè)學(xué)生的必要信息,能對(duì)文件進(jìn) 行補(bǔ)充、修訂、刪除。
采用結(jié)構(gòu)體數(shù)組讀入讀出文件(二進(jìn)制形式寫進(jìn)data.txt文件)
#include<stdio.h> #include<stdlib.h> #include<string.h>const int N = 1010; const int LEN = 20; const int CLAstunumber = 10;//每個(gè)班CLAstunumber人 typedef struct {char attdate[LEN];//日期int atts;//出勤情況 0缺勤 1出勤 }attdent;typedef struct {char stname[LEN];char sex[LEN];int stnumber;int core;attdent stattdent[N];//最多紀(jì)錄N個(gè)日期的考勤情況 }studentinf; int cnt;//記錄日期數(shù)組用到哪里 studentinf students[CLAstunumber];void menu() {printf("========================================================\n");printf("0.學(xué)生信息錄入\n");printf("1.開(kāi)始考勤\n");printf("2.修改學(xué)生考勤紀(jì)錄\n");printf("3.生成并查看學(xué)生考勤分?jǐn)?shù)\n");printf("4.讀取數(shù)據(jù)\n");printf("5.保存數(shù)據(jù)\n");printf("6.退出\n");printf("========================================================\n"); }void studentinput() {//錄入操作 for(int i = 0 ; i < CLAstunumber; i ++){printf("----------------------------------------\n");printf("請(qǐng)輸入學(xué)生姓名: |\n");studentinf student1;scanf("%s",student1.stname);printf("請(qǐng)輸入學(xué)生性別: |\n");scanf("%s",student1.sex);printf("請(qǐng)輸入學(xué)生學(xué)號(hào): |\n");scanf("%d",&student1.stnumber);student1.core = 0;//(student1.stattdent[N]).attdate[LEN] = '0';students[i] = student1;printf("----------------------------------------\n");} }void attcheck() {//考勤操作 for(int i = 0;i < CLAstunumber ; i ++){students[i];printf("------------------------------\n");printf("姓名:%s\n",students[i].stname);printf("性別:%s\n",students[i].sex);printf("學(xué)號(hào):%d\n",students[i].stnumber);printf("請(qǐng)輸入時(shí)間:XXXX/XX/XX\n");scanf("%s",(students[i].stattdent[cnt]).attdate);printf("請(qǐng)輸入該學(xué)生出勤情況:(0表示缺勤,1表示出勤)\n");scanf("%d",&(students[i].stattdent[cnt]).atts);cnt ++;printf("------------------------------\n");} }void changeinf() {//遍歷修改char fname[LEN];char fdate[LEN];printf("----------------------------------\n");printf("請(qǐng)輸入學(xué)生姓名:\n");scanf("%s",fname);int stand1;//退出第一層for標(biāo)準(zhǔn) for(int i = 0;i < CLAstunumber; i ++) {if(!strcmp(fname,students[i].stname)){printf("學(xué)生姓名:%s\n",students[i].stname);printf("請(qǐng)輸入時(shí)間:(XXXX/XX/XX)\n");scanf("%s",fdate);for(int j = 0;j < cnt ; j ++){if(!strcmp(fdate,(students[i].stattdent[j]).attdate))printf("學(xué)生:%s",fname);printf("考勤時(shí)間:%s\n",fdate);printf("出勤情況:%d\n",(students[i].stattdent[j]).atts);printf("請(qǐng)輸入修改后的出勤情況:\n");scanf("%d",&(students[i].stattdent[j]).atts);printf("修改成功!\n");stand1 = 1;break;}if(stand1 == 1) break;}}printf("----------------------------------\n"); }void checkcore() {//生成考勤分?jǐn)?shù) = 出勤次數(shù)即分?jǐn)?shù) for(int i = 0;i < CLAstunumber; i++){printf("----------------------------\n");printf("學(xué)生姓名:%s\n",students[i].stname);printf("學(xué)生性別:%s\n",students[i].sex);printf("學(xué)生學(xué)號(hào):%d\n",students[i].stnumber);//計(jì)算分?jǐn)?shù)students[i].core = 0;for(int j = 0;j < cnt ; j ++){students[i].core += (students[i].stattdent[j]).atts; } printf("考勤分?jǐn)?shù):%d\n",students[i].core); printf("----------------------------\n");}}void readdata() {FILE *fp = NULL;fp = fopen("data.txt","rb");//讀出 int i = 0;while(!feof(fp)){fread(&students[i],sizeof(studentinf),1,fp);i ++;}i --;cnt = i;fclose(fp); printf("讀取成功!\n"); }void savedata() {FILE *fp = NULL;fp = fopen("data.txt","wb");//寫入for(int i = 0;i < CLAstunumber ; i ++){fwrite(&students[i],sizeof(studentinf),1,fp);}fclose(fp); printf("保存成功!\n"); }int main() {menu();int op;while(1){scanf("%d",&op);if(op == 0){system("cls");studentinput();menu();}else if(op == 1){system("cls");attcheck();menu();} else if(op == 2){changeinf();menu();}else if(op == 3){system("cls");checkcore();menu();}else if(op == 4){system("cls");readdata();menu();}else if(op == 5){system("cls");savedata();menu();}else if(op == 6){break;}else printf("input error!\n");}}總結(jié)
 
                            
                        - 上一篇: 有bug,我不改,哎,就是玩儿!
- 下一篇: 南京理工大学 计算机调剂科目,南京理工大
