永发信息网

C语言学生出勤管理系统

答案:2  悬赏:10  手机版
解决时间 2021-02-06 10:20
问题描述:该系统要求建立一个简单的学生出勤管理系统,并具有排序、查找、计算、插入、计算、显示等功能。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。
功能要求:(文件操作,文件中至少包含了15条以后的信息)
(1)学生出勤信息包括:出勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)等。
(2)需要实现的功能
1)使用文件保存学生出勤信息,程序运行时从文件读入数据,程序结束前将数据保存在文件中;
2) 新增学生的缺课记录;
3) 改某个学生的缺课记录;
4) 查询某个学生的缺课情况;
5) 统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;
6) 学生可自动增加新功能模块(视情况可另外加分)。
(3)界面友好,输入信息符合逻辑如输入月份不能输入13月等。
大神求指教!
急!!!!!!!!!!!!!!
最佳答案
你好懒惰哦!!自己不做,到网上来找人做!!
全部回答
c 语言学生成绩管理系统 #include #include #include #include typedef struct student { char studentnumber[20]; char studentname[20]; char classname[20]; float mark1; float mark2; float mark3; struct student *next; }student; student *headlink; void readinfoformfile(); void menu(); void createheadlink(); student *mallocnode(); void getinformation(student *t); void outputinformation(); void desplayinfobystudentname(); void desplayinfobystudentnumber(); void desplayonenode(student *t); void insertonenode(student *t); void deletenodebystudentnumber(); void changemarkbyname(); void changemarkbynumber(); void savelinktofile(); void paixu(); void desplaymarksegment(); int choose; main() { system("color 2a"); printf("\n\t\t欢迎进入***学院***班学生成绩管理系统\n\n\n"); printf("\t\t\t\to(∩_∩)o\n\n\n\n"); printf("\t\t\t^_^\t\t\t^_^\n\n"); printf("\n\t\t 注意:请按照要求输入相应信息,谢谢!\n\n\n\n\n"); printf("\t\t\t\t\t\t\t\t制作人:***\n\n\n"); printf("\t\t\t 按任意键进入…………"); getch(); system("cls"); createheadlink(); readinfoformfile(); menu(); } void readinfoformfile(void) { file *fp; student *p; fp=fopen("student.txt","r"); if(!fp) { printf("\n"); return; } p=mallocnode(); while(fscanf(fp,"%s%s%s%f%f%f",p->studentnumber,p->studentname,p->classname,&(p->mark1),&(p->mark2),&(p->mark3))>0) { insertonenode(p); p=mallocnode(); } fclose(fp); } void menu(void) { student *p; printf("\t\t (^o^)欢迎使用学生成绩管理系统(^o^)\n\n"); printf("\t ※--------------------请选择相应功能---------------------※\n\n"); printf("\t 1: 显示所有学生的信息 |"); printf(" \t 2: 按姓名查询 |\n\n"); printf("\t 3: 按学号查询 |"); printf(" \t\t 4: 增加学生 |\n\n"); printf("\t 5: 删除学生 |"); printf(" \t\t 6: 按姓名修改学生成绩 |\n\n"); printf("\t 7: 按学号修改学生成绩 |"); printf(" \t 8: 保存所有学生信息 |\n\n"); printf("\t 9: 按成绩输出学生信息 |"); printf("\t 10: 显示不及格及优秀学生 |\n\n"); printf("\t 11: 返回主菜单 |"); printf("\t\t 12: 退出 |\n\n"); printf("\t ※----------------------o(∩_∩)o------------------------※\n\n"); printf("\t 请输入对应数字:"); scanf("%d",&choose); switch(choose) { case 1:system("cls"); outputinformation(); break; case 2: system("cls"); desplayinfobystudentname(); break; case 3: system("cls"); desplayinfobystudentnumber(); break; case 4: system("cls"); p=mallocnode(); getinformation(p); insertonenode(p); break; case 5: system("cls"); deletenodebystudentnumber(); break; case 6: system("cls"); changemarkbyname(); break; case 7: system("cls"); changemarkbynumber(); break; case 8: system("cls"); savelinktofile(); break; case 9: system("cls"); paixu();break; case 10: system("cls"); desplaymarksegment();break; case 11: system("cls"); break; case 12: system("cls"); savelinktofile(); free(headlink); exit(1); break; default: system("cls"); break; } menu(); } void createheadlink(void) { student *p; p=(student*)malloc(sizeof(student)); headlink=p; p->next=null; } student *mallocnode(void) { student *p; int i; p=(student*)malloc(sizeof(student)); if(p==null) return null; for(i=0;i<10;i++) p->studentnumber='\0'; for(i=0;i<20;i++) p->studentname='\0'; for(i=0;i<20;i++) p->classname='\0'; p->mark1=0.0; p->mark2=0.0; p->mark3=0.0; p->next=null; return p; } void getinformation(student *t) { printf("请输入学生学号:"); scanf("%s",t->studentnumber); printf("请输入学生姓名:"); scanf("%s",t->studentname); printf("请输入该生所在班级:"); scanf("%s",t->classname); printf("请输入第1门成绩:"); scanf("%f",&(t->mark1)); printf("请输入第2门成绩:"); scanf("%f",&(t->mark2)); printf("请输入第3门成绩:"); scanf("%f",&(t->mark3)); } void insertonenode(student *t) { student *p; p=headlink; while(p->next) { p=p->next; } p->next=t; } void desplayinfobystudentname(void) { student *p; char studentname[20]; char flag=0; p=headlink->next; printf("请输入学生姓名:"); scanf("%s",studentname); while(p) { if(strcmp(p->studentname,studentname)==0) {system("cls"); printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n"); desplayonenode(p); flag=1; break; } p=p->next; } if(!flag) {system("cls"); printf("\t 对不起,不存在姓名为 %s 的学生\n",studentname);} } void desplayinfobystudentnumber(void) { student *p; char studentnumber[20]; char flag=0; p=headlink->next; printf("请输入学生学号:"); scanf("%s",studentnumber); while(p) { if(strcmp(p->studentnumber,studentnumber)==0) { system("cls"); printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n"); desplayonenode(p); flag=1; break; } p=p->next; } if(!flag) {system("cls"); printf("\t 对不起,不存在学号为 %s 的学生\n",studentnumber); }} void desplayonenode(student *t) { printf("\t%s\t",t->studentnumber); printf("%s\t",t->studentname); printf("%s\t",t->classname); printf("%.2f\t",t->mark1); printf("%.2f\t",t->mark2); printf("%.2f\t",t->mark3); printf("%.2f\t",t->mark1+t->mark2+t->mark3); printf("%.2f\t\n",(t->mark1+t->mark2+t->mark3)/3); } void deletenodebystudentnumber(void) { char studentnumber[10]; student *p,*q; char flag=0; printf("请输入要删除的学生学号:"); scanf("%s",studentnumber); p=headlink; q=headlink->next; while(q) { if(strcmp(q->studentnumber,studentnumber)==0) { p->next=q->next; free(q); flag=1; break; } p=p->next; q=q->next; } if(!flag) { system("cls"); printf("\t 不存在该学号的学生\n"); return; } system("cls"); printf("\t 成功删除\n"); } void outputinformation(void) { student *p; p=headlink->next; if(p==null) { printf("\t 现在没有学生信息,请先输入学生信息\n\n"); return; } printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n"); while(p) { desplayonenode(p); p=p->next; } } void changemarkbyname(void) { student *p; char studentname[20]; char flag=0; float mark1,mark2,mark3; p=headlink->next; printf("请输入学生姓名:"); scanf("%s",studentname); while(p) { if(strcmp(p->studentname,studentname)==0) { printf("请输入新的第1门成绩:\n"); scanf("%f",&mark1); printf("请输入新的第2门成绩:\n"); scanf("%f",&mark2); printf("请输入新的第3门成绩:\n"); scanf("%f",&mark3); p->mark1=mark1; p->mark2=mark2; p->mark3=mark3; flag=1; printf("修改成功\n"); break; } p=p->next; } if(!flag) {system("cls"); printf("\t 对不起,不存在姓名为 %s 的学生\n",studentname); } } void changemarkbynumber(void) { student *p; char studentnumber[20]; char flag=0; float mark1,mark2,mark3; p=headlink->next; printf("请输入学生学号:"); scanf("%s",studentnumber); while(p) { if(strcmp(p->studentnumber,studentnumber)==0) { printf("请输入新的第1门成绩:\n"); scanf("%f",&mark1); printf("请输入新的第2门成绩:\n"); scanf("%f",&mark2); printf("请输入新的第3门成绩:\n"); scanf("%f",&mark3); p->mark1=mark1; p->mark2=mark2; p->mark3=mark3; flag=1; printf("修改成功\n"); break; } p=p->next; } if(!flag){system("cls"); printf("\t 对不起,不存在学号为 %s 的学生\n",studentnumber); }} void savelinktofile(void) { student *p; file *fp; p=headlink->next; if(p==null) { printf("\t 现在没有学生信息,请先输入学生信息\n\n"); return; } fp=fopen("student.txt","w+"); if(!fp) { printf("文件不存在\n"); return; } while(p) { fprintf(fp,"%s %s %s %f %f %f\n",p->studentnumber,p->studentname,p->classname,p->mark1,p->mark2,p->mark3); p=p->next; } fclose(fp); } void desplaymarksegment(void) { student *p; int count=0; p=headlink->next; printf("\t60分以下(不及格)的学生成绩如下:\n"); printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n\n"); while(p) { if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10)))) { count++; desplayonenode(p); } p=p->next; } printf("\t不及格的学生一共有%d人\n",count); p=headlink->next; printf("\t成绩优秀的学生成绩如下:\n"); printf("\t学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n\n"); count=0; while(p) { if((8<=((int)(p->mark1/10)))&&(8<=((int)(p->mark2/10)))&&(8<=((int)(p->mark3/10)))) { count++; desplayonenode(p); } p=p->next; } printf("\t成绩优秀的学生一共有%d人\n",count); } void paixu(void) { student exchange,*r,*p,*q; r=headlink->next; if(r==null) { printf("\t 现在还没学生信息,请先输入学生信息\n"); return; } while(r) { p=r; q=r->next; while(q) { if((q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3)) { strcpy(exchange.studentnumber,q->studentnumber); strcpy(exchange.studentname,q->studentname); strcpy(exchange.classname,q->classname); exchange.mark1=q->mark1; exchange.mark2=q->mark2; exchange.mark3=q->mark3; strcpy(q->studentnumber,p->studentnumber); strcpy(q->studentname,p->studentname); strcpy(q->classname,p->classname); q->mark1=p->mark1; q->mark2=p->mark3; q->mark3=p->mark3; strcpy(p->studentnumber,exchange.studentnumber); strcpy(p->studentname,exchange.studentname); strcpy(p->classname,exchange.classname); p->mark1=exchange.mark1; p->mark2=exchange.mark2; p->mark3=exchange.mark3; } q=q->next; } r=r->next; } outputinformation(); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
华夏银行的还款日是每月28号,那么它的账单日
石壁镇供电所地址在哪,我要去那里办事
中国电信电视·宽带·手机服务中心科瑞服务中
找清欠公司要债违法吗?
我是一个未成年人 我不想读书了 可是不知
海南电网琼海供电公司怎么去啊,我要去那办事
JAVA中的API怎么使用?不是怎么打开,而是怎
深圳地铁塘坑站多久一班车
赐假的意思是什么啊?知道的请说下!
海南省水利电力发展有限公司牛路岭水电站地址
天等县城关中医院怎么去啊,有知道地址的么
美国科学家成功获得转基因超级鼠的实验说明AA
感觉房东太坑了 既然每度电要收一块二 气死了
俄罗斯侵占中国的领土会归还吗?
塔洋镇供电所地址有知道的么?有点事想过去
推荐资讯
QQ三国大概还有多少人在玩?
取路的意思是什么啊?知道的请说下!
由造血干细胞在骨髓中直接发育成的淋巴细胞是
合辙的意思是什么啊?知道的请说下!
变形计中最红的主人公
德州康泽建材有限公司怎么样?
圣诞旅游: 乘火车出游,卧铺太吵睡不着怎么办
作为当年的香港四大天王 黎明是不是最没存在
合成村地址有知道的么?有点事想过去
恬夷的意思是什么啊?知道的请说下!
python 多线程 访问网站
用总分或者总分总写一段话,描写同学们下课或
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?