C语言课设歌手管理系统(内附各个分函数源代码)

 国内外研究现状

      歌手管理系统生命周期:歌手管理信息系统的生命周期包括系统分析、系统设计、系统实施三个阶段。任何人工系统都会经历一个由发生、发展到消亡的过程,称为系统的生命周期。在结构化的系统开发方法中,歌手管理信息系统的开发应用,也符合系统生命周期的规律。随着企业和组织工作的需要,外部环境的变化,对信息的需求也相应地增加了,要求设计和建立更新的信息系统。当系统投入使用后,可以在很大程度上满足企业管理者对信息的需求。但是随着时间的延续,企业规模或信息应用范围的扩大或设备老化等原因,信息系统又逐渐不能满足需求了。这时对信息系统会提出更高的要求,周而复始,循环不息。歌手管理行业竞争格局:通过对歌手管理行业的市场竞争主体企业:包括企业的信息刊登、数据的存储、数据读取、使用的门槛较低,利用巧妙的方法使数据化结构对象的产品更好为我企业服务。其中数据的精确处理和自动化取向深得大众青睐。歌手管理的市场营销:包括营销理念、营销模式、营销策略、渠道结构、产品策略等。

研究内容及章节安排

1.研究输入功能与输出功能的联系。

2.研究系统中信息流全过程,包括系统规划、辨别各个字符串、存储信息、信息处理、传递和利用。

3.研究管理信息系统开发的过程,包括系统规划、系统分析、系统设计、系统实施等。

4.研究管理信息系统开发项目的组织和使用的基本条件。

章节先介绍主函数和结构体的定义,随后依次介绍输入选手数据、输出选手数据、成绩排序、数据查询、增加数据、删除信息、统计信息、写入数据文件以及保存和读取。

功能需求分析

本系统是用于开发一套专门用于歌手管理工作的数据库系统,经过仔细研究分析,我们决定将系统分为三大部分,分别为歌手数据信息管理,歌曲管理,后台操作管理三部分。为了便于使用者对歌曲情况的管理,其中主要侧重点在歌手人事档案管理方面。在歌手人事档案管理又分为歌手人事维护打印和查询打印两个分支。歌手成绩菜单具有查询打印功能。系统管理分为操作员管理,数据保存,数据读取等部分。

1. 歌手信息维护:管理歌手号、名字等,一些主要功能:数据录入、输出、修改、删除、查询、浏览、保存、打印等。

2. 歌手数据信息的查询:提供歌手号,作曲查询和名字查询。分别利用不同的命令代码方式实现查询打印功能,功能是便于用户的检索查询

3. 歌曲点歌次数查询的管理:提供歌手号,作曲,与歌手信息查询相似。

4、三大部分紧密结合联系,包括歌手数据管理表、歌曲数据管理表、歌手数据股保存与读取三个部分。

程序设计思路

利用结构体的方式主函数先定义每一个文件名以.h的形式保存,再定义主函数menu。在定义结构体定义好编号名字,歌曲名分数,平均分和总数,再定义一个以singer形式的数组。在编写完各个分函数的文件后,利用switch开关语句,将各个部分连接起来,各个分函数之间以break形式断开。在为了保证主菜单函数的进行时,也能够连接其他分函数的正常运行。其中用到system("cls")清屏功能保证运行界面的简洁和数据的观赏性。在对于评委10人分数数据的处理上巧妙的运用了数据重构的方法将10个数据重新排序放置数组中,只留下数组2和9,就去除了最大值和最小值。Switch开关语句是本系统中运用的最多的语句。不仅将各个分函数进行连接,在选择语句的时候也作出了巨大作用。

主函数

#include<stdio.h>//先到编译系统找
#include<stdlib.h>//system(),exit()
#include<string.h>
#include<windows.h>//time.h
#include"结构.h"//先到项目中,再到系统中
#include"输入.h"
#include"输出.h"
#include"保存.h"
#include"读取.h"
#include"查询.h"
#include"修改.h"
#include"删除.h"
#include"插入.h"
#include"排序.h"
#include"统计.h"
#include"菜单.h"
void main()
{

	menu();

}

结构体

struct singer/*定义结构体*/ 
{

 int num;
 char name[10];
 char gqm[20]; 
 float score[20];
 float aver;
 float sum;
};
struct singer singers[100]; 

