当前位置:文档之家› c语言机房机位预定系统

c语言机房机位预定系统

课程设计说明书学院、系:专业:学生姓名:学号:设计题目:学生考勤系统起迄日期:指导教师:日期: 2017年5月11日1 设计目的模拟考勤过程,根据考勤评分给出考勤分数。

2 任务概述1>菜单界面:选择操作项目。

2>信息录入:输入学生身份信息与考勤次数,并存入文件。

3>修改功能:通过姓名或学号查找,对学生的考勤次数进行修改。

4>查询功能:通过姓名或学好查找,输出学生信息。

5>评分功能:设定标准考勤次数,按照考勤次数占标准考勤次数的百分比给分。

3 模块划分图1,模块划分图4 主要函数说明及其流程图main主函数:图2,主函数主函数:设计了初始界面,使程序的界面友好化。

给用户选择操作项目,让用户对程序的功能一目了然。

调用功能函数,完成设计目的。

图3,input()函数录入函数:通过使用循环体和判断语句,可实现重复输入学生数据和是否确定输入的功能。

使得用户操作起来更加自如。

图4,change()函数修改函数:通过学号和姓名两种方式可以查询到学生的信息,然后将考勤次数重新赋值并写入文件。

这样可以避免出现错误无法修改以至于重新输入的情况。

search()函数:图5,search()函数查询函数:通过学号和姓名两种方式可以选择查找方式,将文件的内容读出,可以看到学生的身份信息和修改后的考勤次数。

确定该生信息存在。

evaluate()函数:图6,evaluate()函数评分函数:输入标准考勤次数,将实际考勤次数占标准考勤次数的百分比作为最后分数。

5 程序运行数据及其结果姓名:张三学号:1性别:男考勤次数:5修改后考勤次数:10标准考勤次数:10考勤分数:1006 课程设计心得通过编写这次C语言课程设计,对C语言的基本语法,选择,循环等结构有了更深刻的认识。

深入地练习了函数的调用和文件的读写方法,熟悉了结构体的使用,和一些算法的运用。

在整个设计的过程中,遇到了很多问题。

当出现语法错误的时候,首先自己看书,看书上的语法和在例题中的应用,从而对该语法的记忆进一步加深。

当看完书仍然不是很明确的时候会在网上找一些相关资料,看看CSDN论坛和一些关于C语言的微博。

还有小部分问题请教了ACM实验室的同学,学到了一些更为简洁的方法。

这是大学的第一次课程设计,对我的提升很大,最重要的就是教会了我面对问题怎样去解决,可利用的资源非常多,不必拘泥于课本。

可以借鉴别人的方法,将自己的想法也加入其中,不断完善自己的知识体系,使自己所学的知识灵活的运用,用来解决实际问题。

在以后的学习过程中,要多思考所学的知识可以用来解决怎样的生活问题,怎样能使生活便利。

让自己所学的知识,为国家和社会带来便利。

