⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function1.c

📁 学生管理系统 在linux编译C语言写的
💻 C
📖 第 1 页 / 共 2 页
字号:
				GetStr(password,6,1);
				break;
			}
		else
			{
				Empty(2,21,70,21);
				printf("you input username is not exist!you must input again!");
				Empty(18,8,28,8);
				GetStr(username,10,0);
			}
   }while(1);
    for(i=2;i>=0;i--)
		{
			if(strcmp(password,"123456")==0)//判断密码是否正确,若超过三次则退出系统!
			{
				p=1;
				system("cls");
				break;
			}
			else
			{
				Empty(2,21,70,21);
    			if(i==0)
					{
						printf("you input password 3 chance, press any key to exit!");
					}
				else
					{
						printf("Password is error! You has %d chance!",i);
						Empty(18,10,28,10);
						GetStr(password,6,1);
					}
			}
		}
	if(i==-1)
		exit(0);
	return p;
}
//================================输出主菜单功能函数===================================//

void Main_Menu_Function()    
{
	char ch;
	int x,y;
    Main_Menu_Interface();
	GoToXY(59,16);
	WhereXY(&x, &y);
	ch=Personalized_Tips(x,y,7);//调用人性化提提示函数!
	switch(ch)//菜单选择!
	{
	case '1':
        Add_Function();
        break;
	case '2':
		Sort_Function();
		break;
	case '3':
		Print_Function(head,1,0,0);
		break;
	case '4':
		SaveFile();
		break;
	case '5':
        LoadFile();
		break;
	case '6':
		Search_Function();
		break;
	case '7':
		 Stasco_Function();
		break;
	case '0':
		Exit_Function();
		break;
	}
}
//================================增加功能函数===================================//

void Add_Function()
{
	do
	{
		char a[3],b[5];
		int i=0,j,lenght;
		LinkList *p;
		p=(LinkList *)malloc(sizeof(LinkList));
		p->next=NULL;
		system("cls");
		Add_Interface();

	    if(lenght>100)  //判断记录数是否大于等于100
			{
				Empty(2,21,60,21);
				GoToXY(2,21);
				printf("The information you enter is full,please enter any key to return!");            
				getch();
			}
	    else
			{
				i=AutomaticSno();//自动生成学号
				p->data.sno=i;
				GoToXY(19,6);
				printf("%03d",p->data.sno);//对学号的输出
			
          
				GoToXY(19,7);//输入输出姓名
				Name_Judge(p->data.name);	
				if(p->data.name[0]==27)
					{
						p->data.sno=0;
						return;
					}	
				Empty(19,7,40,7);
				puts(p->data.name);

				GoToXY(19,8);//输入输出年龄
				p->data.age=Age_Judge(a);
				if(p->data.age ==-1)
					{
						p->data.sno=0;
						return;
					}
				printf("%d",p->data.age);

				for(j=0;j<5;j++)//输入输出五科成绩
					{
						GoToXY(19,j+9);
						p->data.score[j]=Score_Judge(b,j+9);
						if(p->data.score[j]==-1)
						{
							p->data.sno =0;
							return;
						}
						printf("%.1f",p->data.score [j]);
					}

			   if(head==NULL)//把节点插入原链表!
					{
						head=p;
						last=p;
					}
				else
					{
						last->next=p;
						last=p;
					}
				lenght=GetLinkLen(head);
				isSave=0;
				Empty(2,21,70,21);
				GoToXY(2,20);
				printf("add success! do you want to contine[y/n]:");
				GoToXY(43,20);
				Exit_Judge();
				if(key=='Y'||key=='y')
					{
						system("cls");
						continue;
					}
				else if(key=='N'||key=='n')	
						break;
			
			 }
			
	}while(1);
	    
}
//================================排序功能函数===================================//
void Sort_Function()   
{
	    char ch;
		int x,y;
        int lenght;
		lenght=GetLinkLen(head);
		if(lenght==0)//无记录的提示!
		{
				Empty(2,20,70,21);
				printf("no data to sort! do you want to add data?[y/n]:");
				Exit_Judge();
				if(key=='Y'||key=='y')
					{
						system("cls");
						Add_Function();
						return;
					}
				else if(key=='N'||key=='n')	
						return;
		}
		else
		{
		system("cls");
		Sort_Interface();
		WhereXY(&x, &y);
	    ch=Personalized_Tips(x,y,4);
		switch(ch)
			{
			case '1':
				Select_Sort(1);                
				break;
			case '2':
				Select_Sort(2);
				break;
			case '3':
                Select_Sort(3);
				break;
			case '4':
                Select_Sort(4);
				break;
			case '0':
			return;


		}
		Empty(2,20,60,20);
		printf("Sort success! Do you want to contine[y/n]:");
        Exit_Judge();
		if(key=='Y'||key=='y')
			{
				system("cls");
				Print_Function(head,1,0,0);
			}
		else if(key=='N'||key=='n')
		{
			    system("cls");
			    Sort_Function();
			    return;
		}
	
	}
}
//================================退出功能函数===================================//
void Exit_Function() 
	{

		int x,y;
		char ch;
		system("cls");
		if(isSave==1)//已保存时的退出!
		{
			Exit_Interface();
			GoToXY(62,9);
		    WhereXY(&x,&y);
			ch=Personalized_Tips(x,y,1);
			switch(ch)
				{
					case '1':
						{
							Empty(2,21,60,21);
							printf("Are you sure to exit?[y/n]:");
							Exit_Judge();
							if(key=='Y'||key=='y')
								exit(0);
							else if(key=='N'||key=='n')	
								break;

						}
							case '0':
							return;
				}


		}
		else
		{
			Exit_Interface();//无保存时的退出!
			GoToXY(62,9);
		    WhereXY(&x,&y);
			ch=Personalized_Tips(x,y,2);
		
			switch(ch)
			{
			case '1':
				system("cls");
				SaveFile();
				break;
			case '2':
				{
						Empty(2,21,60,21);
						printf("Are you sure to exit?[y/n]:");
						Exit_Judge();
						if(key=='Y'||key=='y')
					
							exit(0);
						else if(key=='N'||key=='n')	
							break;
				}
			case '0':
				return;

			}



		}
		

	}
