收藏 分销(赏)

会议签到系统课程设计模板.doc

上传人:天**** 文档编号:2687864 上传时间:2024-06-04 格式:DOC 页数:36 大小:96.04KB
下载 相关 举报
会议签到系统课程设计模板.doc_第1页
第1页 / 共36页
会议签到系统课程设计模板.doc_第2页
第2页 / 共36页
会议签到系统课程设计模板.doc_第3页
第3页 / 共36页
会议签到系统课程设计模板.doc_第4页
第4页 / 共36页
会议签到系统课程设计模板.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、会议签到系统课程设计./沈 阳 航 空 工 业 学 院 课程设计学 号 04021035班 级 6402101 姓 名 赵晨指导老师 王晓岩 9 月 20 日沈阳航空工业学院课程设计任务书院系:电子 专业:电子信息工程 班级:6402101学号: 04021035 题目:会议签到系统一、课程设计时间 9月10日至 9月14日,累计1周,20课时。二、课程设计内容用C语言编写软件完成以下任务:(1)数据信息(参与会议人员代号,姓名,性别,工作单位,职务,联络方法,是否签到等)保留在meeting.dat文件中。(2)签到。(3)按工作单位将数据信息排序。(4)统计实际参与会议人数和缺席人数。三、

2、课程设计要求1. 程序质量: 落实结构化程序设计思想。 用户界面友好,功效明确,操作方便。 用户界面中菜单最少应包含”名单录入”、”人员签到”、”数据排序”、”统计参与和缺席人数”、”退出”5项,全部数据改变全部应该在相关文件中有所表现。 代码应合适缩进,并给出必需注释,以增强程序可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书格式和内容参见提供模板。四、指导老师和学生签字指导老师:_ 学生署名:_五、说明书成绩六、老师评语目录一、需求分析1二、程序步骤图2三、关键技术实现说明及对应程序段9四、个人总结15五、参考文件15六、源程序16一、需求分析经过对程序

3、设计题目标分析可知,整个程序设计实现大致分为三个模块,其中每一个模块对应一个函数,她们功效分别是:录入参与会议人员信息数据函数(add),人员签到数据函数(signin),排序函数(compositor)。在这些函数当中,录入信息和排序函数实现严格根据题目标要求,而签到和统计参与人数和缺席人数全部放到了函数(signin)里。1、录入参与会议人员信息数据函数 关键实现程序最初运行时参与会议人员信息数据录入和其后运行中人员数据追加功效;2、人员签到数据函数 实现功效是根据参与会议人员代号对人员进行签到,并对签到人员进行标识,最终统计并输出参与人数和缺席人数。3、排序函数 实现功效是根据人员代号增

4、序显示。 除上面介绍功效之外,程序还含有退出功效,能够在程序运行完成后选择退出。每一个参与会议人员信息全部包含参与会议人员代号,姓名,性别,工作单位,职务,联络方法,是否签到,在程序当中,将人员信息类型定义为结构体类型,添加和追加人员信息直接写入D盘meeting.dat文件中,其它函数每次对人员统计访问,其数据起源全部是meeting.dat文件,这么做不仅能够确保人员数据一致性,而且能够对人员数据进行永久保留,确保每次运行程序全部能够采取原来数据。二、程序步骤图1、程序总体结构图2、具体功效框图(1)录入人员数据函数add开始定义文件指针定义头指针链表信息存入文件输入信息到链表结束图2 录

5、入人员数据函数(2)人员签到函数signin开始定义变量初值,文件指针,链表指针能否打开文件输出不能打开文件结束否feof(f1)是将文件中信息读入链表释放P指针否关闭f1文件 a=0输出:请职员输入序号签到,输入0时结束签到否是是输入%d是M是否为空否i+输出结束签到,人员出勤结果以下输出应到%d人,实到%d人,缺席%d人,j,i,j-i结束图3人员签到函数3)按代号排序函数compositor开始定义文件指针,链表指针能否打开文件 meeting1.dat!feof(f1)定义指针n输出:不能打开文件输出:不能打开文件将信息输入链表释放指针r=top结束结束能否打开文件 meeting2.

6、datP是否为零否能否能否是是否否r指针内容小于p内容且r!=p是r=r-nextr!=p否是q=p;p=p0否r=topq-next=r;r0-next=q是q-next=top;top=qp0=p;p=p-nextp=NULL;p=top,否P不为空是输出链表中信息关闭文件f1,f2结束图4按代号排序函数三、关键技术实现说明及对应程序段本程序关键由三个自定义函数和一个主函数组成,其中主函数以菜单形式调用其它函数来实现要求全部功效。在这些函数当中,录入数据函数、签到函数和排序函数是程序中较为关键部分,下面分别进行说明。1、录入数据函数录入数据分为两种情况,其一是在会议文件(meeting.d

7、at)不存在情况下,首先由程序创建一个新文件,并将录入人员信息写入该文件当中;其二是在会议文件(meeting.dat)已经存在情况下,此时文件要以读写方法或追加方法打开,这么才能够确保以前已经存在数据不丢失。具体程序段以下:void add() /*录入职员信息子函数*/FILE *f1;finger top=NULL,p=NULL,t=NULL;p=(finger)malloc(sizeof(message);top=p;while(1)printf(n请输入职员信息,输入0时结束录入);scanf(%d%s%s%s%s%d,&p-number,p-name,p-sex,p-workpla

8、ce,p-job,&p-tel);/*分部分输入*/ p-flag=0;if(p-number=0)free(p);t-next=NULL;break;t=p;p=(finger)malloc(sizeof(message);t-next=p; p=NULL; if(f1=fopen(D:meeting.dat,w)=NULL) /*把链表中信息存入文件*/ printf(不能创建文件!); exit(0); p=top; while(p!=NULL) fprintf(f1,%d %s %s %s %s %dn,p-number,p-name,p-sex,p-workplace,p-job,p

9、-tel); p=p-next; 2、人员签到函数该函数关键内容是人员签到和统计参与人数和缺席人数。该函数实施时,首先把meeting.dat文件中信息读入链表,并由用户输入人员代号,以后按0结束签到。假如文件中存在该人员数据,则进行标识,不然不标识。这时被标识为1,未被标识为0,最终统计出参与人数和缺席人数,具体程序段以下:void signin() /*签到,标识*/int a=1,i=0,j=0;FILE *f1;finger m=NULL,p=NULL,t=NULL,top=NULL;if(f1=fopen(D:meeting.dat,r)=NULL) /*把文件中信息读入链表*/pr

10、intf(不能打开文件meeting.dat!);exit(0);p=(finger)malloc(sizeof(message);top=p;while(!feof(f1)fscanf(f1,%d%s%s%s%s%dn,&p-number,p-name,p-sex,p-workplace,p-job,&p-tel);p-flag=0;t=p;p=(finger)malloc(sizeof(message);t-next=p;free(p);t-next=NULL;fclose(f1);m=top;while(a!=0) /*签到*/printf(请职员输入序号签到,输入0时结束签到); sc

11、anf(%d,&a);while(m!=NULL)if(m-number=a)m-flag=1;i+;m=m-next;j+;printf(结束签到,人员出勤结果以下:n);printf(应到%d人,实到%d人,缺勤%d人n,j,i,j-i);3、按代号排序函数对于代号排序采取排序算法是链表插入法,首先读取文件meeting.dat信息,在创建meeting2.dat文件,方便保留排序后信息,该程序实现关键是把指针变量插入到各个结点,进行比较,最终实现按代号升序排列。具体程序段以下:void compositor() /*排序*/FILE *f1; FILE *f2;finger m=NULL

12、,n=NULL,t=NULL,top=NULL,p,p0,r,r0,q;if(f1=fopen(D:meeting.dat,r)=NULL) /*读取文件meeting.dat信息*/printf(不能打开文件meeting.dat!);exit(0); if(f2=fopen(D:meeting2.dat,w)=NULL) /*创建meeting2.dat文件*/printf(不能创建文件meeting2.dat!);exit(0);n=(finger)malloc(sizeof(message);top=n;while(!feof(f1) /*排序*/fscanf(f1,%d%s%s%s%

13、s%dn,&n-number,n-name,n-sex,n-workplace,n-job,&n-tel);n-flag=0;t=n;n=(finger)malloc(sizeof(message);t-next=n;free(n); /*/t-next=NULL;p0=NULL;p=top;while(p!=NULL)r=top;while(r-numbernumber)&(r!=p)r0=r;r=r-next;if(r!=p)q=p;p0-next=p-next;p=p0;if(r=top)q-next=top;top=q; elseq-next=r;r0-next=q;p0=p;p=p-

14、next;p=NULL; p=top; while(p!=NULL) /*将排序后信息写入文件meeting2.dat*/ fprintf(f2,%d %s %s %s %s %dn,p-number,p-name,p-sex,p-workplace,p-job,p-tel); printf(%d %s %s %s %s %dn,p-number,p-name,p-sex,p-workplace,p-job,p-tel); p=p-next;fclose(f1); fclose(f2);四、个人总结一周课程设计使我更一深层次地学习了C语言,了解了C语言,曾经书本没有认真地阅读,现在经过这门课程

15、,使我不仅认真地看,反复地看,而且还仔细地研究了一翻,补上了以前学习漏洞,刚开始时认为这门课程极难,可是经过了一翻研究和和老师和其它同学沟通,部分问题还是处理了,但能够说这门课程还是有难度,所以以后还要加强对这方面知识学习,掌握好这门课程对我以后专业也有很大好处。程序大致上完成了课程要求,但还是有些毛病不能处理,主函数不是总是循环结构,假如改成这种结构,签到和排序全部出问题,可能问题出现在我程序各个部分全部是我在书上找,然后拼接在一起,各个部分连贯性不好,造成改后犯错。五、参考文件1 谭浩强C程序设计北京:清华大学出版社, 2 刘成等C语言程序设计试验指导和习题集北京:中国铁道出版社, 六、源

16、程序#include #include #include #include #include typedef struct message /*定义数据结构*/long int number;char name10;char sex3;char workplace20;char job5;long int tel;int flag;struct message *next;*finger; /*指向结构体指针*/void menu() /*屏幕输出菜单*/printf(*n);printf(*1.录入职员信息 *n);printf(*2.在此签到,并输出人员签到结果 *n);printf(*3

17、.排序 *n);printf(*4.退出 *n);printf(*n);void add() /*录入职员信息子函数*/FILE *f1;finger top=NULL,p=NULL,t=NULL;p=(finger)malloc(sizeof(message);top=p;while(1)printf(n请输入职员信息,输入0时结束录入);scanf(%d%s%s%s%s%d,&p-number,p-name,p-sex,p-workplace,p-job,&p-tel);/*分部分输入*/ p-flag=0;if(p-number=0)free(p);t-next=NULL;break;t

18、=p;p=(finger)malloc(sizeof(message);t-next=p; p=NULL; if(f1=fopen(D:meeting.dat,w)=NULL) /*把链表中信息存入文件*/ printf(不能创建文件!); exit(0); p=top; while(p!=NULL) fprintf(f1,%d %s %s %s %s %dn,p-number,p-name,p-sex,p-workplace,p-job,p-tel); p=p-next; void signin() /*签到,标识*/int a=1,i=0,j=0;FILE *f1;finger m=NUL

19、L,p=NULL,t=NULL,top=NULL;if(f1=fopen(D:meeting.dat,r)=NULL) /*把文件中信息读入链表*/printf(不能打开文件meeting.dat!);exit(0);p=(finger)malloc(sizeof(message);top=p;while(!feof(f1)fscanf(f1,%d%s%s%s%s%dn,&p-number,p-name,p-sex,p-workplace,p-job,&p-tel);p-flag=0;t=p;p=(finger)malloc(sizeof(message);t-next=p;free(p);t

20、-next=NULL;fclose(f1);m=top;while(a!=0) /*签到*/printf(请职员输入序号签到,输入0时结束签到); scanf(%d,&a);while(m!=NULL)if(m-number=a)m-flag=1;i+;m=m-next;j+;printf(结束签到,人员出勤结果以下:n);printf(应到%d人,实到%d人,缺勤%d人n,j,i,j-i);void compositor() /*排序*/FILE *f1; FILE *f2;finger m=NULL,n=NULL,t=NULL,top=NULL,p,p0,r,r0,q;if(f1=fope

21、n(D:meeting.dat,r)=NULL) /*读取文件meeting.dat信息*/printf(不能打开文件meeting.dat!);exit(0); if(f2=fopen(D:meeting2.dat,w)=NULL) /*创建meeting2.dat文件*/printf(不能创建文件meeting2.dat!);exit(0);n=(finger)malloc(sizeof(message);top=n;while(!feof(f1) /*排序*/fscanf(f1,%d%s%s%s%s%dn,&n-number,n-name,n-sex,n-workplace,n-job,

22、&n-tel);n-flag=0;t=n;n=(finger)malloc(sizeof(message);t-next=n;free(n); /*/t-next=NULL;p0=NULL;p=top;while(p!=NULL)r=top;while(r-numbernumber)&(r!=p)r0=r;r=r-next;if(r!=p)q=p;p0-next=p-next;p=p0;if(r=top)q-next=top;top=q; elseq-next=r;r0-next=q;p0=p;p=p-next;p=NULL; p=top; while(p!=NULL) /*将排序后信息写入文

23、件meeting2.dat*/ fprintf(f2,%d %s %s %s %s %dn,p-number,p-name,p-sex,p-workplace,p-job,p-tel); printf(%d %s %s %s %s %dn,p-number,p-name,p-sex,p-workplace,p-job,p-tel); p=p-next;fclose(f1); fclose(f2);void main() /*主函数*/int x= 0; while(x!=4)menu();printf(请选择要进行操作,用数字键选择:); scanf(%d,&x);switch(x)case 1:add(); break;case 2:signin();break;case 3:compositor();break; exit(0);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服