2022年C语言课设-唱歌比赛评分系统 .pdf
沈 阳 航 空 航 天 大 学课程设计学号 _班级 _ 姓名 _ 指导教师_ 年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 40 页 - - - - - - - - - 沈 阳 航 空 航 天 大 学课 程 设 计 任 务 书学院:专业:班级:学号:题目:唱歌比赛评委评分系统一、课程设计时间二、课程设计内容参加唱歌比赛3 位选手的名称和出场顺序存放在文件file22.txt 中;评委共有 7 个。每当一个选手表演之后,7 个评委都分别评分(010 分) ,而选手的最终得分计算规则为:去掉7 个评分的最高和最低分,取剩下5 个评分的平均值。程序最后打印出3 位选手的成绩。三、课程设计要求程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“读取并显示选手名单”、 “表演与评分” 、 “打印最后成绩” 、 “退出” 4 项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后, 上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师: _ 学生签名: _ 五、成绩六、教师评语名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸I 目 录一、需求分析 . 1二、设计分析 . 2三、主要界面截图 . 4四、技术要点 . 8五、个人总结 . 14六、参考文献 . 14七、源程序 . 15名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸1 一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。该系统是一个分数录入以及评定系统,其使用者被假定为某歌唱比赛的管理人员,系统应该具有安全、稳定、功能齐全的特点。1. 安全性分析系统管理的数据涉及到参赛的所有选手,为防止他人恶意修改,所以在进入评分系统前有密码程序,只有掌握了正确的密码才能进入程序进行各项操作。2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。3. 主要功能分析(1)密码程序:在程序尾端设置好密码,只有掌握密码的管理员才能进入程序进行成绩录入,修改等操作,避免信息被他人修改,造成比赛不公(2)菜单:有一个功能强大又清晰明了的菜单能极大程度方便管理员的操作(3)数据输入:在每个输入前都有详细分类和提示,简单明了,根据提示输入参赛选手号数,姓名,各个评委打分成绩(4)数据保存:对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。运用了指针函数后便可实现该功能。将输入的选手信息存储到自动生成的文件中,以便于程序自名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸2 动读取或人工阅读(5)成绩排名:利用冒泡程序对数组进行排序,删除一个最高与最低然后进行讲剩下的值平均,得出选手最终得分,再根据分数高低排名(6)数据查询:用户输入查询条件,系统规则地在界面显示查询结果,不光可以输入号数, 查询到该选手信息, 每位评委打分;还可以选择排名查询,显示的数据全面。二、设计分析主要有 9 个功能模块,每个模块对应一个C 语言自定义函数。这些函数原型及其功能简述如下:1、程序总体结构图(传统流程图或N-S 框图)结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸3 2、主要功能模块框图(传统流程图或N-S 框图)(1)密码程序 plus() 不正确正确(2)参赛选手信息录入creat()Printf 参赛选手号数Printf 姓名Printf7 位评委打分是否继续输入是否重新执行开头返回主菜单(3)浏览选手数据 browse() 输入密码终止程序密码正确与否开始进入程序界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸4 (4)查询选手成绩 search() (5)删除函数 del() (6)查询选手信息 print() (7)菜单函数 menu() (8)修改函数 update() (9)指针函数 rank() (10)保存函数 save() 三、主要界面截图图 1 进入程序输入密码界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸5 图 2 程序主界面图 3 选手信息录入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸6 图 4 选手信息浏览图 5 单个选手成绩查询名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸7 图 6 选手排名查询图 7 选手信息修改名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸8 图 8 选手信息删除图 9 程序退出四、技术要点名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸9 1、冒泡程序应用运用冒泡程序对各个参赛选手排序,并去除头与尾即最高分和最低分,将剩下的评委得分运算得出选手最终平均分,然后再排序,便能得出选手名次。for(i=0;iN-1;i+) /冒泡排序法让那个成绩从小到大排列,然后选出最大值是最后一个,最小值是第一个for(j=0;jgradesjp1-gradesj+1) t=p1-gradesj; p1-gradesj=p1-gradesj+1; p1-gradesj+1=t; p1-ave=(p1-ave-(p1-grades0+p1-grades9)/8;/ 去掉一个最高分,去掉一个这一低分,得出最后的平均分2、文件操作包括了文件的写入和读取两个方面。运用指针程序文件的写入操作,用于保存录入的数据,也用于保存所修改的数据。例如下段程序。void save()/将数据保存到文件 FILE *fp; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸10 S_MESSAGE *p1;/=(S_MESSAGE *)malloc(LEN); p1=head; fp=fopen(参赛选手名单 .txt,w); fprintf(fp,-|-n); fprintf(fp, 编号 | 姓名n); while(p1 != NULL) fprintf(fp,-|-n); fprintf(fp, %-9d%-6sn,p1-num,p1-name); p1=p1-next; fprintf(fp,-|-n); fclose(fp); printf(nt 文件已将保存到 参赛选手名单 .txt); 3、关于删除算法实现从系统中删除某位同学的相关信息的算法稍微复杂一些,其实质是对数组某个或某些元素的删除操作。对数组元素的删除操作完成后,再将数组写入到文件中,就完整地实现了“删除”。void del() S_MESSAGE *node;/=(S_MESSAGE *)malloc(LEN); S_MESSAGE *p1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸11 int check=0; /用来进行判断,是否找到了要删除的信息long del_num; printf(n 请输入要删除的选手的编号:); scanf(%d,&del_num); if(head = NULL & tail =NULL) printf(n 当前信息记录为空,删除失败!n); else node=head; p1=head; while(node != NULL) if(node-num = del_num) printf(n- 要删除的选手信息-n); printf(-|-n); printf( 编号| 姓名n); printf(-|-n); printf( %-9d%-6sn,node-num,node-name); /在这里找到了要删除的选手信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸12 printf(-|-n); check=1; /找到要删除的信息,赋为真if(node = head & head-next = NULL) /是头结点,并且只有一个结点 head=NULL; tail=head; free(node); printf(n- 删除信息成功-n); / 删除唯一的节点 else if(node = head & head-next != NULL) /删除头节点 node=head; head=head-next; free(node); printf(n- 删除信息成功-n); / 头节点删除成功n=n-1; else if(node -next != NULL) /删除中间节点 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸13 p1-next=node-next; free(node); printf(n- 删除信息成功-n); / 中间节点删除成功n=n-1; else if(node-next = NULL) /删除尾节点 p1-next=NULL; tail=p1; free(node); printf(n- 删除信息成功-n); / 尾节点删除成功n=n-1; getchar(); return; else p1=node; node=node-next; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸14 if(head != NULL & check = 0) printf(n 对不起,你要删除的选手信息不存在!n); getchar(); 五、个人总结自从拿到题目到完成整个编程,从理论到实践, 在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体 通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师的辛勤指导下,终于游逆而解。对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!六、参考文献(参考的书籍或互联网资源)1 谭浩强 C 程序设计北京:清华大学出版社,2005 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸15 2 网络资源加密程序七、源程序/*密码:123456 只有密码输入正确 ,才能进入 plus 程序.*/ #include #include #include #include #include #define LEN sizeof(S_MESSAGE) #define N 7 typedef struct songer /定义选手信息链表结构 long num; /选手编号char name20; /选手姓名float gradesN; /选手成绩double ave; /平均成绩struct songer * next; /链表的结点, next 是指针变量,指向结构体变量S_MESSAGE; S_MESSAGE * head; /定义链表的头指针名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸16 S_MESSAGE * tail; /定义链表的尾指针int n=0; / n 为全局变量,用于统计结点的个数void creat(); /建立单向动态链表。 此函数带回一个指向链表头的指针 ,用于参赛选手的录入void del(); /用于删除结点,用于参赛选手的删除void search(); /参赛选手成绩的查询void print(); /用于输出链表void rank(); /按个人平均成绩从高到低的顺序进行排序void update(); /参赛选手的修改void menu(); /操作系统菜单界面void menu_select(); /菜单选择界面void browse(); /选手信息浏览void save(); /选手信息保存void quit(); /退出系统界面/*- rank函数-*/ void rank() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸17 S_MESSAGE *p1,*p2,*endpt,*p; / *endpt/*控制循环比较 */ *p/* 临时指针变量 */ n=0; p1=head; if(head = NULL & tail = NULL) printf(n- 当前信息记录为空 -n); else p1 = (S_MESSAGE *)malloc(LEN); p1-next = head; /* 注意理解:我们增加一个节点,放在第一个节点的前面,主要是为了便于比较。因为第一个节点没有前驱,我们不能交换地址。*/ head = p1; /* 让 head指向 p1节点,排序完成后,我们再把p1节点释放掉 */ for(endpt=NULL; endpt!=head; endpt=p) /*结合第 6点理解 */ for(p=p1=head; p1-next-next!=endpt; p1=p1-next) if(p1-next-ave next-next-ave) /*如果前面的节点键值比后面节点的键值小,则交换*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸18 p2 = p1-next-next; /1、排序后q 节点指向 p 节点,在调整指向之前,我们要保存原p 的指向节点地址,即: p2=p1-next-next p1-next-next = p2-next; /2、顺着这一步一步往下推 ,排序后 p1-next-next 要指的是 p2-next,所以p1-next-next=p2-next p2-next = p1-next; /3、p2-next 原是 q 发出来的指向,排序后q的指向要变为指向p 的,而原来 p1-next是指向 p 的,所以 p2-next=p1-next p1-next = p2; /4、p1-next 原是指向 p 的,排序后图 16 中 p1-next要指向 q,原来p1-next-next(即 p2)是指向 q 的,所以 p1-next=p2 p = p1-next-next; /5、至此,完成了相邻两节点的顺序交换 p1 = head; /* 把 p1 的信息去掉 */ head = head-next; /*让 head指向排序后的第一个节点*/ free(p1); /*释放 p1*/ printf(n- 选手成绩排名信息如下 -n); printf(-|-|-|-n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸19 printf( 编号 | 姓名|平均成绩 | 名次n); p1=head; while(p1 != NULL) printf(-|-|-|-n); printf( %-9d%-9s%-9.1lf%-5dn,p1-num,p1-name,p1-ave,n+1); n+; p1=p1-next; printf(-|-|-|-n); getchar(); /*- print函数-*/ void print() S_MESSAGE * p1=(S_MESSAGE *)malloc(LEN); int check=0,i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸20 long seeknum; printf(n 请输入要查找的选手编号:); scanf(%d,&seeknum); if(head = NULL & tail = NULL ) printf(n 对不起,当前记录为空 !n); else p1=head; printf(n- 你要找的选手的成绩如下-n);/ 在这里找到了要查找的选手成绩printf(-|-|-|-|-|-|-|-|-|-|-|-n); printf( 编号 | 姓名 | 成绩| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 平均成绩 n); printf(-|-|-|-|-|-|-|-|-|-|-|-n); while(p1 != NULL) if(p1-num = seeknum) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸21 printf( %-7d%-6s,p1-num,p1-name); printf( ); for(i=0;igradesi); printf( %-6.2lfn,p1-ave); check=1; getchar(); return; else p1=p1-next; if(head != NULL & check = 0) printf(n 对不起,你查看的选手成绩不存在!n); getchar(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸22 /*- search函数-*/ void search() int c; printf(n 请选择查询内容: n); printf(1.选手详细成绩查询2.选手排名查询 n 请输入您的选择:); scanf(%d,&c); switch(c) case 1:system(cls);print();break; case 2:system(cls);rank();break; /*- save函数 -*/ void save()/将数据保存到文件 FILE *fp; S_MESSAGE *p1;/=(S_MESSAGE *)malloc(LEN); p1=head; fp=fopen(参赛选手名单 .txt,w); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸23 fprintf(fp,-|-n); fprintf(fp, 编号 | 姓名n); while(p1 != NULL) fprintf(fp,-|-n); fprintf(fp, %-9d%-6sn,p1-num,p1-name); p1=p1-next; fprintf(fp,-|-n); fclose(fp); printf(nt 文件已将保存到 参赛选手名单 .txt); /*- update函数 -*/ void update() S_MESSAGE *p1;/=(S_MESSAGE *)malloc(LEN); int check=0; /用来进行判断,是否找到了要修改的信息long updatenum; printf(n 请输入要修改的选手编号:); scanf(%d,&updatenum);/查找到要修改的选手if(head = NULL & tail = NULL) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸24 printf(n- 当前信息记录为空 -n); else p1=head; while(p1 != NULL) if(p1-num = updatenum) printf(n- 你要修改的选手信息如下 -n); printf(-|-n); printf( 编号 | 姓名n); printf(-|-n); printf( %-9d%-6sn,p1-num,p1-name); printf(-|-n); printf(n- 请重新写入此选手信息 :-n); check=1;/从新写入修改项目printf(n 修改选手编号为: ); scanf(%d,&p1-num); printf(n 修改选手姓名为: ); scanf(%s,p1-name); return; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸25 p1=p1-next; if(head != NULL & check = 0) printf(n 对不起,你要修改的选手信息不存在!n); getchar(); /*- browse函数 -*/ void browse() S_MESSAGE *p1; if(head = NULL & tail = NULL) printf(n- 当前信息记录为空 -n); else printf(n- 你要浏览的选手信息如下-n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸26 printf(-|-n); printf( 编号 | 姓名n); p1=head; while(p1 != NULL) printf(-|-n); printf( %-9d%-6sn,p1-num,p1-name); p1=p1-next; printf(-|-n); /*- del函数 -*/ void del() S_MESSAGE *node;/=(S_MESSAGE *)malloc(LEN); S_MESSAGE *p1; int check=0; /用来进行判断,是否找到了要删除的信息long del_num; printf(n 请输入要删除的选手的编号:); scanf(%d,&del_num); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 29 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸27 if(head = NULL & tail =NULL) printf(n 当前信息记录为空,删除失败!n); else node=head; p1=head; while(node != NULL) if(node-num = del_num) printf(n- 要删除的选手信息 -n); printf(-|-n); printf( 编号 | 姓名n); printf(-|-n); printf( %-9d%-6sn,node-num,node-name); /在这里找到了要删除的选手信息printf(-|-n); check=1; /找到要删除的信息,赋为真if(node = head & head-next = NULL) /是头结点,并且只有一个结点名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 30 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸28 head=NULL; tail=head; free(node); printf(n- 删除信息成功 -n); / 删除唯一的节点 else if(node = head & head-next != NULL) /删除头节点 node=head; head=head-next; free(node); printf(n- 删除信息成功 -n); / 头节点删除成功n=n-1; else if(node -next != NULL) /删除中间节点 p1-next=node-next; free(node); printf(n- 删除信息成功 -n); / 中间节点删除成功n=n-1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 31 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸29 else if(node-next = NULL) /删除尾节点 p1-next=NULL; tail=p1; free(node); printf(n- 删除信息成功 -n); / 尾节点删除成功n=n-1; getchar(); return; else p1=node; node=node-next; if(head != NULL & check = 0) printf(n 对不起,你要删除的选手信息不存在!n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 32 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸30 getchar(); /*- creat 函数 -*/ void creat() int i,j; float t; char c=y; while(c = y | c = Y) S_MESSAGE *p1=(S_MESSAGE *)malloc(LEN); printf(n 请输入要录入的选手信息:n); printf(n 选手编号: ); scanf(%d,&p1-num); printf(n 选手姓名: ); scanf(%s,p1-name); printf(n 请输入 7 位评委点评成绩: ); p1-ave = 0; for(i=0;igradesi); /runtime error p1-ave += p1-gradesi; for(i=0;iN-1;i+) /冒泡排序法让那个成绩从小到大排列,然后选出最大值是最后一个,最小值是第一个for(j=0;jgradesjp1-gradesj+1) t=p1-gradesj; p1-gradesj=p1-gradesj+1; p1-gradesj+1=t; p1-ave=(p1-ave-(p1-grades0+p1-grades9)/8;/去掉一个最高分,去掉一个这一低分,得出最后的平均分p1-next=NULL; if(p1=NULL) printf(n 内存分配失败 n); n=n-1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 34 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸32 if(head = NULL & tail = NULL) /当前没有结点,创建第一个结点 head=p1; head-next=NULL; tail=head; printf(n- 选手信息录入成功 -n); else /如果当前还有节点则插入到尾部 tail-next=p1; tail=p1; tail-next=NULL; printf(n- 选手信息录入成功 -n); printf( 是否继续 (Y/N):); getchar(); scanf(%c,&c); /*- quit函数 -*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 35 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸33 void quit() printf(nnt= 感谢您使用歌唱比赛评分系统=nn); /*- menu函数-*/ void menu() printf(nnt* 歌唱比赛评分系统 (制作人况思雨) *nn); printf( 1.选手信息浏览2.选手信息录入n); printf( 3.选手信息保存4.选手成绩查询n); printf( 5.选手信息修改6.选手信息删除n); printf( 7.退出系统n); printf(n * 系统菜单选择界面 *n); printf(t 请根据您想执行的命令,输入对应功能的数字键n); printf( 请输入您的选择: ); /*- menu_select 函数 -*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 36 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸34 void menu_select() char s100; int c; gets(s); /不管用户输入的是数字键或是字母键使用 gets都能将输入作为字符串接收while(1) /限定用户输入的数值必须在1-7之间才有效,否则要求重新输入 c = atoi(s); /利用 atoi()函数将所接收的字符串转换成数值,提供给if 语句判断if(c 7) printf( 您的输入有误,请重新输入:); gets(s); else break; switch(c) case 1: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 37 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸35 system(cls); /清屏browse(); break; case 2: system(cls); creat(); break; case 3: system(cls); save(); break; case 4: system(cls); search(); break; case 5: system(cls); update(); break; case 6: system(cls); del(); break; case 7: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 38 页,共 40 页 - - - - - - - - - 沈阳航空航天大学设计用纸36 system(cls); quit(); return; break; default: break; getchar(); system(cls); menu(); menu_select(); /*-ma