1、. .程序设计课程设计说明书课程名称程序设计设计题目C语言课程设计学生考勤系统专业班级学生XX指导教师起止日期2013年6月8日至2013年6月14日XX林业职业技术学院自动化工系目录第1章 设计目的.第2章 总体设计第3章 详细设计第4章 调试与测试第5章 总结与体会附:源程序清单和执行结果.第1章设计目的本次C语言课程设计是对本学期程序设计基础课程的实际应用,也算是对所学知识的一次检验,通过本次课程设计能达到的目的如下:1.巩固和加深对C课程基本内容和理论知识的理解和掌握。2.掌握C语言编译和程序调试的基本技能。3.利用C语言进行基本的程序设计从而逐步了解文件的一些相关操作和掌握函数的使用
2、技巧,包括函数类型的选择,含参数的传递方式。4.掌握使用数组,指针,引用,文件等编译的方法,提高运用C语言解决实际问题的能力。5.通过对学生考勤系统的设计、编写源代码,以及对C语言中各个语法和函数的使用,使得对比较复杂的结构体、文件的操作更加熟悉。6.通过课程设计,将本学期所学知识与实际应用联系和结合起来,培养自己的动手能力,以及加强各学科之间的联系,从而提高个人的团队意识,增强团队之间协调和配合第2章总体设计2.1学生考勤信息记录系统的要求通过该系统实现对学生考勤信息进行创建、录入、修改、查询、保存等操作的管理。实验考勤信息包括学生XX,学号,学科种类,各科的考勤信息。主要功能:1)、能够完
3、成对考勤的录入和修改2)、创建一个班级的信息3)、设备的查询4)、将考勤信息保存到文件中2.2流程图根据设计要求,画出如下流程图:开 始菜 单24修改6.退出5查询23创建2查询11录入结 束2.3设置的主要函数void creat(void);void save(struct Student *,char );struct Student *load(char );void enter(void); /*录入函数*/void search_1(void); /*查询函数_1*/void search_2(void); /*查询函数_2*/void add(void);void modify(
4、void); /*修改函数*/void back(void); /*退出函数*/void mune_1(); /*界面-1*/void mune_2(); /*界面-2*/mune_1();mune_2();第3章详细设计3.1函数以及调用关系void mune_1(); /*菜单函数1*/void mune_2() /*菜单函数2*/开始录入记录查询个人创建信息修改信息查询整班结束Menu_2退出系统 1 2 3 4 5 6 Break Break Break Break Break break void enter(void); /*录入函数*/开始输入班级和学生学号p-num=a大学体育
5、大学口语C语言大学物理马克思大学英语高等数学输入学生本节课息y/n返回菜单2 n 退出开始void search_1(void); /*查询个人信息*/输入此人所在班级和学号ap-num=a真假输出此人的考勤信息返回菜单2开始void search_2(void); /*查询班级信息*/输入要查询的班别输出此班的考勤信息返回菜单2void modify(void); /*修改函数*/开始输入你要修改的班级和座位号ap-num=a真假重新输入这位学生的考勤信息返回菜单2void save(struct Student *,char );退出关闭文件开始打开文件数据写入文件struct Stude
6、nt *load(char filename)开始关闭文件读出数据打开文件退 出3.2结构的应用Ifelse结构和 while 结构嵌套结构:while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struct Student *)malloc(LEN); scanf(%s%d%s,p1-name,&p1-num,p1-sex);p1-math=p1-English=p1-physics=p1-Mks=p1-C=p1-teal=p1-PE=0;p2-next=NULL;p=head;while(p!=NULL)fwrite(
7、p,LEN,1,fp);p=p-next;fclose(fp);printf(ttt创建成功,按任意键返回主菜单n);getch(); system(cls);mune_2();2 switch结构switch(sub) case 1: p-math+=num;break;case 2: p-English+=num;break;case 3: p-physics+=num;break;case 4: p-Mks+=num;break;case 5: p-C+=num;break;case 6: p-teal+=num;break;case 7: p-PE+=num;break;3while结
8、构while(p!=NULL) if(p-num=a)printf(ntt请重新输入高等数学缺勤节数:); scanf(%d,&p-math); printf(ntt请重新输入大学英语缺勤节数:); scanf(%d,&p-English); printf(ntt请输入大学物理缺勤节数:); scanf(%d,&p-physics); printf(ntt请重新输入马克思主义基本原理与概论缺勤节数:); scanf(%d,&p-Mks); printf(ntt请重新输入C语言缺勤节数:); scanf(%d,&p-C); printf(ntt请重新输入英语口语缺勤节数:); scanf(%d,
9、&p-teal); printf(ntt请重新输入体育缺勤节数目:); scanf(%d,&p-PE); flag=1;save(head,cla); printf(ntt修改成功!ntt);break;p=p-next;第4章调试与测试4.1调试执行程序时,显示如下信息选择不同的选项,执行相应的功能。(选择3),创建一个班级的基本信息。(选择1),录入本次课考勤情况。选择要修改的科目的界面:输入缺勤同学和缺勤节数:结束输入则输入n后返回菜单2:(选择2),查询学生个人考勤信息。(选择4),修改学生个人考勤信息。(选择5),查看一个班级的考勤信息。(选择6),退出学生考勤信息系统。第5章总结与
10、体会三周的课程设计已经结束了。回想学习C语言的过程中,既有快乐又有烦恼。从领到书的那一刻,我就很郁闷,C 语言程序设计到底事学什么的,有什么用。刚开始上课时,还在迷茫这门课程是用来做什么的。不过,这些感受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过半个学期的学习,我掌握了基本知识。下学期开始时,被通知要进行课程设计。当时有点懵,感觉学的东西很少,很零散,不知该怎么连到一起,就要课程设计,是不是太难为我们了。第一天基本上都是在
11、看书,把基本知识再熟悉一遍。到了下午的时候,看了很多练习题,从这些练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。但是,接下来,我们又不得不再次陷入困境。在整个程序的编写过程中,最难的就是修改和删除这两个模块,这也是我们要解决的重点问题。开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。困难之时,我们组的其他人,帮助了我,完成了修改和删除,这让我认识到团队的力量
12、。这样的话,整个程序基本上全部完成了,就剩下完善工作了。我们组写了两个程序,最后,两个程序相互组合,互补,大功告成虽然设计时完成了,但是我觉得其中还是有一些不足之处:1. 警告句。程序中缺少一些警告句,例如:“是否真的删除(y/n)?”。2. 重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。3. 选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。短短的几周课程设计结束了,但是这段时间里,我又学到了更多C 知识,如:对象数组,string类,文件流,链表以及文件对链表的操
13、作等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全,也看到了团队精神和互帮互助的重要性。这一点会让我终生受益。通过这次课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这几周过的挺充实!*附:源程序清单和执行结果#include#include#include #include#define LEN sizeof(struct Student)struct Studentint num;char name15;char sex4;int math, English,physics,Mks,C,teal,PE;struct Student *next;int n;void main()v
14、oid creat(void);void save(struct Student *,char );struct Student *load(char );void enter(void); /*录入函数*/void search_1(void); /*查询函数_1*/void search_2(void); /*查询函数_2*/void modify(void); /*修改函数*/void back(void); /*退出函数*/void mune_1(); /*界面-1*/void mune_2(); /*界面-2*/mune_1();mune_2();printf(n);void mun
15、e_1() printf(nnnnnn); printf(t*); printf(ttt * * ); printf(ttt* 欢迎使用班级考勤系统 *); printf(ttt * * ); printf(nt*nnn); printf(=); printf(nnnttttnttttt); getch(); system(cls);void mune_2()int option,ch; /*定义一个选项的数据类型*/ printf(nnn); /*制作的一个漂亮的选择界面*/printf(t*n);printf(t*ttttttt *n);printf(t*ttttttt *n);print
16、f(t* 1、录入本次课考勤情况t 2、查询学生考勤信息t *n);printf(t*ttttttt *n);printf(t* 3、创建学生信息tt 4、修改学生信息t *n);printf(t*ttttttt *n); printf(t* 5、查看班级考勤情况 t 6、退出考勤系统t *n);printf(t*ttttttt *n);printf(t*ttttttt *n);printf(t*n);printf(n);printf(ttt请输入您所需的操作(16):ntttt);while(1)scanf(%d,&option);switch(option)case 1: ch=getch
17、ar();system(cls);enter();break;case 2: ch=getchar();system(cls);search_1();break;case 3: ch=getchar();system(cls);creat();break;case 4: ch=getchar();system(cls);modify();break;case 5: ch=getchar();system(cls);search_2();break;case 6: ch=getchar();system(cls);back();break;default: printf(ttt输入错误,请重新输
18、入!);printf(ntttt);ch=getchar();void save(struct Student *head,char filename) FILE *fp;struct Student *p=head;if(fp=fopen(filename,wb)=NULL)printf(can not open filen);exit(0);while(p!=NULL)fwrite(p,LEN,1,fp);p=p-next;fclose(fp);struct Student *load(char filename)FILE *fp;struct Student *head,*p1,*p2;
19、head=NULL;p1=NULL;if(fp=fopen(filename,rb)=NULL)printf(can not open filen);exit(0);while(!feof(fp)p2=(struct Student *)malloc(LEN);if(fread(p2,LEN,1,fp)=1)if(head=NULL)head=p2;if(p1)p1-next=p2;p1=p2;p1-next=NULL;return (head);void enter() /*录入函数*/struct Student *head,*p;char select=y,cla10;int sub,s
20、tu,num,flag=0;printf(请输入上课班级:);scanf(%s,cla);strcat(cla,.dat);p=head=load(cla);system(cls);while(select=y|select=Y)printf(nnn); printf(t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf(t*ttttttt *n); printf(t*ttttttt *n); printf(t* 1、高等数学tt 2、大学英语tt *n); printf(t*ttttttt *n)
21、; printf(t* 3、大学物理tt 4、马克思基本原理概论 *n); printf(t*ttttttt *n); printf(t* 5、C程序设计基础 t 6、教师口语tt *n); printf(t*ttttttt *n); printf(t* 7、体育tttttt *n); printf(t*ttttttt *n); printf(t*ttttttt *n); printf(t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n); printf(n);printf(ttt请输入科目选项(17):ntttt
22、);scanf(%d,&sub);while(1)if(sub0&subnum=stu)switch(sub) case 1: p-math+=num;break;case 2: p-English+=num;break;case 3: p-physics+=num;break;case 4: p-Mks+=num;break;case 5: p-C+=num;break;case 6: p-teal+=num;break;case 7: p-PE+=num;break;p=p-next; printf(nntt*输入成功*!n);printf(是否继续输入(yn):);scanf(%c,&s
23、elect);save(head,cla);getch(); system(cls);mune_2();void search_1(void) /*查询个人信息*/struct Student *head,*p;char select=y,cla10;int num,flag=0;printf(请输入上课班级:);scanf(%s,cla);strcat(cla,.dat);p=head=load(cla);printf(请输入要查询同学的座号:);scanf(%d,&num);system(cls);while(p!=NULL)if(p-num=num)printf(nn);printf(*
24、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( 座号性别数学英语物理马克思 C语言教师口语体育n);printf( %3d %8s %4s%5d %5d %5d %5d %3d %7d %8dn,p-num,p-name,p-sex,p-math,p-English,p-physics,p-Mks,p-C,p-teal,p-PE);printf(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
25、 * * * * * * * * *n);flag=1;p=p-next;if(flag=0)printf(tt!没有这个学生信息,请核对后再输入!nn);getch(); system(cls);mune_2();void search_2(void) /*查询某班级信息*/char cla10;struct Student *head,*p;printf(请输入您要查询的班级名:);gets(cla);system(cls);printf(n ttt%s班的考勤情况nn,cla);strcat(cla,.dat);p=head=load(cla);printf(* * * * * * *
26、* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n);printf( 座号性别数学英语物理马克思 C语言教师口语体育n);while(p!=NULL)printf( %3d %8s %4s%5d %5d %5d %5d %3d %7d %8dn,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* * * * * * * * * * * * * * * * * * * * * * * * *
27、* * * * * * * * * * * * * * *n);getch(); system(cls);mune_2();void modify(void) /*修改函数*/ int a,flag=0;char cla10; struct Student *head,*p;printf(ntt请输入要修改的班级:);scanf(%s,cla);strcat(cla,.dat);p=head=load(cla); printf(ntt请输入要修改的学生的座号:); scanf(%d,&a);while(p!=NULL) if(p-num=a)printf(ntt请重新输入高等数学缺勤节数:);
28、 scanf(%d,&p-math); printf(ntt请重新输入大学英语缺勤节数:); scanf(%d,&p-English); printf(ntt请输入大学物理缺勤节数:); scanf(%d,&p-physics); printf(ntt请重新输入马克思主义基本原理与概论缺勤节数:); scanf(%d,&p-Mks); printf(ntt请重新输入C语言缺勤节数:); scanf(%d,&p-C); printf(ntt请重新输入英语口语缺勤节数:); scanf(%d,&p-teal); printf(ntt请重新输入体育缺勤节数目:); scanf(%d,&p-PE);
29、flag=1;save(head,cla); printf(ntt修改成功!ntt);break;p=p-next;if(flag=0) printf(tt!没有这个学生信息,请核对后再输入!nn); getch(); system(cls); mune_2(); void creat(void) /*创建函数*/FILE *fp; struct Student *head,*p,*p1,*p2;char filename10;n=0;p1=p2=(struct Student *)malloc(LEN);printf(请输入你要创建班级的名称(如果要创建的文件已存在,将覆盖原文件):);ge
30、ts(filename);strcat(filename,.dat);if(fp=fopen(filename,wb)=NULL)printf(can not open filen);exit(0);printf(请输入学生的基本信息:、座号、性别n);scanf(%s%d%s,p1-name,&p1-num,p1-sex);p1-math=p1-English=p1-physics=p1-Mks=p1-C=p1-teal=p1-PE=0;head=NULL;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struc
31、t Student *)malloc(LEN); scanf(%s%d%s,p1-name,&p1-num,p1-sex);p1-math=p1-English=p1-physics=p1-Mks=p1-C=p1-teal=p1-PE=0;p2-next=NULL;p=head;while(p!=NULL)fwrite(p,LEN,1,fp);p=p-next;fclose(fp);printf(ttt创建成功,按任意键返回主菜单n);getch(); system(cls);mune_2();void back(void) /*退出函数*/printf(nnnnnnnnnntttt感谢您的使用ntttt );getch();exit(0);. .word.