研究生信息管理系统(C语言课设)

这是一个使用C语言编写的研究生信息管理系统,涵盖了链表数据结构和文件操作,适用于课程设计或项目实践。
摘要由CSDN通过智能技术生成

点击下载

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<conio.h>
#include<time.h>
#include <windows.h>
#pragma comment(lib, "Winmm.lib")
#define len sizeof(struct ADJ)
typedef struct ADJ
{
   
long xuehao,jxueji;
char name[20],daoshi[20]
	,zhuanye[30],xianjiufx[50],sushe[10];
char sex[10];
struct ADJ *next;
}stu;
stu head;//将头节点定义为全局变量
void displayMenu();//显示菜单
int menuchoose();//获取用户菜单选择
stu *getupaddr(long xuehao); //返回指定学号的上一个节点指针
stu * creat();//创建一个节点
int add(stu *p1);//将节点加入链表
void displayall();//显示所有信息
int rencount();//统计总人数
void xiugai(stu *p);//修改信息
stu * xhaofind(long xh);//按学号进行查找,返回该学号上一个节点指针
int question(const char *pstr);//获取判断
void del(stu *p);//删除信息
void choose(int n);//功能选择
void delall();//删除所有研究生信息
int display(stu *p);//单个显示
void Load();//载入数据
void Save();//保存信息到文件
stu *namefind(char *mz);//按姓名查找,返回所查找姓名的上一个节点指针
void daos(char *dao);//按导师查找
void sefind(char *se);//按宿舍号查找
void xhaorank();//冒泡排序法
void namerank();//按姓名首字母排序
void daosrank();//按导师首字母排序
void zyrank();//按专业首字母排序
void yecount();//按专业统计人数
void dscount();//按导师统计奖学金
void yemoney();//按专业统计奖学金
void home();//欢迎界面
void login();//登陆验证
void music();//播放音乐
void offmusic();//关闭音乐
void tui();//退出音效
void hello();//问候音
void dqsj();//显示当前时间


int main()
{
   
	hello();
	home();
	login();
	choose(menuchoose());
return 0;
}




void choose(int n)//功能选择
{
    
int count=0,a;//a为选择变量
char mz[20],dao[20],se[10];
long b;
while(1)
	{
   
	switch(n)
	{
   
	case 1:Load();system("pause");choose(menuchoose());break;//载入信息
	case 2:displayall();rencount();//显示全部信息
		if(question("是否返回主菜单?")) choose(menuchoose());break;
	case 3:do//添加信息
		{
   
			add(creat());
		    count++;
		}while(question("是否继续输入?"));
		printf("一共添加了%d条信息!\n",count);
		if(question("是否返回主菜单?")) choose(menuchoose());break;
	case 4:printf("您的查找方式?\n1为学号查找,2为姓名查找,3为导师查找,4为宿舍号查找\n您的选择是:");//查找信息
		 fflush(stdin);//清空输入缓冲区
		scanf("%d",&a);
		while(a!=1&&a!=2&&a!=3&&a!=4)//防止输入错误
		{
   
			printf("您的输入有误,请重新输入:");
			scanf("%d",&a);
			 fflush(stdin);//清空输入缓冲区
		}
		if(a==1)//学号查找
		{
   
			printf("请输入您要查找的学号:");
			scanf("%ld",&b);
			if(display(xhaofind(b)))
				{
   
					printf("您想对该数据进行何种操作?\n");
					printf("1删除  2修改  3返回主菜单\n请做出您的选择:");
				}
			else
					{
   
						if(question("是否返回主菜单?")) choose(menuchoose());
						else choose(4);
					}
			 fflush(stdin);//清空输入缓冲区
			 scanf("%d",&a);
			 while(a!=1&&a!=2&&a!=3)//防止输入错误
			{
   
				printf("您的输入有误,请重新输入:");
				scanf("%d",&a);
				 fflush(stdin);//清空输入缓冲区
			}
			if(a==1)//删除该信息
			{
   
				del(xhaofind(b));
				if(question("是否返回主菜单?")) choose(menuchoose());
			}
			else if(a==2)//修改该信息
			{
   
				xiugai(xhaofind(b));
				if(question("是否返回主菜单?")) choose(menuchoose());
			}
			else//返回主菜单
				 choose(menuchoose());
			}
		else if(a==2)//姓名查找
		{
   
			printf("请输入您要查找的姓名:");
			scanf("%s",mz);
			if(display(namefind(mz)))//判断信息是否存在
				{
   
					printf("您想对该数据进行何种操作?\n");
					printf("1删除  2修改  3返回主菜单\n请做出您的选择:");
				}
			else
					{
   
						if(question("是否返回主菜单?")) choose(menuchoose());
						else choose(4);
					}
			 fflush(stdin);//清空输入缓冲区
			 scanf("%d",&a);
			 while(a!=1&&a!=2&&a!=3)//防止输入错误
			{
   
				printf("您的输入有误,请重新输入:");
				scanf("%d",&a);
				 fflush(stdin);//清空输入缓冲区
			}
			if(a==1)//删除
			{
   
				del(namefind(mz));
				if(question("是否返回主菜单?")) choose(menuchoose());
			}
			else if(a==2)//修改
			{
   
				xiugai(namefind(mz));
				if(question("是否返回主菜单?")) choose(menuchoose());
			}
			else//返回主菜单
				 choose(menuchoose());
			}
		else if(a==3)//按导师查找
			{
   
				printf("请输入您要查找的导师姓名:");
				scanf("%s",dao);
				daos(dao);if(question("是否返回主菜单?")) choose(menuchoose());
		    }
		else
		{
   
			printf("请输入您要查找的宿舍号:");
			scanf("%s",se);
			sefind(se);if(question("是否返回主菜单?")) choose(menuchoose());
		}
		break;
	case 5:printf("您的排序方式?\n1按学号排序,2按姓名排序,3按导师排序,4按专业排序\n您的选择是:");
		 fflush(stdin);//清空输入缓冲区
		scanf("%d",&a);
		while(a!=1&&a!=2&&a!=3&&a!=4)
		{
   
			printf("您的输入有误,请重新输入:");
			scanf("%d",&a);
			 fflush(stdin);//清空输入缓冲区
		}
		if(a==1)
			{
   
				xhaorank();choose(2);
			}
		else if(a==2)
			{
   
				namerank();choose(2);
			}
		else if(a==3)
			{
   
				daosrank();choose(2);
			}
		else
			zyrank();choose(2);
		break;
	case 6:printf("您的统计方式?\n1按专业统计人数,2按导师统计奖学金总金额,3按专业统计奖学金总金额\n您的选择是:");
		scanf("%d",&a);
		while(a!=1&&a!=2&&a!=3)//防止输入错误
		{
   
			printf("您的输入有误,请重新输入:");
			scanf("%d",&a);
			 fflush(stdin);//清空输入缓冲区
		}
		if(a==1)
		{
   
			yecount();if(question("是否返回主菜单?")) choose(menuchoose());
		}
		else if(a==2)
		{
   
			dscount();if(question("是否返回主菜单?")) choose(menuchoose());
		}
		else
			yemoney()
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值