(完整word版)C语言课程设计学生考勤系统方案
C语言程序设计
课程设计报告设计题目:学生考勤系统设计
专业微电子科学与工程
班级微电131
学生赵杨怡
指导教师________________________
更场弘丿A字
—年—学期
资料整理
一、总体设计
1 ?程序的总体设计
◎确定界面,使用户可选择操作项目(录入,修改,查询,评分)。
◎录入功能:使用结构体,要求用户输入姓名、性别、学号、日期、节次、当前出勤情况等信息,并写入文件。
◎修改功能:使用户输入学号,姓名其中一项可以修改考勤其信息。对于修改功能的实现,是先将所有文件内容读入到内存中,然后修改考勤值,最后再重新覆盖写入文件。
◎查询模块:使用字符串比较函数,利用循环找到对应结构体数组元素,然后输出需要信息。对于查询功能的实现,同修改,是先将所有文件内容读入到内存中,然后查找到其中某项,最后输出到屏幕。
◎评分模块:系统根据总的应道考勤数按照百分制,求出每个学
生的分数,并输出到屏幕。
2. 数据结构
学生信息用结构体记录,包括姓名(字符数组)、性别(字
符型)、日期(年月日三个字符数组)、节次(整型)、出情况(整型)
3. 函数原型声明 void mai n () // 主函数 void in put (); // 录入数据函数 void chan ge (); // 修改数据函数 void search (); // 查询数据函数
void evaluate 。; // 计算总评函数
、详细设计
录入数据函数 修改数据函数
查询数据函数 计算总评函数 ★?★□★?★□★?★□★?★
? 学生考勤
? BY 朱胜佳
1. main()函数 void mai n() {
void in put(); //
void cha nge(); // void search(); // void evaluate(); // char item;
system("color 34"); printf("
□ ★?★□★ \n");
printf("
? \n");
printf("
管理系统
printf("
? \n");
printf("
? \n");
prin tf(" ?? \n");
prin tf(" ★?★□★?★□★?★□ ★?★□★?★□★ \n");
printf(" ?? \n");
printf(" ? 1. 学生信息及考勤情况录入?\n");
printf(" ?? \n");
printf(" ? 2. 学生信息及考勤情况修改?\n");
printf(" ?? \n");
printf(" ? 3. 学生信息及考勤情况查询?\n");
printf(" ◎◎ \n");
printf(" ? 4. 学生考勤总评分数查询? \n");
printf(" ??\n");
printf(" ★?★□★?★□★?★□ ★?★□★?★□★ \n"); // 用户界面
prin tf("\n");
printf(" 请选择您需要的操作\n");
scan f("%c",&item);
switch(item)
{
case '1': in put();break;
case 2: cha nge();break;
case 3: search();break;
case '4': evaluate();break;
} // 实现功能选择}
流程图:
***************************
if((fp=fope n("date.txt","w"))==NULL) {
printf(" 文件打开失败\n"); exit(0); }
for(i=0;jx==1;i++) //
输入信息循环 { for(;j==0;)
//
输入确认循环
2.
input ()函数
void in put()
int i,j=O,jx=1;
printf(" ? ************************ 学生基本信息录入
**\n");
getchar();
printf(" 请输入第%4个学生的姓名",i+1);
gets(stu[i]. name);
printf(" 请输入第%4个学生的学号",i+1);
gets(stu[i]. nu mber);
printf(" 请输入第%d个学生的性别(男:m女:f) ",i+1);
stu[i].sex=getchar();
printf("请输入第%4个学生的生日(格式:年月日)",i+1);
sca nf("%d%d%d",&stu[i].year,&stu[i].mo nth,&stu[i].day);
printf(" 请输入第%(个学生的当前考勤次数",i+1);
sca nf("%d", &stu[i].kq);
printf(" 您输入的信息为姓名%s学号%s性别%c生日%d 年%d 月%d 日\n
0 重输 1 确认",stu[i]. name,stu[i]. nu mber,stu[i].sex,stu[i].year,stu[i].m ont
h,stu[i].day);
sca nf("%d",&j); // 输入确认
}
j=0;
if(fwrite(&stu[i],sizeof(struct stude nt),1,fp)!=1) printf(" 文件写入错误\n"); // 写入文件
printf(" 是否继续输入下一个学生信息0终止1
继续\n");
sca nf("%d",&jx); // 继续输入选择
}
fclose(fp);
printf("0 返回主菜单\n");
getchar();
a=getchar();
getchar();
if(a=='0') mai n(); // 返回主菜单}
流程图: