学生考勤系统C语言课程设计_第1页
学生考勤系统C语言课程设计_第2页
学生考勤系统C语言课程设计_第3页
学生考勤系统C语言课程设计_第4页
学生考勤系统C语言课程设计_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《程序设计》

课程设计说明书

课程名称《程序设2--------------

设计题目—C语言课程设计学生考勤系统----------

专业班级

学生姓名

指导老师

起[卜R期2013年6月8口至2013年6月14口

福文林业职业孩本学觉a劭也工余

书目

第1章设计目的..................

第2章总体设计....................

第3章具体设计....................

第4章调试与测试..................

第5章总结与体会..................

附:源程序清单和执行结果.......................

第1章设计目的

本次C语言课程设计是对本学期程序设计基础课程的实际应用,也算是对所学学问的一次检验,通过

本次课程设计能达到的目的如下:

1.巩固和加深对C课程基本内容和理论学问的理解和驾驭。

2.驾驭C语言编译和程序调试的基本技能。

3.利用C语言进行基本的程序设计从而逐步了解文件的一些相关操作和驾驭函数的运用技巧,包括函数类

型的选择,含参数的传递方式。

4.驾驭运用数组,指针,引用,文件等编译的方法,提高运用C语言解决实际问题的实力。

5.通过对学生考勤系统的设计、编写源代码,以及对C语言中各个语法和函数的运用,使得对比较因难的

结构体、链接、文件的操作更加熟识。

6.通过课程设计,将本学期所学学问与实际应用联系和结合起来,培育自己的动手实力,以及加强各学科

之间的联系,从而提高个人的团队意识,增加团队之间协调和协作

第2章总体设计

2.1学生考勤信息记录系统的要求

通过该系统实现对学生考勤信息进行创建、录入、修改、查询、保存等操作的管理。

试验考勤信息包括学生姓名,学号,学科种类,各科的考勤信息。

主要功能:

1)、能够完成对考勤的录入和修改

2)、创建一个班级的信息

3)、设备的查询

4)、将考勤信息保存到文件中

2.2流程图

依据设计要求,画出如下流程图:

开女台

单2

第3章具体设计

3.1函数以及调用关系

voidmune__l();/*菜单函数1*/

voidmune_2()/*菜单函数2*/

123456

退

录

查

创

修

查

出

入

建

改

询

询

系

记

信

信

个

整

统

录

息

息

人

班

BreakBreakBreakBreakBreakbreak

结束

voidenter(void);/*录入函数刃

o->num==a

voidsearch_l(void);/*查询个人信息*/

返回菜单2

voidsearch_2(void);/*查询班级信息*/

voidmodify(void);/*修改函数*/

重新输入这位学生的考勤信息

返回菜单2

voidsave(structStudent*,char[]);

退出

3.2结构的应用

If…else结构和while结构嵌套结构:

while(pl->num!=O)

(

n=n+l;

if(n==l)

head=pl;

elsep2->next=pl;

p2=pl:

pl=(structStudent*)malloc(LEN);

scanf(*%s%d%sz,,pl->name,&pl->num,pl->sex);

p1->math=p1->Eng]ish=p1->physics=p1->Mks=p1->C=p1->tea1=p1->PE=O;

}

p2->ncxt=NULL;

p=head;

while(p!=NULL)

(

fwrite(p,LEN,1,fp);

p=p->next;

}

fclose(fp);

printfC\t\t\t创建胜利,按随意键返回主菜单\n");

getchO;

sy£t©m(*cle/,);

mune2():

2switch结构

switch(sub)

(

case1:(p->iiath+=num;}break;

case2:{p->Eng1ish+=num;}break;

case3:(p->physics+=num;}break;

case4:{p->Mks+=num;}break;

case5:{p-X+=num:}break;

case6:{p->teal+=num:}break;

case7:{p->PE+=num:}break;

}

3while结构

while(p!=NULL)

(

if(p->num==a)

(

printf("\n\t't请重新输入高等数学缺勃节数:");

scanf(飞d”,&p->math);

printf("\n\t\t请重新输入高校英语缺勤节数:");

scanf'(飞d”,&p->English);

printfC\n\t\t请输入高校物理缺勤节数:");

scanf(飞d”,&p->physics);

printf(*\n\t\t请重新输入马克思主义基本原理与概论缺勤节数:");

scanf(飞d”,&p->Mks);

printf(*\n\t\t请重新输入C语言缺勤节数:");

scanf&p->C);

请市新输入英语口语缺勤节数:");

scanf(飞d”,&p->teal);

printf(*\n\t\t请重新输入体育缺勤节数目:”);

scanf(*%d*,&p->PE);

flag=l:

save(head,cla);

printf(*\n\t\t修改胜利!\n\t't");

break;

}

p=p->next;

第4章调试与测试

4.1调试

执行程序时,显示如下信息

选择不同的选项,执行相应的功能。

1、录入本次课考勤情况2、查询学生考勤信息

3、创建学生信息4、修改学生信息

5、查看班级考勤情况6、退出考勤系统

请输入您所需的操作

(选择3),创建一个班级的基本信息。

人

仓

以现

本

m白原文件)

入nt

ngnp

志l

TJnp

寓Xpl

Sln.

文npHg

pl

靠

a一g•

n一

i耳

nP写

i一

QP3

aP

+ffiPi3

定

n月

Pi

匹

a月

Pi

炳

Mn-早

Pi

智ing

HP耳

家in

P目

界nt

2QP.

司P9

B2

心

沼

炜

钊

(选择1).录入本次课考勤状况。

1、高等数学2、大学英语

3、大学物理4、马克思基本原理概论

5、C程序设计基础教师口语

?、体肓

请输入科目选项<】▼):

输入缺勤同学和缺勤节数:

请湎人才席同学的座号:5

青输入该同学的缺课节数:2

******w入成功******???

杲否继续输入

结束输入则输入n后返回菜单2:

1、录入本次课考勤情况2、查询学生考勤信息

3、创建学生信息4、修改学生信息

5、查看班级考勤情况6、退匕考勤系统

数学英语物理马克思C语言教师口语体肓

3000000

(选择4),修改学生个人考勤信息。

请输入要修改的班级:H02

请输入要修改的学生的座号:2

请重新输入高等数学缺勤节数

请重新输入大学英语缺勤节数:1

请输入大学物理缺勤节数

请重新输入马克思主义基本原理与概论缺勤节数:1

请重新输入C语言缺勤节数:1

请重新输入英语口语缺勤节数:1

请重新输入体育缺勤节数目门

修改成功?

(选择5),查看一个班级的考勤信息。

兴头*X*

兴兴兴***兴兴兴兴兴兴兴兴M兴兴兴兴兴兴

性^

座

号^

m数学英语物理马克思语言教师口语体育

1frC

中

心rn0000000

2nf

3r1111111

瞿n

4p0000000

心ln

5*r0300000

r2000200

6文rn

7nr0000000

-fr

8Mw>rn0000000

9n*0000000

翕

u迪rl

0ln0000000

梁r

航

1东r0000000

rn

2远0000000

柯n

至l

3炳r000

nr0000

糅

十

4智r

nf0000000

5家r0000000

张

嘉nr

6国nr0000000

喜l

奇

7小r0000000

邓n

0r0000000

岭f

-向n

Hr0000000

(选择6),退出学生考勤信息系统。

感谢您的使用~

第5章总结与体会

三周的课程设计已经结束了。

回想学习C语言的过程中,既有欢乐又有苦恼。

从领到书的那一刻,我就很郁闷,《C语言程序设计》究竟事学什么的,有什么用。刚起先上课时,还在

迷茫这门课程是用来做什么的。不过,这些感受都是在对这门课程不了解的状况下产生的。后来渐渐的接

触多了,听老师讲的多了,了解多了,渐渐的产生了爱好。尤其是学到语句和函数时,上机操作程序,经

过编译,调试和运行后,出现界面,当时觉得很新奇,想真正的学好这门课程。通过半个学期的学习,我

驾驭了基本学问。

下学期起先时,被通知要进行课程设计。当时有点懵,感觉学的东西很少,很零散,不知该怎么连到一起,

就要课程设计,是不是太难为我们了。

第一天基本上都是在者书,把基本学问再熟识一遍。到了下午的时候,看了许多练习题,从这些练习题上

我得到了不少启发,然后我们组把整个程序的思路理清了,起先着手写程序。

第一周结束的时候,我感觉自己收获挺大的,从一起先的迷茫,不知道从何下手到把程序中的几个模块编

写出来,心里挺快乐的。但是,接下来,我们又不得不再次陷入逆境。在整个程序的编写过程中,最难的

就是修改和删除这两个模块,这也是我们要解决的重点问题。

起先编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但

编译时老出错,修改后的内容将文本内的信息全部覆盖了。困难之时,我们组的其他人,帮助了我,完成

了修改和删除,这让我相识到团队的力气。这样的话,整个程序基本上全部完成了,就剩下完善工作了。

我们组写了两个程序,最终,两个程序相互组合,互补,大功告成

虽然设计时完成了,但是我觉得其中还是有一些不足之处:

1.警告句。程序中缺少一些警告句,例如:“是否真的删除(y/n)”。

2.重名的状况。由于考虑的不周全,没有设计遇到重名的状况该怎么处理。

3.选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽视了重名的状况。

整个程序完成了,还有许多不完善的地方,希望自己以后办事的时候要细致,细致,考虑周全。

短短的几周课程设计结束了,但是这段时间里,我又学到了更多C学问,如:对象数组,string类,文件

流,链表以及文件对链表的操作等,同时我也被提示以后办事的时候要细致,细致,考虑周全,也看到了

团队精神和互帮互助的重要性。这一点会让我终生受益。通过这次课程设计,我觉得自己肚子里的墨水多

T,收获也挺大的,这几周过的挺充溢!

*附:源程序清单和执行结果

#include<stdio.h>

#include<stdlib.h>

^include<conio.h>

#include<string.h>

#defineLENsizeof(structStudent)

structStudent

(

intnum;

charname[15];

charsex[4];

intmath,English,physics,Mks,C,teal,PE;

structStudent*next:

);

intn;

voidmainO

(

voidcreat(void);

voidsave(structStudant*,char[]);

structStudent*load(char[]);

voidenter(void);/*录入函数*/

voidsearch_l(void);/*查询函数」*/

voidsearch_2(void);/*查询函数_2*/

voidmodify(void);/*修改函数*/

voidback(void);/*退出函数*/

voidmune_l();/*界面-1*/

voidmune_2();/*界面-2*/

mune_l();

mune_2();

printf(*\n*);

}

voidmune_l()

{

printf(*\n\n\n\n\n\n*);

printf(*\t^***^^*^***>w********************************************);

printf(*\t\t\t********************");

printf('\t\t\t◊*****♦,*欢迎使用班级考勤系统***♦**♦*◊");

printf(*\t\t\t*********************);

printf(*\n\t************************************************************\n\n\n*):

printf(*=========="—====="===—=======—=========="=========*);

printf("\n\n\n\t\t\t\t<按随意键进入>\n\t\t\t\t\t");

getchO;

system(*cls*);

)

voidmune_2()

(

intoption,ch;/*定义一■个选项的数据类型*/

printf("\n\n\n");/*制作的一个美丽的选择界面*/

printf(*\t***************************************************************\n*);

printf(*\t*\t\t\t\t\t\t\t*\n*);

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*1、录入本次课考勤状况\t2、查询学生考勤信息\t*\n0;

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*3、创建学生信息\t\t4、修改学生信息\t*\n*);

printf*\n");

printf(*\t*5、查看班级考勤状况\t6、退出考勤系统\t*\n");

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*\t\t\t\t\t\t\t*\n");

printf("\t***************************************************************\n*);

printf(*\n*);

printf(*\t\t\t请输入您所需的操作(广6):\n\t\t\t\t");

while(l)

(

scanfAoption):

switch(option)

(

case1:{ch=getchar0;system(*cls*);enterO;}break;

case2:{ch=getchar();system(*cls*);search_l();}break;

case3:{ch=getchar0:system(*cls*);creat0;}break:

case4:{ch=getchar();system(*cls*);modify();}break;

case5:{ch=getchar0;system(*cls*);search_2();}break;

case6:{ch=getchar();systemCels*);back();}break;

default:printf('\t\t\t输入错误,请重新输入!!!");

)

printf(*\n\t\t\t\t*);

)

ch=getchar();

)

voidsave(structStudent*head,char[])

(

FILE*fp;

structStudent*p=head:

if((fp=fopen(,*wb*))=NULL)

(

printf(*cannotopenfile\n*);

exit(O);

}

while(p!=NULL)

(

fwrite(p,LEN,1,fp);

p=p->next;

)

fclose(fp);

)

structStudent*load(char[])

(

FILE*fp;

structStudent*head,*pl,*p2;

head=NULL;

pl=NULL;

if((fp=fopen(,*rb*))=NULL)

(

printf(*cannotopenfile\n*);

exit(O);

)

while(!feof(fp))

(

p2=(structStudent*)malloc(LEN);

if(fread(p2,LEN,1,fp)==1)

(

if(head=NULL)

head=p2;

if(pl)

pl->next=p2;

P1=P2;

pl->next=NULL;

return(head);

voidenter()/*录入函数*/

structStudent*head,*p;

charselect=,y1,cla[10];

intsub,stu,num,flag=3;

printf("请输入上课班级:”);

scanfcla);

strcat(cla,*.dat*);

p=head=load(cla);

sy5tem(*cls*);

while(select=,y'11select=*Y')

(

printf(*\n\n\n*);

printf(*\t********************************\n*);

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*Is高等数学\t\t2、高校英语\t\t*\n");

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*3、高校物理\t\t4、马克思基本原理概论*\n*):

printf(*\t*\t\t\t\t\t\t\t*\n*);

printfC\t*5、C程序设计基础\t6、老师口语\t\t*\n*):

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*7、体育\t\t\t\t\t\t*\n*);

printf(*\t*\t\t\t\t\t\t\t*\n");

printf(*\t*\t\t\t\t\t\t\t*\n*);

printf(*\t********************************\n");

printf(*\n*);

printf(*\t\t\t请输入科目选项(1~7):\n\t\t\t\t");

scanf("%d”,&sub);

while(l)

(

if(sub>0&&sub<8)

break:

else

printfC\t\t\t输入错误,请重新输入\n\t\t\t\J);

scanf&sub);

system(*cls*);

printf("请输入本次课缺席同学的座号:”);

scanf("%d”,&stu);

printf(*\n*);

printfC请输入该同学的缺课节数:”);

scanf("%d”,&num);

while(p!=NULL)

(

if(p->num=stu)

switch(sub)

(

case1:{p->math+=num;}break:

case2:{p->English+=num;}break;

case3:{p->physics+=num;}break:

case4:{p->Mks+=num;}break;

case5:{p-X:+=num;}break;

case6:(p>teal•-num;}break;

case7:{p->PE+=num;}break;

)

p=p->next;

)

printf('\n\n\t\t******输入胜利*♦****!!!\n");

printf("是否接着输入(y\\n):");

scanfftselect);

)

save(head,cla);

getchO;

system(*cls*);

mune_2();

)

voidsearch_l(void)/*查询个人信息*/

(

structStudent*head,*p;

charselect=,y,cla[10];

intnum,flag=0;

printf("请输入上课班级:");

scanfcla);

strcat(cla,dat");

p=head=load(cla);

printfC请输入要查询同学的座号:");

scanf&num);

system(*cls*);

while(p!=NULL)

if(p->num=num)

(

printf(*\n\n*);

printf(*************************************

****\n");

printf(*座号姓名性别数学英语物理马克思C语言老师口语

体育\iT);

printf(*%3d%8s%4s%5d%5d%5d%5d%3d%7d%8d\n*,p->num,p->name,p->sex,

p->math.p->English,p->physics,p->Mks,p->C,p->teal,p->PE);

printf(*************************************

****\n");

flag=l;

)

p=p->next;

}

if(flag—0)

printf!!没有这个学生信息,请核对后再输入!!八n\n");

getchO;

system(*cls*);

mune_2();

)

voidsearch_2(void)/*查询某班级信息*/

(

charcla[10];

structStudent*head,*p;

printf("请输入您要查询的班级名:”);

gets(cla);

system("cis");

printf('\n\t\t\t%s班的考勤状况\n\n”,cla);

strcat(cla,dat");

p=head=load(cla);

printf(*****************************************\n*);

printf(*座号姓名性别数学英语物理马克思C语言老师口语体育\n");

while(p!=NULL)

(

printfC%3d%8s%4s%5d%5d%5d%5d%3d%7d%8d\n*,p->num,p->name,p->sex,

p->math,p->English,p->physics,p->Mks,p->C,p->teal,p->PE);

p=p->next;

}

printf(*\n***************************************

*\n");

getch();

system(*cls*);

mune_2();

)

voidmodify(void)/*修改函数*/

(

inta,flag=0;

charcla[10];

structStudent*head,*p;

printf(*\n\t\t请输入要修改的班级:〃):

scanfcla);

strcat(cla,dat");

p=head=load(cla);

printf(*\n\t\t请输入要修改的学生的座号:");

scanf&a);

while(p!=NULL)

(

if(p->num=a)

(

printf(*\n\t\t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论