毕业生选题系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>

struct student
{
	char number[20];//学号
	char name[20];//姓名
	char select[20];//选题
	char tel[20];//电话
}p[100];
int NUM=0;


struct project
{
	char name[20];//题目
	char course[20];//内容
	char tea[10];//教师
}T[100];
int T_NUM=0;



void init()
{
	int i=0;
	printf(" 系统正在初始化,请稍后\n");
	printf("                 --------------");
	for(i=0;i<=100;i++)
	{
		Sleep(50);
		printf("\b\b\b\b%-3d%%",i);
	}


	printf("\n    初始化成功!\n");
	printf("欢迎使用毕业生选题系统\n");	
	system("pause");
	system("cls");
}


int stu_menu()
{
	int n;
	system("cls");
	printf("------------------------------\n");
	printf("1:新增学生信息\n");
	printf("2:显示学生信息\n");
	printf("3:删除学生信息\n");
	printf("4:查找学生信息\n");
	printf("5:修改学生信息\n");
	printf("0:返回\n");
	printf("------------------------------\n");
	printf("请输入编号进行操作!\n");
	scanf("%d",&n);
	while(n<0||n>5)
	{
		printf("输入范围错误,重新输入");
		scanf("%d",&n);
	}
	return n;
}

int tea_menu()
{
	int n;
	system("cls");
	printf("------------------------------\n");
	printf("1:新增毕设信息\n");
	printf("2:显示毕设信息\n");
	printf("3:删除毕设信息\n");
	printf("4:查找毕设信息\n");
	printf("5:修改毕设信息\n");
	printf("0:返回\n");
	printf("------------------------------\n");
	printf("请输入编号进行操作!\n");
	scanf("%d",&n);
	while(n<0||n>5)
	{
		printf("输入范围错误,重新输入");
		scanf("%d",&n);
	}
	return n;
}

/*新增*/
void add_new_stu()
{
	system("cls");
	printf("请输入新增学生学号\n");
	scanf("%s",&p[NUM].number);
	printf("请输入新增学生姓名\n");
	scanf("%s",&p[NUM].name);
	printf("请输入新增学生选题\n");
	scanf("%s",&p[NUM].select);
	printf("请输入新增学生电话\n");
	scanf("%s",&p[NUM].tel);
	NUM++;//学生人数+1
	printf("新增学生成绩成功!\n");
	system("pause");
}

void add_new_tea()
{
	system("cls");
	printf("请输入新增毕设名称\n");
	scanf("%s",&T[T_NUM].name);
	printf("请输入新增毕设内容\n");
	scanf("%s",&T[T_NUM].course);
	printf("请输入新增毕设指导教师\n");
	scanf("%s",&T[T_NUM].tea);
	T_NUM++;
	printf("新增毕设信息成功!\n");
	system("pause");
}

/*显示全部联系人*/
void show_stu()
{
	int i=0;
	system("cls");
	printf("学号      姓名      选题        电话\n");
	for(i=0;i<NUM;i++)
	{
		printf("%-10s%-10s%-12s%s\n",p[i].number,p[i].name,p[i].select,p[i].tel);
	}
	printf("\n");
	system("pause");
}

void show_tea()
{
	int i=0;
	system("cls");
	printf("名称      内容          指导教师\n");
	for(i=0;i<T_NUM;i++)
	{
		printf("%-10s%-14s%s\n",T[i].name,T[i].course,T[i].tea);
	}
	printf("\n");
	system("pause");
}

/*读取文件*/
void Open_Stu_File()
{
	int i=0;
	FILE *fp;
	if((fp=fopen("student.txt","rb"))==NULL)
	{
		;
	}
	else
	{
		while(fread(&p[i],sizeof(struct student),1,fp))
		{	
			i++;
			NUM++;
		}
		fclose(fp);
	}	
}
void Open_Tea_File()
{
	int i=0;
	FILE *fp;
	if((fp=fopen("project.txt","rb"))==NULL)
	{
		;
	}
	else
	{
		while(fread(&T[i],sizeof(struct project),1,fp))
		{	
			i++;
			T_NUM++;
		}
		fclose(fp);
	}	
}

/*保存文件*/
void Save_Stu_File()
{
	FILE *fp;
	int i;
	if((fp=fopen("student.txt","wb"))==NULL)
	{
		printf("文件打开失败!");
		system("pause");
		return;
	}
	for(i=0;i<NUM;i++)
	{
		fwrite(&p[i],sizeof(struct student),1,fp);
	}
	fclose(fp);
}
void Save_Tea_File()
{
	FILE *fp;
	int i;
	if((fp=fopen("project.txt","wb"))==NULL)
	{
		printf("文件打开失败!");
		system("pause");
		return;
	}
	for(i=0;i<T_NUM;i++)
	{
		fwrite(&T[i],sizeof(struct project),1,fp);
	}
	fclose(fp);
}