附录:#include<stdio.h>#include<string.h>#include<stdlib.h>FILE*fp; //定义文件char a; //返回选择变量float kqcs; //应到考勤次数变量struct student{char name[10];char number[11];char sex;int kq;}stu[10];int main(){void input();void change();void search();void evaluate();char item;printf(" |===========================|\n");printf(" | 学生考勤管理系统|\n");printf(" |===========================|\n");printf(" |1.学生信息以及考勤情况录入|\n");printf(" |2.学生信息以及考勤情况修改|\n");printf(" |3.学生信息以及考勤情况查询|\n");printf(" |4.学生考勤总评分数查询|\n");printf(" |5.退出系统|\n");printf(" |===========================|\n");printf("\n");printf(" 请选择您需要的操作:\n");scanf("%c",&item);switch(item){case'1':input();break;case'2':change();break;case'3':search();break;case'4':evaluate();break;case'5':exit(0);}return 0;}void input(){int i,j=0,jx=1;printf("学生基本信息录入\n");if((fp=fopen("date.txt","w"))==NULL){printf("文件打开失败\n");exit(0);}for(i=0;jx==1;i++) //输入信息循环{for(;j==0;) //输入确认循环{getchar();printf("请输入第%d个学生的姓名:",i+1);gets(stu[i].name);printf("请输入第%d个学生的学号:",i+1);gets(stu[i].number);printf("请输入第%d个学生的性别:(男:m 女:f)",i+1);stu[i].sex=getchar();printf("请输入第%d个学生的当前考勤次数:",i+1);scanf("%d",&stu[i].kq);printf("您输入的信息为:\n姓名:%s\n学号:%s\n性别:%c\n重输:0 确认:1\n",stu[i].name,stu[i].number,stu[i].sex);scanf("%d",&j); //输入确认}j=0;if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件写入错误\n"); //写入文件printf("是否继续输入下一个学生信息?\n终止:0 继续:1\n");scanf("%d",&jx); //继续输入选择}fclose(fp);printf("0 返回主菜单\n");getchar();a=getchar();getchar();if(a=='0')main(); //返回主菜单}void change(){int i=0,j=0,sway,t,x;char name[10],number[11];printf("学生考勤修改\n");if((fp=fopen("date.txt","r"))==NULL) //将文件内容读入内存{printf("文件打开失败\n");exit(0);}for(i=0;feof(fp)==0;i++)fread(&stu[i],sizeof(struct student),1,fp); //读取文件内容fclose(fp); //关闭文件printf("选择查找方式:\n按照姓名查找:1 按照学号查找:2\n");scanf("%d",&sway);if(sway==1){printf("请输入需要修改学生的姓名:\n");scanf("%s",name);for(j=0;t!=0;j++){t=strcmp(stu[j].name,name);if(j==i){t=0;printf("未找到您所查询的数据,请重新输入\n");}}if(j<i) //查询成功{printf("您查找的学生信息如下:\n姓名:%s\n学号:%s\n性别:%c\n当前考勤次数%d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].kq);printf("是否修改该生考勤信息?\n否:0 是:1\n"); //选择是否修改考勤scanf("%d",&x); //输入选择变量值if(x==1){printf("请输入新的考勤值:");scanf("%d",&stu[j-1].kq);if((fp=fopen("date.txt","w"))==NULL) //{printf("文件打开失败\n");exit(0);}for(j=0;j<i;j++)if(fwrite(&stu[j],sizeof(struct student),1,fp)!=1)printf("文件写入错误\n"); //写入文件fclose(fp); //关闭文件}}printf("是否继续修改其他学生考勤?\n否:0 是:1\n");scanf("%d",&x);if(x==1)change();}if(sway==2){printf("请输入需要修改学生的学号:\n");scanf("%s",number);for(j=0;t!=0;j++){t=strcmp(stu[j].number,number);if(j==i){t=0;printf("未找到您所查询的数据,请重新输入\n");}}if(j<i) //查询成功{printf("您查找的学生信息如下:\n 姓名:%s\n学号:%s\n性别:%c\n当前考勤次数:%d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].kq);printf("是否修改该生考勤信息?\n 否:0 是:1\n");//选择是否修改考勤scanf("%d",&x); //输入选择变量值if(x==1){printf("请输入新的考勤值:");scanf("%d",&stu[j-1].kq); //输入新的考勤值if((fp=fopen("date.txt","w"))==NULL) //以只写方式打开文件{printf("文件打开失败\n");exit(0);}for(j=0;j<i;j++)if(fwrite(&stu[j],sizeof(struct student),1,fp)!=1)printf("文件写入错误\n"); //写入文件fclose(fp); //关闭文件}}printf("是否继续修改其他学生考勤?\n 否:0 是:1\n");scanf("%d",&x);if(x==1)change();}printf("0 返回主菜单\n");getchar();a=getchar();getchar();if(a=='0')main();}void search(){int i=0,j=0,sway,t,x;char name[10],number[11];printf("学生信息查询\n");if((fp=fopen("date.txt","r"))==NULL){printf("打开文件失败\n");exit(0);}for(i=0;feof(fp)==0;i++)fread(&stu[i],sizeof(struct student),1,fp);fclose(fp);printf("选择查找方式:\n按照姓名查找:1 按照学号查找:2\n");scanf("%d",&sway);if(sway==1){printf("请输入学生的姓名:");for(j=0;t!=0;j++){t=strcmp(stu[j].name,name);if(j==i){t=0;printf("未找到您所查询的数据,请重新输入\n");}}if(j<i){printf("您查找的学生信息如下:\n姓名:%s\n学号:%s\n性别:%c\n当前考勤次数%d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].kq);}printf("是否继续查询其他学生信息?\n否:0 是:1\n");scanf("%d",&x);if(x==1)search();}if(sway==2){printf("请输入学生的学号:");for(j=0;t!=0;j++){t=strcmp(stu[j].number,number);if(j==i){t=0;printf("未找到您所查询的数据,请重新输入\n");}}if(j<i) //查询成功{printf("您查找的学生信息如下:\n 姓名:%s\n 学号:%s\n 性别:%c\n 当前考勤次数:%d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].kq);}printf("是否继续查询其他学生信息?\n 否:0 是:1\n");scanf("%d",&x);if(x==1)search();}printf("0 返回主菜单\n");getchar();a=getchar();getchar();if(a=='0')main();}void evaluate(){int i=0,j=0,sway,t,x;float score;char name[10],number[10];if(kqcs==0){printf("请输入应到考勤总数:"); //请输入应到考勤总数scanf("%f",&kqcs);}if((fp=fopen("date.txt","r"))==NULL) //将文件内容读入内存{printf("文件打开失败\n");exit(0);}for(i=0;feof(fp)==0;i++)fread(&stu[i],sizeof(struct student),1,fp); //读取文件内容fclose(fp); //关闭文件printf("选择查找方式:\n 按照姓名查找:1 按照学号查找:2\n");scanf("%d",&sway);if(sway==1){printf("请输入学生的姓名:");scanf("%s",name);for(j=0;t!=0;j++){t=strcmp(stu[j].name,name);if(j==i){t=0;printf("未找到您所查询的数据,请重新输入\n");}}if(j<i)//查询成功{printf("您查找的学生信息如下:\n 姓名:%s\n 学号:%s\n 性别:%c\n 当前考勤次数:%d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].kq);score=(stu[j-1].kq)/kqcs*100;printf("该生当前考勤分数为:%5.2f\n",score);}printf("是否继续计算其他学生考勤分数?\n 否:0 是:1\n");scanf("%d",&x);if(x==1)evaluate();}if(sway==2){printf("请输入学生的学号:");scanf("%s",number);for(j=0;t!=0;j++){t=strcmp(stu[j].number,number);if(j==i){t=0;printf("未找到您所查询的数据,请重新输入\n");}}if(j<i) //查询成功{printf("您查找的学生信息如下:\n 姓名:%s\n 学号:%s\n 性别:%c\n 当前考勤次数:%d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].kq);score=(stu[j-1].kq)/kqcs*100;printf("该生当前考勤分数为:%5.2f\n",score);}printf("是否继续计算其他学生考勤分数?\n 否:0 是:1\n");scanf("%d",&x);if(x==1)evaluate();}printf("0 返回主菜单\n");getchar();a=getchar();getchar();if(a=='0')main();}。

相关主题