C课程设计参会人员管理程序.docx
- 文档编号:30446343
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:21
- 大小:58.75KB
C课程设计参会人员管理程序.docx
《C课程设计参会人员管理程序.docx》由会员分享,可在线阅读,更多相关《C课程设计参会人员管理程序.docx(21页珍藏版)》请在冰豆网上搜索。
C课程设计参会人员管理程序
序号:
《C语言程序设计》
课程设计
题目参会人员管理程序
班级11级5班
专业电子科学与技术
姓名叶昌彬
学号3111008601
2013年11月
一课程设计的目的………………………………...….…..2
二课程设计任务与要求…………………………………..2
三主要设计指标及特点…………………………………..3
3.1人员登录……………………………………………..…3
3.2显示报道人员信息………………………………….…3
3.3查询……………………………………………………..4
3.4统计……………………………………………….…….4
3.5修改……………………………………………………..5
3.6删除………………………………………………..…....5
3.7退出…………………………………………….…….....6
四设计小结………………………………………………...6
五参考文献………………………………………………...6
六源程序…………………………………………….....…..7
一课程设计的目的
1、加深对《C语言程序设计》课程知识的理解,掌握C语言应用程序的开发方法和步骤;
2、进一步掌握和利用C语言程序设计能力;
3、进一步理解和运用结构化程序设计的思想和方法;
4、初步掌握开发一个小型实用系统的基本方法;
5、学会调试一个较长程序的基本方法;
6、学会利用流程图或N-S图表示算法;
7、掌握书写程序设计开发文档的能力(书写课程设计报告)。
二课程设计任务与要求
1设计内容
1.登录参会人员的下列信息:
·姓名、性别、年龄、单位
·房间号(设每个房间只住一人,房间号为101#—120#,···..,501#—520#)。
2、主菜单应至少包括以下几个菜单项:
人员登录、显示报道人员信息、查询、统计、修改、删除
3、程序应分别用几个函数实现以上功能:
·随时对报道人员进行登录(login),来客登记的房间是根据客人要求分配的;如果客人申请的房间已有人登记了,可以让客人重新申请;如果所有房间都已经住满,则拒绝再进行人员登录;
·随时按所住房间号(由小到大)输出(print)已报道人员信息;
·能够根据姓名实现对人员信息的查询;
·能够根据单位对与会人员进行分类统计,并输出统计结果;
·能够修改与会人员信息;
·能够删除某个参会人员,并清空其所住房间。
2流程图
1
三主要设计指标及特点
3.1人员登录
主程序通过Menu函数实现该程序的主界面,函数体包含相应的printf语句来实现相应的菜单输出。
voidmenu()
{
printf("\n");
printf("-----------参会人员管理程序---------\n");
printf("1.来宾登陆\n");
printf("2.报到人员\n");
printf("3.查询\n");
printf("4.统计\n");
printf("5.修改\n");
printf("6.删除\n");
printf("0.退出\n");
printf("------------------------------------\n");
}
3.2显示
对应的login界面,是通过调用login函数实现的。
根据提示输入登录的信息,就完成了参会人员的基本信息的录入。
/*录入登陆信息*/
strcpy(staff[length].room_num,room_num);
printf("输入您的名字:
");
scanf("%s",&staff[length].name);
printf("输入您的性别:
");
scanf("%s",&staff[length].sex);
printf("输入您的年龄:
");
scanf("%d",&staff[length].age);
printf("输入您的单位:
");
scanf("%s",&staff[length].department);
length++;/*参会人数加一*/
在对有人登录的房间排好序后,用printf语句输出信息,如下:
3.3查找
按照提示输入3,进入查找界面。
运用SearchByName功能,根据程序给出的提示程序用for循环对已经登录的人员信息进行对比,看是否相符。
for(i=0;i { if(strcmp(staff[i].name,name)==0)/*判断名字是否相同,相同则输出人员 信息*/ { printf("%s\t",staff[i].name); printf("%s\t",staff[i].sex); printf("%d\t",staff[i].age); printf("%s\t",staff[i].department); printf("%13s",staff[i].room_num); printf("\n"); counter++; } } 3.4统计 按照提示输入4,运行Statistics。 intflag=0;/*辅助标记*/ chardepartment[100][30];/*用于记录不同单位的名字*/ intcounter[100];/*分别记录相应不同单位的参会人数*/ if(length! =0) { k=0;/*单独处理数组第一个元素*/ strcpy(department[k],staff[0].department);/*记录单位*/ counter[k]=0;/*计数器清零*/ for(j=0;j if(strcmp(department[k],staff[j].department)==0) counter[k]++; for(i=1;i { for(index=0;index<=k;index++) { if(strcmp(department[index],staff[i].department)==0) flag++;/*当前此单位在前面已经统计过*/ } if(flag==0) { /*出现一个未统计过的单位*/ k++;/*用两数组的下一个元素分别存放单位和该单位参会人数*/ strcpy(department[k],staff[i].department);/*记录单位*/ counter[k]=0;/*计数器清零*/ for(j=0;j if(strcmp(department[k],staff[j].department)==0) counter[k]++; } flag=0;/*辅助标志清零*/ } 否则,输出"暂时没人登录 3.5修改 运行修改时,输入原先的房间号,根据提示再次输入要求进入的新的房间号,再次录入自己的个人信息。 系统会输出修改成功提示修改成功。 3.6删除 根据提示,选择6,运行delete。 输入要求删除的房间号。 系统输出删除成前,表示操作成功。 3.7退出 选择0,退出程序。 四设计小结 这次的课程设计是一个巨大的挑战,是我们从未涉猎过的将多个函数运用起来,使之成为系统的课程。 经过两个礼拜的努力,终于完成了这次的课程设计。 尽管结果并不是很令人满意,但是,不得不说,在这次的学习中,我学会了很多。 在一开始的茫然不知所措到现在的渐入佳境,我是付出了很大的努力的。 由于自身的素养,有很多的问题不能够解决。 但是,在查阅了不少的资料,借鉴了一些类似作品后,又在同学与老师的帮助下,搞清楚了解决问题的关键所在。 一步一步的解决了所有前行的问题。 在这次设计里,对C语言里面的很多的概念有了新的认识,关于指针、链表等,对于这些核心的知识有了进一步的了解。 而自己以前一直没有好好的重视这些。 忽略了很多有用的东西,惭愧不已。 在这次的学习中,我怕了解到了对于调用函数熟练掌握的重要性。 对于这些常用函数,我们有必要下狠功夫。 仔细想来,自己真的还有很多不足的地方。 虽然,最终结果是可喜的,我也不能忘记曾经历过的困难,我要时刻牢记时刻提醒自己提高自己的能力。 像是一个个函数组成一个系统,我们平时的学习也是一块块的累积在一起才能够发挥功效的。 我们要保持学科齐头并进,将各科组合起来,完美的完成工作。 在这个竞争日益激烈的社会,我们只有不断的提高自身素养,不断完善自己,才能在社会上有立足之地。 五参考文献 谭浩强。 C程序设计(第三版)。 北京: 清华大学出版社,2005 六源程序#include #include #include #defineMAXSIZE100/*定义最大参会人数*/ typedefstruct/*参会人员的数据结构*/ { charname[20];/*姓名*/ charsex[7];/*性别*/ intage;/*年龄*/ chardepartment[30];/*单位*/ charroom_num[10];/*房间号*/ }STAFF; voidmenu() { printf("\n"); printf("-----------参会人员管理程序---------\n"); printf("1.来宾登陆\n"); printf("2.报到人员\n"); printf("3.查询\n"); printf("4.统计\n"); printf("5.修改\n"); printf("6.删除\n"); printf("0.退出\n"); printf("------------------------------------\n"); } /**********************函数声明********************************/ intlogin(STAFFstaff[],intlength); voidprint(STAFFstaff[],intlength); voidseachByName(STAFFstaff[],intlength); voidstatistics(STAFFstaff[],intlength); voidedit(STAFFstaff[],intlength); intDelete(STAFFstaff[],intlength); /***********************函数定义*********************************/ intlogin(STAFFstaff[],intlength) { inti; if(length==100)/*房间已满,拒绝登陆*/ { printf("房间已满! \n禁止登陆! "); exit(-1); } else { charroom_num[10]; printf("输入房间号: "); scanf("%s",&room_num); for(i=0;i { if(strcmp(room_num,staff[i].room_num)==0) {/*申请的房间已经有人*/ printf("您选择的房间已经有客人住入\n"); printf("请选择另一个房间号: ");/*让参会人选择别的空房间*/ scanf("%s",&room_num); i=-1;/*为检验新的房间是否为空作准备*/ } } /*录入登陆信息*/ strcpy(staff[length].room_num,room_num); printf("输入您的名字: "); scanf("%s",&staff[length].name); printf("输入您的性别: "); scanf("%s",&staff[length].sex); printf("输入您的年龄: "); scanf("%d",&staff[length].age); printf("输入您的单位: "); scanf("%s",&staff[length].department); length++;/*参会人数加一*/ } returnlength; } /*******************************************************/ voidprint(STAFFstaff[],intlength) { STAFFtemp; inti,j; if(length! =0) { for(i=0;i for(j=i;j if(strcmp(staff[j].room_num,staff[j+1].room_num)>0) { temp=staff[j]; staff[j]=staff[j+1]; staff[j+1]=temp; } printf("客户登录信息: \n"); printf("姓名性别年龄单位房间\n"); for(i=0;i {/*输出报到人员的信息*/ printf("%s\t",staff[i].name); printf("%s\t",staff[i].sex); printf("%d\t",staff[i].age); printf("%s\t",staff[i].department); printf("%s",staff[i].room_num); printf("\n"); } } else printf("暂时无客户登录\n"); } /*****************************************************************/ voidseachByName(STAFFstaff[],intlength) { charname[20]; inti; intcounter=0; if(length! =0) { printf("输入您要搜索的客户名: "); scanf("%s",&name); printf("姓名性别年龄单位房间\n"); for(i=0;i { if(strcmp(staff[i].name,name)==0) { /*判断名字是否相同,相同则输出人员信息*/ printf("%s\t",staff[i].name); printf("%s\t",staff[i].sex); printf("%d\t",staff[i].age); printf("%s\t",staff[i].department); printf("%s",staff[i].room_num); printf("\n"); counter++; } } if(counter==0)/*查找的人还没登录*/ printf("\n%s还没登录\n",name); } else printf("暂时没人登录\n"); } /*************************************************************/ voidedit(STAFFstaff[],intlength) { charroom_num[10]; inti,k; if(length! =0) { printf("输入您要修改的房间号: "); scanf("%s",&room_num); for(i=0;i { if(strcmp(staff[i].room_num,room_num)==0) { printf("输入您的新房间号: "); scanf("%s",&room_num); for(k=0;k { if(k==i)continue;/*可以选择原来的房间*/ if(strcmp(room_num,staff[k].room_num)==0) {/*申请的房间已经有人*/ printf("您选择的房间已经有客人住入\n"); printf("请选择另一个房间号: "); scanf("%s",&room_num);/*提示选择别的空房间 */ k=-1;/*为检验新的房间是否为空作准备*/ } } /*修改人员信息*/ strcpy(staff[i].room_num,room_num); printf("输入您的名字: "); scanf("%s",&staff[i].name); printf("输入您的性别: "); scanf("%s",&staff[i].sex); printf("输入您年龄: "); scanf("%d",&staff[i].age); printf("输入您的单位: "); scanf("%s",&staff[i].department); printf("修改成功"); } } } else printf("暂明没人登录\n"); } /******************************************************/ intDelete(STAFFstaff[],intlength) { inti,k; intcounter=length; charroom_num[10]; if(length! =0) { printf("输出你要删除信息的房间号: "); scanf("%s",&room_num); for(i=0;i { if(strcmp(staff[i].room_num,room_num)==0) {/*删除人员*/ for(k=i;k staff[k]=staff[k+1];/*把该人员的信息覆盖掉*/ printf("删除成功"); length--;/*参会人数减一*/ } } if(counter==length)/*要删除的人员还没登陆*/ printf("要删除信息的房间号并未有人登录\n"); } else printf("暂时没人登录\n"); returnlength; } /**********************************************************/ voidstatistics(STAFFstaff[],intlength) { inti; intk,j; intindex; intflag=0;/*辅助标记*/ chardepartment[100][30];/*用于记录不同单位的名字*/ intcounter[100];/*分别记录相应不同单位的参会人数*/ if(length! =0) { k=0;/*单独处理数组第一个元素*/ strcpy(department[k],staff[0].department);/*记录单位*/ counter[k]=0;/*计数器清零*/ for(j=0;j if(strcmp(department[k],staff[j].department)==0) counter[k]++; for(i=1;i { for(index=0;index<=k;index++) { if(strcmp(department[index],staff[i].department)==0) flag++;/*当前此单位在前面已经统计过*/ } if(flag==0) { /*出现一个未统计过的单位*/ k++;/*用两数组的下一个元素分别存放单位和该单位参会人数*/ strcpy(department[k],staff[i].department);/*记录单位*/ counter[k]=0;/*计数器清零*/ for(j=0;j if(strcmp(department[k],staff[j].department)==0) counter[k]++; } flag=0;/*辅助标志清零*/ } printf("统计结果: \n"); printf("单位 数量\n"); for(i=0;i<=k;i++) { printf("%s%20d\n",department[i],counter[i]); } } else printf("暂时没人登录\n"); } /******************************************************/ intmain() { intlength=0;/*记录登陆人数*/ STAFFstaff[MAXSIZE];/*申请结构体数组*/ intchoice=-1; menu(); printf("输入您的选择(0-6): "); scanf("%d",&choice);/*由用户选择操作*/ while(choice>=0&&choice<=6) { switch(choice) { case1: length=login(staff,length);break; case2: print(staff,length);break; case3: seachByName(staff,length);break; case4: statistics(staff,length);break; case5: edit(staff,length);break; case6: length=Delete(staff,length);break; case0: printf("退出成功\n")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 人员 管理程序