输入

void input()
{
	int i,sel,r;
	int j,k;
	float m,t=0,n=0;
	int search_num;
	system("cls");
	for(i=0;i<=99;i++)
	{
		if(singers[i].num==0)
		{
			printf("-----------------------------------------------\n");
			printf("         即将开始输入某歌手的信息              \n");
			printf("         1. 确定输入   2. 放弃输入             \n");
			printf("-----------------------------------------------\n");
			printf("         输入你的选择:");
			scanf("%d",&sel);

			while(sel<=0 || sel>=3)
			{
				printf("            输入格式错误!!!\n");
		        printf("              重新输入你的选择(1-2):");
		        scanf("%d", &sel);
			}

			if(sel==1)
			{
				printf("输入选手编号:");
                scanf("%d", &search_num);
				for (r = 0;r<=99;r++)
				{
					if (search_num==singers[r].num)
					{
						printf("检测到存在该编号,请重新输入!\n");
						break;
					}

				}
				if(r==100)
				{
					singers[i].num=search_num;
				    getchar();     
				    printf("输入选手姓名:");
				    gets(singers[i].name);//回车
				    printf("输入歌曲名:");
				    gets(singers[i].gqm);
					printf("按顺序输入十位评委的打分(用-隔开):");
					scanf("%f-%f-%f-%f-%f-%f-%f-%f-%f-%f",&singers[i].score[1],&singers[i].score[2],&singers[i].score[3],&singers[i].score[4],&singers[i].score[5],&singers[i].score[6],&singers[i].score[7],&singers[i].score[8],&singers[i].score[9],&singers[i].score[10]);
					getchar();
                    for(j=1;j<10;j++) //对数据重构
					{
						for(k=j+1;k<11;k++)
						{
							if(singers[i].score[j]>singers[i].score[k])
							{
                               m=singers[i].score[j];
							   singers[i].score[j]=singers[i].score[k];
                               singers[i].score[k]=m;
							}
					


						}

					}
					for (j = 2; j < 10; j++) 
                    {
						n=n+singers[i].score[j];
						//printf("%d ", singers[i].score[j]);//调试用
					}
                    for (j = 2; j < 10; j++) 
                    {
						t=t+singers[i].score[j];
					}
                    singers[i].aver=t/8;
                    singers[i].sum=n;
			     	printf(" 输入成功!!!\n");
                    printf(" --------------------\n");
				}
								
			}
			else
				break;
		}
	}
}

输出

void output()
{
	int h,i;
	for(h=1;h<=110;h++)
		printf("-");
	printf("\n");
	                   
	printf("|");			
	printf("%-9s","歌手编号");//左对齐,右补空格;宽度9			
	printf("|");      
	printf("%-9s","歌手姓名"); 
	printf("|");		
	printf("%-20s","歌曲名");     
	printf("|");       
	printf("%-35s","八位评委成绩");    			
	printf("|");        
	printf("%-5s","总分");        
	printf("|");        
	printf("%-4s","平均分");	             
	printf("|");	        				
	printf("\n");
	for(h=1;h<=110;h++)
		printf("-");
	printf("\n");

	for(i=0;i<=99;i++)
	{
		if(singers[i].num != 0)
		{
			printf("|");						
			printf("%-9d",singers[i].num);			           
			printf("|");
			printf("%-9s",singers[i].name);
			printf("|");
			printf("%-20s",singers[i].gqm);
			printf("|");	        
			printf("%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f ",singers[i].score[2],singers[i].score[3],singers[i].score[4],singers[i].score[5],singers[i].score[6],singers[i].score[7],singers[i].score[8],singers[i].score[9]);	        
			printf("|");        
			printf(" %.1f ",singers[i].sum);	        
			printf("|");	        
	    	printf(" %.1f ",singers[i].aver);    
			printf("|");     
			printf("\n");
			for(h=1;h<=110;h++)
				printf("-");
			printf("\n");
		}
	}
	system("pause");
}

增加

void insert()
{
	int i,sel,r,search_num;
	int j,k;
	float m,t=0,n=0;
	system("cls");

	printf("-------------------------------------------------\n");
	printf("|                  欢迎进入插入功能             |\n");
	printf("|                 1. 开始插入                   |\n");
	printf("|                 2. 返回主菜单                 |\n");
	printf("-------------------------------------------------\n");

	printf("         输入你的选择:");
	scanf("%d",&sel);

	while(sel<=0 || sel>=3)//输入范围不正确时 执行
	{
		printf("            输入格式错误!!!\n");
		printf("              重新输入你的选择(1-2):");
		scanf("%d", &sel);
	}

	switch(sel)
	{
		case 1:	//插入位置应该是编号从上之下,第一个为0的地方。
				
				for(i=0;i<=99;i++)
				{
					if(singers[i].num==0)
					{
						//如果上述if为真,则i就是可以放入插入信息的地方

						printf("输入歌手编号:");
					    scanf("%d", &search_num);
			        	for (r = 0;r<=99;r++)
						{
							if (search_num==singers[r].num)
							{
								printf("检测到存在该编号,请重新输入!\n");
								break;
							}

						}
						if(r==100)
						{
							singers[i].num=search_num;
					        getchar();     
						    printf("输入选手姓名:");
							gets(singers[i].name);//回车
						    printf("输入歌曲名:");
						    gets(singers[i].gqm);
							printf("按顺序输入十位评委的打分(用-隔开):");
							scanf("%f-%f-%f-%f-%f-%f-%f-%f-%f-%f",&singers[i].score[1],&singers[i].score[2],&singers[i].score[3],&singers[i].score[4],&singers[i].score[5],&singers[i].score[6],&singers[i].score[7],&singers[i].score[8],&singers[i].score[9],&singers[i].score[10]);
							getchar();
					        for(j=1;j<10;j++)
							{
								for(k=j+1;k<11;k++)
								{
									if(singers[i].score[j]>singers[i].score[k])
									{
									      m=singers[i].score[j];
									      singers[i].score[j]=singers[i].score[k];
                                          singers[i].score[k]=m;
									}
									

								}

							}
							for (j = 2; j < 10; j++) 
							{
								n=n+singers[i].score[j];
								//printf("%d ", m[j]);//调试用
							}
							for (j = 2; j < 10; j++) 
							{
								t=t+singers[i].score[j];
							}
							singers[i].aver=t/8;
							singers[i].sum=n;
						}
	
						printf("********输入插入歌曲信息结束********\n");
						//当插入的信息输入结束后,该循环立即结束。
						system("pause");
						break;
					}
				}
				break;
		case 2:	printf("********放弃插入歌曲信息********\n");						
				system("pause");
				break;
	}

	system("pause");
}

删除

void del()
{
	int sel,sel1, i,j,h;
	int search_num;    //存放输入的查询
	system("cls");
	printf("-------------------------------------------------\n");
	printf("|                  欢迎进入删除功能             |\n");
	printf("|                 1. 按照歌手编号进行查询       |\n");
	printf("|                 2. 返回主菜单                 |\n");
	printf("-------------------------------------------------\n");
	printf("              输入你的选择(1-2):");
	scanf("%d", &sel);

	while (sel <= 0 || sel >= 3)
	{
		printf("            输入格式错误!!!\n");
		printf("              重新输入你的选择(1-2):");
		scanf("%d", &sel);
	}

	switch (sel)
	{
		case 1: //输入查询的编号
				printf("\t\t输入查询的歌手编号:");
				scanf("%d", &search_num);

				while (search_num <= 0 || search_num >= 100000000)
				{
					printf("\t\t输入格式错误!!!\n");
					printf("\t\t重新输入查询的歌手编号:");
					scanf("%d", &search_num);
				}
				//进行查询操作,应该是一个循环比较
				for (i = 0; i <= 99; i++)
				{
					if (search_num==singers[i].num)
					{
						//如果相等,说明查到,则输出
						//第1部分的输出是:输出那些中文
						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
	                    printf("|");
					    printf("%-9s","歌手编号");//左对齐,右补空格;宽度9
					    printf("|");
	                    printf("%-9s","歌手姓名");
                        printf("|");
                        printf("%-20s","歌曲名");
	                    printf("|");
                        printf("%-35s","八位评委成绩");
                        printf("|");
              	        printf("%-4s","总分");
                        printf("|");
                        printf("%-4s","平均分");
	                    printf("|");
	                    printf("\n");
						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
						//第2部分,输出查到的值
						printf("|");
						printf("%-9d",singers[i].num);
			            printf("|");
			            printf("%-9s",singers[i].name);
		            	printf("|");
		             	printf("%-20s",singers[i].gqm);
	            		printf("|");
	            		printf("%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f ",singers[i].score[2],singers[i].score[3],singers[i].score[4],singers[i].score[5],singers[i].score[6],singers[i].score[7],singers[i].score[8],singers[i].score[9]);
	            		printf("|");
	            		printf(" %.1f ",singers[i].sum);
	            		printf("|");
	            		printf(" %.1f ",singers[i].aver);
		            	printf("|");
	            		printf("\n");

						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
						
						

						printf("**********************************\n");
						printf("**********1. 确定删除*************\n");
						printf("**********2. 放弃删除*************\n");
						printf("**********************************\n");
						printf("          输入你的选择(1 or 2):");
						scanf("%d",&sel1);

						while(sel1<=0 || sel1>=3)
						{
							printf("          输入格式错误!!!\n");
							printf("          输入你的选择(1 or 2):");
							scanf("%d",&sel1);
						}

						if(sel1==1)
						{    //下标i,i+1----99
							for(j=i+1;j<=99;j++)
								singers[j-1]=singers[j];
							//

							printf("********删除成功********\n");
							system("pause");
						}
						else
							printf("********放弃删除********\n");

						break;
					}
				}

				//如果查询到就输出,否则输出以下
				//如果没有查到,则上述循环一定会全部做完。
				if(i==100)
					printf("\t\t未在数据库中找到该歌手!!!\n");
				system("pause");				
				//调用查询函数,继续查询
				del();
				break;
		
		case 2:break;
	}
	system("pause");
}

统计

void tongji()
{
	int j,sel,count;
	char search_gqm[9]; //存放输入的统计的类别
	system("cls");

	printf("-------------------------------------------------\n");
	printf("|                  欢迎进入统计功能             |\n");
	printf("|                 1. 统计参赛歌手人数           |\n");
	printf("|                 2. 按照歌曲名进行统计         |\n");
	printf("|                 3. 返回主菜单                 |\n");
	printf("-------------------------------------------------\n");
	printf("              输入你的选择(1-3):");
	scanf("%d", &sel);

	while (sel <= 0 || sel >= 4)
	{
		printf("            输入格式错误!!!\n");
		printf("              重新输入你的选择(1-3):");
		scanf("%d", &sel);
	}


	switch(sel)
	{
	case 1:
				   count=0;
				   for(j=0;j<=99;j++)//趟数
				   {

							
					   if(singers[j].num!=0)
						{
							//printf("%d",count);调试时使用		
						    count++;
							//printf("%d",count);

						}
					   //else
						   //printf("%d",singers[j].num);
					}
				    
                    printf("歌手总数:%d人",count);
					break;
	case 2:
			       getchar();
		           printf("              输入歌曲名:");
				   gets(search_gqm);
				   count=0;
				   for(j=0;j<=99;j++)//趟数
				   {

					   if(strcmp(search_gqm , singers[j].gqm)== 0)
						{
							//printf("%d",count);调试时使用	
						    count++;
							//printf("%d",count);

						}
					   //else
						   //printf("%s",singers[j].gqm);
					   

					}
				    
                    printf("演唱歌曲:%s的歌手有%d人",search_gqm,count);
					break;
	
	case 3:break;
	}
	printf("-------------------统计结束-------------------\n");
	system("pause");
}

查询

void search()
{
	int sel,i,h,flag;
	int search_num;    //存放输入的查询歌曲号
	char search_name[9]; //存放输入的查询演唱者
	system("cls");

	printf("--------------------------------------------------\n");
	printf("|                  欢迎进入查询功能              |\n");
	printf("|                 1. 按照歌手编号进行查询        |\n");
	printf("|                 2. 按照歌手姓名进行查询          |\n");
	printf("|                 3. 返回主菜单                  |\n");
	printf("--------------------------------------------------\n");
	printf("              输入你的选择(1-3):");
	scanf("%d", &sel);

	while (sel <= 0 || sel >= 4)//输入范围不正确时 执行
	{
		printf("            输入格式错误!!!\n");
		printf("              重新输入你的选择(1-3):");
		scanf("%d", &sel);
	}

	switch (sel)
	{
		case 1: //输入查询的歌手编号
				printf("\t\t输入查询的歌手编号:");
				scanf("%d", &search_num);

				while (search_num <= 0 || search_num >= 100000000)
				{
					printf("\t\t输入格式错误!!!\n");
					printf("\t\t重新输入查询的歌手编号:");
					scanf("%d", &search_num);
				}
				//进行查询操作,应该是一个循环比较
				for (i = 0; i <= 99; i++)
				{
					if (search_num==singers[i].num)
					{
						//如果相等,说明查到,则输出
						//第1部分的输出是:输出那些中文
						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
	                    printf("|");
					    printf("%-9s","歌手编号");//左对齐,右补空格;宽度9
					    printf("|");
	                    printf("%-9s","歌手姓名");
                        printf("|");
                        printf("%-20s","歌曲名");
	                    printf("|");
                        printf("%-35s","八位评委成绩");
                        printf("|");
              	        printf("%-4s","总分");
                        printf("|");
                        printf("%-4s","平均分");
	                    printf("|");
	                    printf("\n");
						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
						//第2部分,输出查到的值
						printf("|");
						printf("%-9d",singers[i].num);
			            printf("|");
			            printf("%-9s",singers[i].name);
		            	printf("|");
		             	printf("%-20s",singers[i].gqm);
	            		printf("|");
	            	    printf("%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f ",singers[i].score[2],singers[i].score[3],singers[i].score[4],singers[i].score[5],singers[i].score[6],singers[i].score[7],singers[i].score[8],singers[i].score[9]);	        
	            		printf("|");
	            		printf(" %-.1f ",singers[i].sum);
	            		printf("|");
	            		printf(" %-.1f ",singers[i].aver);
		            	printf("|");
	            		printf("\n");

						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
						
						system("pause");
						//因为编号是唯一的,所以如果查询到并输出,则循环提前结束
						break;
					}
				}

				//如果查询到就输出,否则输出以下内容
				//如果没有查到,则上述循环一定会全部做完。
				if(i==100)
					printf("\t\t未在数据库中找到该歌手!!!\n");
				getchar();				
				//调用查询函数,继续查询
				search();
				break;
		case 2:
				//输入查询歌手姓名
				//因为接下来输入的字符串,但是上面在选择2这个菜单的时候,有回车键
				getchar();
				printf("\t\t输入查询的歌手姓名:");
				gets(search_name);
				
				flag = 0; //0来表示没有查到
				//进行查询操作,应该是一个循环比较
				for (i = 0; i <= 99; i++)
				{
					if( strcmp(search_name , singers[i].name)== 0 )
					{
						//如果相等,说明查到,则输出
						//第1部分的输出是:输出那些中文
						flag = 1;

						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
	                    printf("|");
					    printf("%-9s","歌手编号");//左对齐,右补空格;宽度9
					    printf("|");
	                    printf("%-9s","歌手姓名");
                        printf("|");
                        printf("%-20s","歌曲名");
	                    printf("|");
                        printf("%-35s","八位评委成绩");
                        printf("|");
              	        printf("%-4s","总分");
                        printf("|");
                        printf("%-4s","平均分");
	                    printf("|");
	                    printf("\n");
						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
						//第2部分,输出查到的值
						printf("|");
						printf("%-9d",singers[i].num);
			            printf("|");
			            printf("%-9s",singers[i].name);
		            	printf("|");
		             	printf("%-20s",singers[i].gqm);
	            		printf("|");
	            		printf("%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f ",singers[i].score[2],singers[i].score[3],singers[i].score[4],singers[i].score[5],singers[i].score[6],singers[i].score[7],singers[i].score[8],singers[i].score[9]);	
	            		printf("|");
	            		printf(" %.1f ",singers[i].sum);
	            		printf("|");
	            		printf(" %.1f ",singers[i].aver);
		            	printf("|");
	            		printf("\n");

						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");						
					}
				}
				//如果没有查到,则上述循环一定会全部做完。
				if (flag == 0)
					printf("\t\t未在数据库中找到该歌手!!!\n");
				getchar();
				//调用查询函数,继续查询
				search(); 
				break;
		case 3:break;
	}
	system("pause");
}

修改

