学生考勤系统C语言课程设计.doc
《学生考勤系统C语言课程设计.doc》由会员分享,可在线阅读,更多相关《学生考勤系统C语言课程设计.doc(25页珍藏版)》请在咨信网上搜索。
. . 《程序设计》 课程设计说明书 课程名称《程序设计》 设计题目C语言课程设计学生考勤系统 专业班级 学生XX 指导教师 起止日期2013年6月8日至2013年6月14日 XX林业职业技术学院自动化工系 目录 第1章 设计目的………………………. 第2章 总体设计………………………… 第3章 详细设计………………………… 第4章 调试与测试……………………… 第5章 总结与体会……………………… 附:源程序清单和执行结果…………………………….. 第1章设计目的 本次C语言课程设计是对本学期程序设计基础课程的实际应用,也算是对所学知识的一次检验,通过本次课程设计能达到的目的如下: 1.巩固和加深对C课程基本内容和理论知识的理解和掌握。 2.掌握C语言编译和程序调试的基本技能。 3.利用C语言进行基本的程序设计从而逐步了解文件的一些相关操作和掌握函数的使用技巧,包括函数类型的选择,含参数的传递方式。 4.掌握使用数组,指针,引用,文件等编译的方法,提高运用C语言解决实际问题的能力。 5.通过对学生考勤系统的设计、编写源代码,以及对C语言中各个语法和函数的使用,使得对比较复杂的结构体、、文件的操作更加熟悉。 6.通过课程设计,将本学期所学知识与实际应用联系和结合起来,培养自己的动手能力,以及加强各学科之间的联系,从而提高个人的团队意识,增强团队之间协调和配合 第2章总体设计 2.1学生考勤信息记录系统的要求 通过该系统实现对学生考勤信息进行创建、录入、修改、查询、保存等操作的管理。 实验考勤信息包括学生XX,学号,学科种类,各科的考勤信息。 主要功能: 1)、能够完成对考勤的录入和修改 2)、创建一个班级的信息 3)、设备的查询 4)、将考勤信息保存到文件中 2.2流程图 根据设计要求,画出如下流程图: 开 始 菜 单2 4. 修改 6.退出 5.查询2 3.创建 2.查询 1 1.录入 结 束 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(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 大学体育 大学口语 C语言 大学物理 马克思 大学英语 高等数学 输入学生本节课息 y/n ② 返回菜单2 n 退出 开始 void search_1(void); /*查询个人信息*/ 输入此人所在班级和学号a p->num==a 真假 输出此人的考勤信息 返回菜单2 开始 void search_2(void); /*查询班级信息*/ 输入要查询的班别 输出此班的考勤信息 返回菜单2 void modify(void); /*修改函数*/ 开始 输入你要修改的班级和座位号a p->num==a 真假 重新输入这位学生的考勤信息 返回菜单2 void save(struct Student *,char []);退出 关闭文件 开始 打开文件 数据写入文件 struct Student *load(char filename[]) 开始 关闭文件 读出数据 打开文件 退 出 3.2结构的应用 If…else结构和 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(p,LEN,1,fp); p=p->next; } fclose(fp); printf("\t\t\t创建成功,按任意键返回主菜单\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结构 while(p!=NULL) { if(p->num==a) { printf("\n\t\t请重新输入高等数学缺勤节数:"); scanf("%d",&p->math); printf("\n\t\t请重新输入大学英语缺勤节数:"); scanf("%d",&p->English); printf("\n\t\t请输入大学物理缺勤节数:"); scanf("%d",&p->physics); printf("\n\t\t请重新输入马克思主义基本原理与概论缺勤节数:"); scanf("%d",&p->Mks); printf("\n\t\t请重新输入C语言缺勤节数:"); scanf("%d",&p->C); printf("\n\t\t请重新输入英语口语缺勤节数:"); scanf("%d",&p->teal); printf("\n\t\t请重新输入体育缺勤节数目:"); scanf("%d",&p->PE); flag=1; save(head,cla); printf("\n\t\t修改成功!\n\t\t"); break; } p=p->next; } 第4章调试与测试 4.1调试 执行程序时,显示如下信息 选择不同的选项,执行相应的功能。 (选择3),创建一个班级的基本信息。 (选择1),录入本次课考勤情况。 选择要修改的科目的界面: 输入缺勤同学和缺勤节数: 结束输入则输入n后返回菜单2: (选择2),查询学生个人考勤信息。 (选择4),修改学生个人考勤信息。 (选择5),查看一个班级的考勤信息。 (选择6),退出学生考勤信息系统。 第5章总结与体会 三周的课程设计已经结束了。 回想学习C语言的过程中,既有快乐又有烦恼。 从领到书的那一刻,我就很郁闷,《C 语言程序设计》到底事学什么的,有什么用。刚开始上课时,还在迷茫这门课程是用来做什么的。不过,这些感受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过半个学期的学习,我掌握了基本知识。 下学期开始时,被通知要进行课程设计。当时有点懵,感觉学的东西很少,很零散,不知该怎么连到一起,就要课程设计,是不是太难为我们了。 第一天基本上都是在看书,把基本知识再熟悉一遍。到了下午的时候,看了很多练习题,从这些练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。 第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。但是,接下来,我们又不得不再次陷入困境。在整个程序的编写过程中,最难的就是修改和删除这两个模块,这也是我们要解决的重点问题。 开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。困难之时,我们组的其他人,帮助了我,完成了修改和删除,这让我认识到团队的力量。这样的话,整个程序基本上全部完成了,就剩下完善工作了。我们组写了两个程序,最后,两个程序相互组合,互补,大功告成 虽然设计时完成了,但是我觉得其中还是有一些不足之处: 1. 警告句。程序中缺少一些警告句,例如:“是否真的删除(y/n)?”。 2. 重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。 3. 选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。 整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。 短短的几周课程设计结束了,但是这段时间里,我又学到了更多C 知识,如:对象数组,string类,文件流,链表以及文件对链表的操作等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全,也看到了团队精神和互帮互助的重要性。这一点会让我终生受益。通过这次课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这几周过的挺充实! *附:源程序清单和执行结果 #include<stdio.h> #include<stdlib.h> #include <conio.h> #include<string.h> #define LEN sizeof(struct Student) struct Student { int num; char name[15]; char sex[4]; int math, English,physics,Mks,C,teal,PE; struct Student *next; }; int n; void main() { 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 modify(void); /*修改函数*/ void back(void); /*退出函数*/ void mune_1(); /*界面-1*/ void mune_2(); /*界面-2*/ mune_1(); mune_2(); printf("\n"); } void mune_1() { printf("\n\n\n\n\n\n"); printf("\t************************************************************"); 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"); getch(); system("cls"); } void mune_2() { int option,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、录入本次课考勤情况\t 2、查询学生考勤信息\t *\n"); printf("\t*\t\t\t\t\t\t\t *\n"); printf("\t* 3、创建学生信息\t\t 4、修改学生信息\t *\n"); printf("\t*\t\t\t\t\t\t\t *\n"); printf("\t* 5、查看班级考勤情况 \t 6、退出考勤系统\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~6):\n\t\t\t\t"); while(1) { scanf("%d",&option); switch(option) { case 1: {ch=getchar();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("\t\t\t输入错误,请重新输入!!!"); } printf("\n\t\t\t\t"); } 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 file\n"); 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; head=NULL; p1=NULL; if((fp=fopen(filename,"rb"))==NULL) { printf("can not open file\n"); 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',cla[10]; int sub,stu,num,flag=0; printf("请输入上课班级:"); scanf("%s",cla); strcat(cla,".dat"); p=head=load(cla); system("cls"); while(select=='y'||select=='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* 1、高等数学\t\t 2、大学英语\t\t *\n"); printf("\t*\t\t\t\t\t\t\t *\n"); printf("\t* 3、大学物理\t\t 4、马克思基本原理概论 *\n"); printf("\t*\t\t\t\t\t\t\t *\n"); printf("\t* 5、C程序设计基础 \t 6、教师口语\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(1) { if(sub>0&&sub<8) break; else printf("\t\t\t输入错误,请重新输入\n\t\t\t\t"); scanf("%d",&sub); } system("cls"); printf("请输入本次课缺席同学的座号:"); scanf("%d",&stu); printf("\n"); printf("请输入该同学的缺课节数:"); scanf("%d",&num); while(p!=NULL) { if(p->num==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("\n\n\t\t******输入成功******!!!\n"); printf("是否继续输入(y\\n):"); scanf("%c",&select); } save(head,cla); getch(); system("cls"); mune_2(); } void search_1(void) /*查询个人信息*/ { struct Student *head,*p; char select='y',cla[10]; 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("\n\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf(" 座号性别数学英语物理马克思 C语言教师口语体育\n"); 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=1; } p=p->next; } if(flag==0) printf("\t\t!!!没有这个学生信息,请核对后再输入!!!\n\n"); getch(); system("cls"); mune_2(); } void search_2(void) /*查询某班级信息*/ { char cla[10]; struct Student *head,*p; printf("请输入您要查询的班级名:"); gets(cla); system("cls"); printf("\n \t\t\t%s班的考勤情况\n\n",cla); strcat(cla,".dat"); p=head=load(cla); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf(" 座号性别数学英语物理马克思 C语言教师口语体育\n"); while(p!=NULL) { 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); p=p->next; } printf("\n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); getch(); system("cls"); mune_2(); } void modify(void) /*修改函数*/ { int a,flag=0; char cla[10]; struct Student *head,*p; printf("\n\t\t请输入要修改的班级:"); scanf("%s",cla); strcat(cla,".dat"); p=head=load(cla); printf("\n\t\t请输入要修改的学生的座号:"); scanf("%d",&a); while(p!=NULL) { if(p->num==a) { printf("\n\t\t请重新输入高等数学缺勤节数:"); scanf("%d",&p->math); printf("\n\t\t请重新输入大学英语缺勤节数:"); scanf("%d",&p->English); printf("\n\t\t请输入大学物理缺勤节数:"); scanf("%d",&p->physics); printf("\n\t\t请重新输入马克思主义基本原理与概论缺勤节数:"); scanf("%d",&p->Mks); printf("\n\t\t请重新输入C语言缺勤节数:"); scanf("%d",&p->C); printf("\n\t\t请重新输入英语口语缺勤节数:"); scanf("%d",&p->teal); printf("\n\t\t请重新输入体育缺勤节数目:"); scanf("%d",&p->PE); flag=1; save(head,cla); printf("\n\t\t修改成功!\n\t\t"); break; } p=p->next; } if(flag==0) { printf("\t\t!!!没有这个学生信息,请核对后再输入!!!\n\n"); } getch(); system("cls"); mune_2(); } void creat(void) /*创建函数*/ { FILE *fp; struct Student *head,*p,*p1,*p2; char filename[10]; n=0; p1=p2=(struct Student *)malloc(LEN); printf("请输入你要创建班级的名称(如果要创建的文件已存在,将覆盖原文件):"); gets(filename); strcat(filename,".dat"); if((fp=fopen(filename,"wb"))==NULL) { printf("can not open file\n"); 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=(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(p,LEN,1,fp); p=p->next; } fclose(fp); printf("\t\t\t创建成功,按任意键返回主菜单\n"); getch(); system("cls"); mune_2(); } void back(void) /*退出函数*/ { printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t感谢您的使用~\n\t\t\t\t "); getch(); exit(0); } . .word..- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考勤 系统 语言 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文