/*按名字删除*/
void del_stu_name()
{
	int i,j;
	char name[20];
	system("cls");
	printf("请输入要删除的学生姓名\n");
	scanf("%s",name);

	for(i=0;i<NUM;i++)
	{
		if(!strcmp(name,p[i].name))
		{
				for(j=i;j<NUM-1;j++)
				{
					p[j]=p[j+1];
				}
				break;
		}
	}
	if(i==NUM)
	{
		printf("无此学生信息!删除失败!\n");
		system("pause");
		system("cls");
	}
	else
	{
		NUM--;	
		printf("删除成功!\n");
		system("pause");
		system("cls");
	}
}

void del_tea_name()
{
	int i,j;
	char name[20];
	system("cls");
	printf("请输入要删除的毕设名称\n");
	scanf("%s",name);

	for(i=0;i<T_NUM;i++)
	{
		if(!strcmp(name,T[i].name))
		{
				for(j=i;j<T_NUM-1;j++)
				{
					T[j]=T[j+1];
				}
				break;
		}
	}
	if(i==T_NUM)
	{
		printf("无此毕设信息!删除失败!\n");
		system("pause");
		system("cls");
	}
	else
	{
		T_NUM--;	
		printf("删除成功!\n");
		system("pause");
		system("cls");
	}
}
/*按学号删除*/
void del_stu_num()
{
	int i,j;
	char temp[20];
	system("cls");
	printf("请输入要删除的学生学号\n");
	scanf("%s",temp);

	for(i=0;i<NUM;i++)
	{
		if(!strcmp(temp,p[i].number))
		{
				for(j=i;j<NUM-1;j++)
				{
					p[j]=p[j+1];
				}
				break;
		}
	}
	if(i==NUM)
	{
		printf("无此学生信息!删除失败!\n");
		system("pause");
		system("cls");
	}
	else
	{
		NUM--;	
		printf("删除成功!\n");
		system("pause");
		system("cls");
	}
}

void del_stu_menu()
{
	int n;
	do
	{
		system("cls");
		printf("1:按学号删除\n");
		printf("2:按姓名删除\n");
		printf("0:返回\n");
		scanf("%d",&n);
		switch(n)
		{
		case 1:
			del_stu_num();
			break;
		case 2:
			del_stu_name();
			break;
		}
	}while(n!=0);
}

/*按名字查找*/
void find_stu_name()
{
	int i;
	char n[20];
	system("cls");
	printf("请输入查找学生名字\n");
	scanf("%s",n);
	for(i=0;i<NUM;i++)
	{
		if(!strcmp(n,p[i].name))
		{
				printf("学号      姓名      选题        电话\n");
				printf("%-10s%-10s%-12s%s",p[i].number,p[i].name,p[i].select,p[i].tel);
				printf("\n");
				break;
		}
	}
	if(i==NUM)
		printf("无此学生信息!\n");
	system("pause");
}

void find_tea_name()
{
	int i;
	char n[20];
	system("cls");
	printf("请输入查找毕设名称\n");
	scanf("%s",n);
	for(i=0;i<T_NUM;i++)
	{
		if(!strcmp(n,T[i].name))
		{
				printf("名称      内容          指导教师\n");
				printf("%-10s%-14s%s",T[i].name,T[i].course,T[i].tea);
				printf("\n");
				break;
		}
	}
	if(i==T_NUM)
		printf("无此教师信息!\n");
	system("pause");
}

void find_stu_num()
{
	int i;
	char n[20];
	system("cls");
	printf("请输入查找学生学号\n");
	scanf("%s",n);
	for(i=0;i<NUM;i++)
	{
		if(!strcmp(n,p[i].name))
		{
				printf("学号      姓名      选题        电话\n");
				printf("%-10s%-10s%-12s%s",p[i].number,p[i].name,p[i].select,p[i].tel);
				printf("\n");
				break;
		}
	}
	if(i==NUM)
		printf("无此学生信息!\n");
	system("pause");
}


void find_stu_menu()
{
	int n;
	do
	{
		system("cls");
		printf("1:按学号查找\n");
		printf("2:按姓名查找\n");
		printf("0:返回\n");
		scanf("%d",&n);
		switch(n)
		{
		case 1:
			find_stu_num();
			break;
		case 2:
			find_stu_name();
			break;
		}
	}while(n!=0);
}


int case_menu()
{
	int n;
	system("cls");
	printf("1:学生信息管理\n");
	printf("2:毕设信息管理\n");
	printf("3:是否存在相同选择\n");
	printf("0:退出\n");
	printf("请输入编号进行操作!\n");
	scanf("%d",&n);
	while(n<0||n>3)
	{
		printf("输入范围错误,重新输入");
		scanf("%d",&n);
	}
	return n;
}

void modify_stu()
{
	int i;
	char n[20];
	system("cls");
	printf("请输入要修改学生学号\n");
	scanf("%s",n);
	for(i=0;i<NUM;i++)
	{
		if(!strcmp(n,p[i].name))
		{
				printf("学号      姓名      选题        电话\n");
				printf("%-10s%-10s%-12s%s",p[i].number,p[i].name,p[i].select,p[i].tel);
				printf("\n");
				break;
		}
	}
	if(i==NUM)
		printf("无此学生信息!\n");
	else
	{
		printf("请修改学生学号\n");
		scanf("%s",&p[i].number);
		printf("请修改学生姓名\n");
		scanf("%s",&p[i].name);
		printf("请修改学生选题\n");
		scanf("%s",&p[i].select);
		printf("请修改学生电话\n");
		scanf("%s",&p[i].tel);
		printf("修改成功!\n");
	}
	system("pause");
}

void modify_tea()
{
	int i;
	char n[20];
	system("cls");
	printf("请输入要修改的毕设名称\n");
	scanf("%s",n);
	for(i=0;i<T_NUM;i++)
	{
		if(!strcmp(n,T[i].name))
		{
			printf("名称      内容          指导教师\n");
			printf("%-10s%-14s%s",T[i].name,T[i].course,T[i].tea);
			printf("\n");
			break;
		}
	}
	if(i==T_NUM)
		printf("无此毕设信息!\n");
	else
	{
		printf("请修改毕设名称\n");
		scanf("%s",&T[i].name);
		printf("请修改毕设内容\n");
		scanf("%s",&T[i].course);
		printf("请修改毕设指导教师\n");
		scanf("%s",&T[i].tea);
		printf("修改成功!\n");
	}
	system("pause");
}


void serach()
{
	int i,j,k,n;
	char temp[50][20];
	system("cls");
	k=0;
	for(i=0;i<NUM;i++)
	{
		for(j=i+1;j<NUM;j++)
		{
			if(!strcmp(p[i].select,p[j].select))
			{
				strcpy(temp[k++],p[i].select);
				break;
			}
		}
	}

	for(i=0;i<k;i++)
	{
		for(j=i+1;j<k;j++)
		{
			if(!strcmp(temp[i],temp[j]))
			{
				for(n=j;n<k;n++)
				{
					strcpy(temp[n],temp[n+1]);
				}
				k--;
				break;
			}
		}
	}

	for(i=0;i<k;i++)
	{
		for(j=0;j<NUM;j++)
		{
			if(!strcmp(temp[i],p[j].select))
			{
				printf("毕设题目:%s\n",temp[i]);
				printf("学号:%s    ",p[j].number);
				printf("姓名:%s    ",p[j].name);
				printf("电话:%s\n",p[j].tel);
			}
		}
	}
	system("pause");
}

/*主函数*/
int main()
{
	int n,n1,n2;
	init();
	Open_Stu_File();
	Open_Tea_File();
	do
	{
		n=case_menu();
		switch(n)
		{
		case 1:
			do
			{
				n1=stu_menu();
				switch(n1)
				{
				case 1:
					add_new_stu();
					Save_Stu_File();
					break;
				case 2:
					show_stu();
					break;
				case 3:
					del_stu_menu();
					Save_Stu_File();
					break;
				case 4:
					find_stu_menu();
					break;
				case 5:
					modify_stu();
					Save_Stu_File();
					break;
				}
			}while(n1!=0);
			break;

		case 2:
			do
			{
				n2=tea_menu();
				switch(n2)
				{
				case 1:
					add_new_tea();
					Save_Tea_File();
					break;
				case 2:
					show_tea();
					break;
				case 3:
					del_tea_name();
					Save_Tea_File();
					break;
				case 4:
					find_tea_name();
					break;
				case 5:
					modify_tea();
					Save_Tea_File();
					break;
				}
			}while(n2!=0);
			break;

		case 3:
			serach();
			break;
		}
	}while(n!=0);
	return 0;
}

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值