void modify()
{
	int sel,sel2,sel3,sel4,sel5, i, h;
	int search_num;    //存放输入的查询号
    int j,k;
	float m,t=0,n=0;
	//专门用来临时存放输入修改后的数据
	int num;
    char name[10];
    char gqm[20]; 
    float score[20];

	system("cls");

	printf("----------------------------------------------------\n");
	printf("|                  欢迎进入修改功能                |\n");
	printf("|                 1. 先按照歌手编号进行查询        |\n");
	printf("|                 2. 返回主菜单                    |\n");
	printf("----------------------------------------------------\n");
	printf("              输入你的选择(1-2):");
	scanf("%d", &sel);

	while (sel <= 0 || sel >= 3)
	{
		printf("            输入格式错误!!!\n");
		printf("              重新输入你的选择(1-2):");
		scanf("%d", &sel);
	}

	switch (sel)
	{
		case 1: //输入查询的号
				printf("\t\t输入查询的歌手编号:");
				scanf("%d", &search_num);

				while (search_num <= 0 || search_num >= 100000000)
				{
					printf("\t\t输入格式错误!!!\n");
					printf("\t\t重新输入查询的歌手编号:");
					scanf("%d", &search_num);
				}
				//进行查询操作,应该是一个循环比较
				for (i = 0; i <= 99; i++)
				{
					if (search_num==singers[i].num)
					{
						//如果相等,说明查到,则输出
						//第1部分的输出是:输出那些中文
						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
	                    printf("|");
					    printf("%-9s","歌手编号");//左对齐,右补空格;宽度9
					    printf("|");
	                    printf("%-9s","歌手姓名");
                        printf("|");
                        printf("%-20s","歌曲名");
	                    printf("|");
                        printf("%-35s","八位评委成绩");
                        printf("|");
              	        printf("%-4s","总分");
                        printf("|");
                        printf("%-4s","平均分");
	                    printf("|");
	                    printf("\n");
						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");
						//第2部分,输出查到的值
						printf("|");
						printf("%-9d",singers[i].num);
			            printf("|");
			            printf("%-9s",singers[i].name);
		            	printf("|");
		             	printf("%-5s",singers[i].gqm);
	            		printf("|");
	            		printf("%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f-%.1f ",singers[i].score[2],singers[i].score[3],singers[i].score[4],singers[i].score[5],singers[i].score[6],singers[i].score[7],singers[i].score[8],singers[i].score[9]);
	            		printf("|");
	            		printf(" %.1f ",singers[i].sum);
	            		printf("|");
	            		printf(" %.1f ",singers[i].aver);
		            	printf("|");
	            		printf("\n");

						for (h = 1; h <= 110; h++)
							printf("-");
						printf("\n");

						//因为歌曲号是唯一的,所以如果查询到并输出,则循环提前结束

						//选择是否是全部修改还是部分修改
						printf("\t\t*********************************\n");
						printf("\t\t*        1.  全部修改           *\n");
						printf("\t\t*        2.  部分修改           *\n");
						printf("\t\t*        3.  放弃修改           *\n");
						printf("\t\t*********************************\n");
						printf("              输入你的选择(1-3):");
						scanf("%d", &sel2);

						while (sel2 <= 0 || sel2 >= 4)
						{
							printf("            请您看仔细哦,输入错误!!!\n");
							printf("              重新输入你的选择(1-3):");
							scanf("%d", &sel2);
						}

						switch (sel2)
						{
							case 1:	printf("\t\t开始全部修改\n");
									printf("输入修改歌手编号:");
									scanf("%d", &num);
									getchar();
									printf("输入修改歌手名:");
									gets(name);
									printf("输入修改歌曲名:");
									gets(gqm);
									printf("按顺序输入十位评委的打分(用-隔开):");
									scanf("%f-%f-%f-%f-%f-%f-%f-%f-%f-%f",&score[1],&score[2],&score[3],&score[4],&score[5],&score[6],&score[7],&score[8],&score[9],&score[10]);
									getchar();
									t=0;
									n=0;
								   for(j=1;j<10;j++)
								   {
										for(k=j+1;k<11;k++)
										{
											if(score[j]>score[k])
											{
												 m=score[j];
							                     score[j]=score[k];
                                                 score[k]=m;
											}
											


										}

									}
									for (j = 2; j < 10; j++) 
									{
										n=n+score[j];
										//printf("%d ", m[j]);//调试用
									}
									for (j = 2; j < 10; j++) 
									{
										t=t+score[j];
									}
									
									

									printf("\t\t**************************************\n");
									printf("\t\t*       1 确定修改  2 放弃修改       *\n");
									printf("\t\t**************************************\n");
									printf("              输入你的选择(1-2):");
									scanf("%d", &sel3);

									while (sel3 <= 0 || sel3 >= 3)
									{
										printf("            输入格式错误!!!\n");
										printf("              重新输入你的选择(1-2):");
										scanf("%d", &sel3);
									}

									if (sel3 == 1) //确定修改
									{
										singers[i].num = num;
										strcpy(singers[i].name, name);
										strcpy(singers[i].gqm, gqm);
										for(j=1;j<11;j++)
										{
											singers[i].score[j]=score[j];

										}
										singers[i].aver=t/8;
									    singers[i].sum=n;
										printf("\t\t修改完毕!\n");
										getchar();
									}

									break;
							case 2:	printf("\t\t******************************\n");
									printf("\t\t*        1. 修改歌手编号     *\n");
									printf("\t\t*        2. 修改歌手名       *\n");
									printf("\t\t*        3. 修改歌曲名       *\n");
									printf("\t\t*        4. 修改得分         *\n");
									printf("\t\t******************************\n");
									printf("\t\t        输入你的选择(1-4):");
									scanf("%d", &sel4);
									while(sel4<=0 || sel4>=5)
									{
										printf("\t\t 输入错误,请重新输入(1-8):");
										scanf("%d", &sel4);										
									}

									if (sel4 == 1)
									{
										printf("输入修改歌手编号:");
										scanf("%d", &num);
										printf("\t\t**************************************\n");
										printf("\t\t*       1 确定修改  2 放弃修改       *\n");
										printf("\t\t**************************************\n");
										printf("              输入你的选择(1-2):");
										scanf("%d", &sel5);

										while (sel5 <= 0 || sel5 >= 3)
										{
											printf("            输入格式错误!!!\n");
											printf("              重新输入你的选择(1-2):");
											scanf("%d", &sel5);
										}

										if (sel5 == 1) //确定修改
										{
											singers[i].num = num;											
											printf("\t\t修改完毕!\n");
											getchar();
										}
									}
									if (sel4 == 2)
									{
										getchar();
										printf("输入修改歌手名:");
										gets(name);
										printf("\t\t**************************************\n");
										printf("\t\t*       1 确定修改  2 放弃修改       *\n");
										printf("\t\t**************************************\n");
										printf("              输入你的选择(1-2):");
										scanf("%d", &sel5);

										while (sel5 <= 0 || sel5 >= 3)
										{
											printf("            输入格式错误!!!\n");
											printf("              重新输入你的选择(1-2):");
											scanf("%d", &sel5);
										}

										if (sel5 == 1) //确定修改
										{
											strcpy(singers[i].name, name);											
											printf("\t\t修改完毕!\n");
											getchar();
										}
									}
									if (sel4 == 3)
									{
										getchar();
										printf("输入修改歌曲名:");
										gets(gqm);
										printf("\t\t**************************************\n");
										printf("\t\t*       1 确定修改  2 放弃修改       *\n");
										printf("\t\t**************************************\n");
										printf("              输入你的选择(1-2):");
										scanf("%d", &sel5);

										while (sel5 <= 0 || sel5 >= 3)
										{
											printf("            输入格式错误!!!\n");
											printf("              重新输入你的选择(1-2):");
											scanf("%d", &sel5);
										}

										if (sel5 == 1) //确定修改
										{
											strcpy(singers[i].gqm, gqm);											
											printf("\t\t修改完毕!\n");
											getchar();
										}
									}
									if (sel4 == 4)
									{
										printf("按顺序输入十位评委的打分(用-隔开):");
				                      	scanf("%f-%f-%f-%f-%f-%f-%f-%f-%f-%f",&score[1],&score[2],&score[3],&score[4],&score[5],&score[6],&score[7],&score[8],&score[9],&score[10]);
				                    	getchar();
										t=0;
										n=0;
										for(j=1;j<10;j++)
										{
											for(k=j+1;k<11;k++)
											{
												if(score[j]>score[k])
												{
													m=singers[i].score[j];
							                        score[j]=score[k];
                                                    score[k]=m;
												}
												


											}

										}
										for (j = 2; j < 10; j++) 
										{
											n=n+score[j];
											//printf("%d ", m[j]);//调试用
										}
										for (j = 2; j < 10; j++) 
										{
											t=t+score[j];
										}
										printf("\t\t**************************************\n");
										printf("\t\t*       1 确定修改  2 放弃修改       *\n");
										printf("\t\t**************************************\n");
										printf("              输入你的选择(1-2):");
										scanf("%d", &sel5);

										while (sel5 <= 0 || sel5 >= 3)
										{
											printf("            输入格式错误!!!\n");
											printf("              重新输入你的选择(1-2):");
											scanf("%d", &sel5);
										}

										if (sel5 == 1) //确定修改
										{
											
											for(j=1;j<11;j++)
											{
											        singers[i].score[j]=score[j];
											}
										    singers[i].aver=t/8;
									        singers[i].sum=n;;											
											printf("\t\t修改完毕!\n");
											getchar();
										}
									}

									break;
							case 3:break;
						}

						break;
					}
				}

				//如果查询到就输出,否则输出以下
				//如果没有查到,则上述循环一定会全部做完。
				if (i == 200)
					printf("\t\t未在数据库中找到该歌手!!!\n");
				getchar();
				//调用修改函数,继续修改
				modify();
				break;

		case 2:break;
	}
	system("pause");
}

保存

void save()
{
	int sel;
	system("cls");
	printf("     歌手比赛系统    \n");
    printf("*********************\n");
    printf("* 1)确认保存       *\n");
	printf("* 2)放弃保存       *\n");  
	printf("*********************\n");
	scanf("%d", &sel);
	while (sel <= 0 || sel >= 3)//输入范围不正确时 执行
	{
		printf("            输入格式错误!!!\n");
		printf("              重新输入你的选择(1-2):");
		scanf("%d", &sel);
	}
	if(sel==1)
	{
		FILE *fp;
		fp=fopen("singers'data.txt","w");
		if(fp == NULL)
		{
			printf("读取数据文件失败!\n");
			exit(0);
		}		
		fwrite(singers,sizeof(struct singer),100,fp);//批量写入数据;
		printf("-------保存数据成功-------!\n");
		fclose(fp);
		system("pause");
	}
	else
	{
		printf("-------你已经选择放弃保存数据-------!\n");
		system("pause");
	}
}

菜单

void menu()
{
	int sel;
	system("cls");//清屏
	printf("     歌手比赛系统    \n");
	printf("*********************\n");
    printf("* 1)输入选手数据   *\n"); 
	printf("* 2)输出选手数据   *\n"); 
    printf("* 3)成绩排序       *\n");
    printf("* 4)数据查询       *\n");
    printf("* 5)增加选手数据   *\n");
    printf("* 6)删除信息       *\n");
    printf("* 7)统计信息       *\n");
    printf("* 8)写入数据文件   *\n");      
    printf("* 9)读取数据文件   *\n");
	printf("* 10)修改数据      *\n");
    printf("* 11)退出系统      *\n");
    printf("*********************\n");
	scanf("%d", &sel);
	while (sel <= 0 || sel >= 12) //输入范围不正确时 执行
	{
		printf("            输入格式错误!!!\n");
		printf("              重新输入你的选择(1-11):");
		scanf("%d", &sel);
	}
	switch (sel)
	{
	   	case 1:input(); menu(); break;
		case 2:output(); menu(); break;
		case 3:sort(); menu(); break;
		case 4:search(); menu(); break;
		case 5:insert();menu(); break;
		case 6:del();menu(); break;
		case 7:tongji();menu(); break;
		case 8:save();menu(); break;
		case 9:load();menu(); break;
		case 10:modify();menu(); break;
		case 11:exit(0); break;
	}

	system("pause");
}


    

系统运行主菜单

 系统运行界面输出

系统运行界面排序 

 系统运行界面查询

 系统运行界面增加

 系统运行界面删除

 系统运行界面统计

 系统运行界面保存

系统运行界面读取 

系统运行界面修改 

系统运行界面退出 

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值