//================================打印功能函数===================================//
int Print_Function(LinkList *h,int plag,int wage,int stat_score) 
	{ 
		int i=0,lenght;
		int ch;
		int len=0,j=0;
		char m[3];
		double tatal,avg;
		double tatals=0, avgs[5];
		int page=1,lastpage;
		LinkList *p=h;
		lenght=GetLinkLen(h);
		if(stat_score==7)//打印各科的平均分!
			{
				Stasco_Interface(stat_score);
				for(i=0;i<5;i++)
				{
					for(p=h,tatal=0;p!=NULL;p=p->next)
					{
						tatal+=p->data.score[i];
					}
					avgs[i]=tatal/lenght;
				}
				GoToXY(5,7);
				printf("%22.1f %6.1f %6.1f %6.1f %6.1f",avgs[0],avgs[1],avgs[2],avgs[3],avgs[4]);
				return 0;
			}
		while(1)
		{
			if(stat_score>=1&&stat_score<=6)//打印每一门的前三名!
				{
					system("cls");
					Stasco_Interface(stat_score);
					len=Stat_Topthree(stat_score);
                    p=h;
					for(i=0;i<(page-1)*5&&i<len;i++)
							p=p->next;
					if(stat_score>=1&&stat_score<=5)
					{
			
						for(j=(page-1)*5;j<(page-1)*5+5&&j<len;j++)
						{
							GoToXY(5,j-(page-1)*5+7);
							printf("%21d%8s %18.1f",p->data .sno ,p->data .name,p->data .score[stat_score-1]);
							p=p->next;
						}

					}
					if(stat_score==6)
					{
						for(j=(page-1)*5;j<(page-1)*5+5&&j<len;j++)
						{
							GoToXY(5,j-(page-1)*5+7);
							tatals=p->data.score[0] +p->data.score[1] +p->data.score[2] +p->data.score[3] +p->data.score[4];
							printf("%21d%8s %18.1f",p->data .sno ,p->data .name,tatals);
							p=p->next;
						}
					}
						lastpage=len%5?len/5+1:len/5;
						GoToXY(67,18);
						printf("page: [%d/%d]",page,lastpage);
						GoToXY(2,20);
						printf("finded %d records",len);
				}
			else
		
					{ 
						LinkList *p=h;
	    				lenght=GetLinkLen(h);
						

						GoToXY(3,21);
						if(lenght==0)//无记录时的提示!
						{
							Empty(2,20,70,21);
							printf("no data to print! do you want to add data?[y/n]");
							Exit_Judge();
							if(key=='Y'||key=='y')
								{
									system("cls");
									Add_Function();
									return 0;
								}
							else if(key=='N'||key=='n')	
									return 0;
						
						}
						else
						{
							system("cls");
				    		Print_Interface();
							if(plag==2)
						{
							Print_Interface();
							GoToXY(2,18);
							printf(" delete;  [7]modify;");
						}
							for(i=0;i<(page-1)*PER_PAGE;i++)
							p=p->next;
							lastpage=lenght%PER_PAGE?lenght/PER_PAGE+1:lenght/PER_PAGE;
							GoToXY(67,18);
							printf("page: [%d/%d]",page,lastpage);
							GoToXY(2,20);
							printf("finded %d records",lenght);
							for(i=(page-1)*PER_PAGE;i<(page-1)*PER_PAGE+10&&i<lenght;i++)
							{
								tatal=p->data.score[0] +p->data.score[1] +p->data.score[2] +p->data.score[3] +p->data.score[4];
								avg=tatal/5;				  
								GoToXY(5,i-(page-1)*PER_PAGE+6);
								printf("%03d %-15s %4d %5.1f% 5.1f %5.1f %5.1f %6.1f %6.1f %5.1f\n",p->data.sno ,p->data.name ,p->data.age  , p->data.score [0]  ,p->data.score [1]  ,p->data.score [2] ,p->data.score [3]  ,p->data.score [4],tatal,avg);
								p=p->next;
							}
						}

					}
				 GoToXY(26,16);
				 if(plag==1||(stat_score>=1&&stat_score<=6))//普通查分页打印及统计打印!
				 {
					 ch=Personalized(26,16,1);
				 }
				 if(plag==2)//查询分页打印!
				 {
					 ch=Personalized(26,16,2);

				 }
				switch(ch)
				{
				case 271:
						page=1;
						break;
				case 281:
					if(page<lastpage)
						page++;
						break;
				case 273:
					if(page>1)
						page--;
					break;
				case 279:
					page=lastpage;
					break;
				case '5':
						do
						{
							Empty(20,20,50,20);
							printf("please input the page [1-%d]:",lastpage);
							ch=getch();
							if((ch-48)>0&&(ch-48)<=lastpage)
							{
								page=ch-48;
								break;
							}
							else
							{
								Empty(2,21,70,21);
								printf("input error! you input not the page [1-%d]!",lastpage);
							}
						}while(1);
   						break;
				case 283:
						{
							Empty(2,21,70,21);
							printf("Do you want to delete y/n:");
							Exit_Judge();
							if(wage==1)//删除查询到的学号!
							{

								if(key=='Y'||key=='y')
									{
										 h=DeleteOneStudent(h);
										 Empty(3,6,75,6);
										 Empty(2,21,60,21);
										 printf("delete success! please input any key to return!!");
										 DeleteAll(h);
										 getch();
										 return 0;
		
									}
								else if(key=='N'||key=='n')
								{
									Empty(2,21,60,21);
									printf("please input any key to return!!");
									getch();
									return 0;
								}
							}
							if(wage==2)//删除查询姓名中的学号!
							{
								if(key=='Y'||key=='y')
									{
										LinkList *p=h;
										Empty(2,20,70,20);
						         		printf("please input a sno to delete:");
										Sno_Judge(m);
										while(p!=NULL)
										{
											if(atoi(m)==p->data.sno)
												break;
											p=p->next;
										}
										if(p!=NULL)
										{
											DeleteStudent(h,atoi(m));
											Empty(2,21,70,21);
											printf("success delete!! is or no continue[y/n]!!");
                                 			
										}
										else
										{
											Empty(2,21,70,21);
											printf("find not data!!,is or no continue[y/n]!!");
										}
										return 0;
		
									}
								else if(key=='N'||key=='n')
									return 0;
   							}
							break;
					}
				case '7':
					return  1;
				case '0':
					return -1;
				}
			}
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -