#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();if(question("是否返回主菜单?")) choose(menuchoose());
break;
case 7:delall();if(question("是否返回主菜单?")) choose(menuchoose());break;
case 8:Save();if(question("是否返回主菜单?")) choose(menuchoose());break;
case 9:if(question("您确定要退出吗?退出前请检查数据是否已保存?"))
{system("cls");home();
printf(" 感谢您使用研究生信息管理系统,再见!\n");
printf(" Thank you for using the Graduate Information Management System. Good-bye.\n");
tui();
getch();exit(0);}choose(menuchoose());break;
case 10:if(question("您确定要播放背景音乐吗?"))
music();
choose(menuchoose());
case 11:if(question("您确定要关闭背景音乐吗?"))
offmusic();
choose(menuchoose());
default:break;
}
}
}
void displayMenu()//显示菜单
{
system("cls");
printf("----------------------------研究生信息管理系统--------------------------------\n");
printf("\n\t1.读取信息文件 2.显示所有信息 3.添加信息\n");
printf("\t4.查找研究生 5.排序 6.统计\n");
printf("\t7.删除所有信息 8.保存信息至文件 9.退出系统\n");
printf("\t10.播放背景音乐 11.关闭背景音乐\n");
printf("\n-------------------------------------------------------------------------------\n");
dqsj();
}
int menuchoose()//获取用户菜单选择
{
int menu;
displayMenu();
printf("请选择菜单,输入数字1-11:\n");
scanf("%d",&menu);
while(menu<1||menu>11)//判断输出是否正确
{
displayMenu();
printf("选择错误!请重新输入:\n");
fflush(stdin);//清空输入缓冲区
scanf("%d",&menu);
}
return(menu);
}
stu * creat()//创建一个节点
{
stu *p;
p=(stu *)malloc(len);
if(!p)
{
printf("申请空间失败!!!\n");
return NULL;
}
else
printf("请输入学号:");
while(1!=scanf("%ld",&p->xuehao)||getupaddr(p->xuehao))
{
printf("输入错误或该学号已存在,请重新输入:\n");
fflush(stdin);
}
printf("请输入姓名:");
scanf("%20s",p->name);
printf("请输入性别:");
scanf("%s",p->sex);
printf("请输入导师的姓名:");
scanf("%s",p->daoshi);
printf("请输入专业名称:");
scanf("%s",p->zhuanye);
printf("请输入研究方向:");
scanf("%s",p->xianjiufx);
printf("请输入奖学金数额(整型):");
scanf("%ld",&p->jxueji);
printf("请输入宿舍信息:");
scanf("%s",p->sushe);
p->next=NULL;
return(p);
}
stu *getupaddr(long xuehao) //返回指定学号的上一个节点指针
{
stu *p=&head;
while(p->next)
{
if(p->next->xuehao==xuehao)
return(p);
p=p->next;
}
return(NULL);
}
int add(stu *p1)//将节点加入链表
{
stu *pt=&head;
if(!p1)//判断是否为空节点
return 0;
if(getupaddr(p1->xuehao))//判断该研究生信息是否存在
{
printf("学号为%ld的研究生信息已存在!\n",p1->xuehao);
free(p1);//释放该节点的内存
return 0;
}
while(pt->next)//将指针移到最后一个节点
pt=pt->next;
pt->next=p1;
p1->next=NULL;
return 1;
}
void displayall()//显示所有信息
{
stu *p2=&head;
if(p2->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
while(p2->next)
{
printf("%-12d",p2->next->xuehao);
printf("%-8s",p2->next->name);
printf("%-5s",p2->next->sex);
printf("%-8s",p2->next->daoshi);
printf("%-20s",p2->next->zhuanye);
printf("%-24s",p2->next->xianjiufx);
printf("%-8d",p2->next->jxueji);
printf("%-10s\n",p2->next->sushe);
p2=p2->next;
}
printf("-------------------------------------------------------------------------------------------------\n");
}
else
printf("当前信息为空,请载入文件或输入信息!!!\n");
}
int rencount()//统计总人数
{
int count=0;
stu *p=&head;
while(p->next)
{
count++;
p=p->next;
}
printf("\n当前共有%d位研究生信息。\n",count);
return(count);
}
stu * xhaofind(long xh)//按学号进行查找,返回该学号上一个节点指针
{
stu *p=getupaddr(xh);//获取要查找学号的上一个节点
if(!p)
{
printf("没有学号为%ld的研究生\n",xh);
return(NULL);
}
else
return(p);
}
void xiugai(stu *p1)//修改信息
{
stu *temp;
if(question("您是否要重新输入该研究生信息?"))
{
temp=p1->next;
p1->next=temp->next;
free(temp);
add(creat());
printf("修改成功!\n");
}
else
printf("修改失败!!\n");
}
int question(const char *pstr)//获取判断
{
char answer;
printf("%s请选择(y or n):", pstr);
while(1 != scanf(" %c", &answer) || (answer != 'y' && answer != 'n'))
{
printf("输入错误!\n请重新选择(y or n):");
fflush(stdin);//清空输入缓冲区
}
if('y' == answer)
return 1;
else
return 0;
}
void del(stu *p)//删除信息
{
stu *temp;
if(!question("确定要删除该研究生信息吗?"))
printf("删除失败!!");
else
{
temp=p->next;
p->next=temp->next;
free(temp);
printf("删除成功!");
}
}
void delall()//删除所有研究生信息
{
stu *p=head.next,*temp;
int count=0;
if(!question("确定要删除当前所有研究生信息吗?"))
printf("删除失败!!\n");
else
{
while(p)
{
temp=p;
p=p->next;
free(temp);
++count;
}
head.next=NULL;
printf("共删除了%d位研究生信息!\n",count);
}
}
int display(stu *p)//单个显示
{
if(p)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
printf("%-12d",p->next->xuehao);
printf("%-8s",p->next->name);
printf("%-5s",p->next->sex);
printf("%-8s",p->next->daoshi);
printf("%-20s",p->next->zhuanye);
printf("%-24s",p->next->xianjiufx);
printf("%-8d",p->next->jxueji);
printf("%-10s\n",p->next->sushe);
printf("-------------------------------------------------------------------------------------------------\n");
return 1;
}
return 0;
}
stu *namefind(char *mz)//按姓名查找,返回所查找姓名的上一个节点指针
{
stu *p=&head;
while(p->next)
{
if(0==strcmp(p->next->name,mz))
return(p);
p=p->next;
}
printf("姓名为%s的研究生信息不存在!\n",mz);
return NULL;
}
void daos(char *dao)//按导师查找
{
stu *p2=&head;
int i=0;
if(p2->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
while(p2->next)
{
if(strcmp(p2->next->daoshi,dao)==0)
{
printf("%-12d",p2->next->xuehao);
printf("%-8s",p2->next->name);
printf("%-5s",p2->next->sex);
printf("%-8s",p2->next->daoshi);
printf("%-20s",p2->next->zhuanye);
printf("%-24s",p2->next->xianjiufx);
printf("%-8d",p2->next->jxueji);
printf("%-10s\n",p2->next->sushe);
i++;
}
p2=p2->next;
}
if(!i)
printf("没有该研究生信息\n");
else
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("专业为%s的研究生共有%d人\n",dao,i);
printf("\n");
printf("\n");
}
}
else
printf("当前信息为空,请载入文件或输入信息!!!\n");
}
void sefind(char *se)//按宿舍号查找
{
stu *p2=&head;
int i=0;
if(p2->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
while(p2->next)
{
if(strcmp(p2->next->sushe,se)==0)
{
printf("%-12d",p2->next->xuehao);
printf("%-8s",p2->next->name);
printf("%-5s",p2->next->sex);
printf("%-8s",p2->next->daoshi);
printf("%-20s",p2->next->zhuanye);
printf("%-24s",p2->next->xianjiufx);
printf("%-8d",p2->next->jxueji);
printf("%-10s\n",p2->next->sushe);
i++;
}
p2=p2->next;
}
if(!i)
printf("没有该研究生信息\n");
else
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("宿舍号为%s的研究生共有%d人\n",se,i);
printf("\n");
printf("\n");
}
}
else
printf("当前信息为空,请载入文件或输入信息!!!\n");
}
void Load()//载入数据
{
int i, count = 0, repeat = 0;
FILE *pf;
stu *pstu;
printf("提示:从文件中读取研究生信息会询问是否清空当前研究生信息(不清空表示合并所有信息)。\n");
if((pf = fopen("xsx.dat", "rb")) == NULL)
{
printf("当前信息为空,请载入文件或输入信息!!!\n");
if(question("是否返回主菜单?")) choose(menuchoose());
exit(0);
}
delall();//删除之前的所有学生信息,然后从文件中读取
fread(&count, 1, sizeof count, pf);//获取学生信息的数量
for(i = 0;i<count;i++)
{
pstu = (stu *)malloc(len);
fread(pstu, 1, sizeof(stu), pf);
if(!add(pstu))
{
++repeat;//保持有多少个和当前链表中相重复的学生信息
}
}
fclose(pf);
printf("文件读取完毕!新增研究生信息%d条。\n", count - repeat);
}
void Save()//保存信息到文件
{
FILE *pf=fopen("xsx.dat","wb");
stu *pstu = &head;
int i = 0, count = rencount();
if(!pf)
{
printf("打开待写入的文件失败!\n");
system("pause");
fclose(pf);
exit(0);
}
if(question("您确定要保存吗?"))
{
fwrite(&count, 1, sizeof(count), pf);//把学生信息的数量先写入到文件头
while(pstu->next)
{
fwrite(pstu->next, 1, sizeof(stu), pf);//把每位学生信息写入文件
++i;
pstu = pstu->next;
}
fclose(pf);
if(i == count)
{
printf("成功的写入了%d条学生信息。\n", count);
}
else
{
printf("应写入%d条学生信息,实际写入%d条学生信息。\n", count, i);
}
}
else
choose(menuchoose());
}
void xhaorank()//学号冒泡排序法
{
stu *cur,*tail;
cur=head.next;
tail=NULL;
if(cur==NULL||cur->next==NULL)
return;
while(cur!=tail)
{
while(cur->next!=tail)
{
if(cur->xuehao>cur->next->xuehao)
{
long temp=cur->xuehao,jxj;
char n[20],s[10],ds[20],yfx[50],shue[10],zy[30];
cur->xuehao=cur->next->xuehao;
cur->next->xuehao=temp;
strcpy(n,cur->name);
strcpy(cur->name,cur->next->name);
strcpy(cur->next->name,n);
strcpy(s,cur->sex);
strcpy(cur->sex,cur->next->sex);
strcpy(cur->next->sex,s);
strcpy(ds,cur->daoshi);
strcpy(cur->daoshi,cur->next->daoshi);
strcpy(cur->next->daoshi,ds);
strcpy(zy,cur->zhuanye);
strcpy(cur->zhuanye,cur->next->zhuanye);
strcpy(cur->next->zhuanye,zy);
strcpy(yfx,cur->xianjiufx);
strcpy(cur->xianjiufx,cur->next->xianjiufx);
strcpy(cur->next->xianjiufx,yfx);
jxj=cur->jxueji;
cur->jxueji=cur->next->jxueji;
cur->next->jxueji=jxj;
strcpy(shue,cur->sushe);
strcpy(cur->sushe,cur->next->sushe);
strcpy(cur->next->sushe,shue);
}
cur=cur->next;
}
tail=cur;
cur=head.next;
}
}
void namerank()//按姓名首字母排序
{
stu *cur,*tail;
cur=head.next;
tail=NULL;
if(cur==NULL||cur->next==NULL)
return;
while(cur!=tail)
{
while(cur->next!=tail)
{
if(strcmp(cur->name,cur->next->name)>0)
{
long temp=cur->xuehao,jxj;
char n[20],s[10],ds[20],yfx[50],shue[10],zy[30];
cur->xuehao=cur->next->xuehao;
cur->next->xuehao=temp;
strcpy(n,cur->name);
strcpy(cur->name,cur->next->name);
strcpy(cur->next->name,n);
strcpy(s,cur->sex);
strcpy(cur->sex,cur->next->sex);
strcpy(cur->next->sex,s);
strcpy(ds,cur->daoshi);
strcpy(cur->daoshi,cur->next->daoshi);
strcpy(cur->next->daoshi,ds);
strcpy(zy,cur->zhuanye);
strcpy(cur->zhuanye,cur->next->zhuanye);
strcpy(cur->next->zhuanye,zy);
strcpy(yfx,cur->xianjiufx);
strcpy(cur->xianjiufx,cur->next->xianjiufx);
strcpy(cur->next->xianjiufx,yfx);
jxj=cur->jxueji;
cur->jxueji=cur->next->jxueji;
cur->next->jxueji=jxj;
strcpy(shue,cur->sushe);
strcpy(cur->sushe,cur->next->sushe);
strcpy(cur->next->sushe,shue);
}
cur=cur->next;
}
tail=cur;
cur=head.next;
}
}
void daosrank()//按导师首字母排序
{
stu *cur,*tail;
cur=head.next;
tail=NULL;
if(cur==NULL||cur->next==NULL)
return;
while(cur!=tail)
{
while(cur->next!=tail)
{
if(strcmp(cur->daoshi,cur->next->daoshi)>0)
{
long temp=cur->xuehao,jxj;
char n[20],s[10],ds[20],yfx[50],shue[10],zy[30];
cur->xuehao=cur->next->xuehao;
cur->next->xuehao=temp;
strcpy(n,cur->name);
strcpy(cur->name,cur->next->name);
strcpy(cur->next->name,n);
strcpy(s,cur->sex);
strcpy(cur->sex,cur->next->sex);
strcpy(cur->next->sex,s);
strcpy(ds,cur->daoshi);
strcpy(cur->daoshi,cur->next->daoshi);
strcpy(cur->next->daoshi,ds);
strcpy(zy,cur->zhuanye);
strcpy(cur->zhuanye,cur->next->zhuanye);
strcpy(cur->next->zhuanye,zy);
strcpy(yfx,cur->xianjiufx);
strcpy(cur->xianjiufx,cur->next->xianjiufx);
strcpy(cur->next->xianjiufx,yfx);
jxj=cur->jxueji;
cur->jxueji=cur->next->jxueji;
cur->next->jxueji=jxj;
strcpy(shue,cur->sushe);
strcpy(cur->sushe,cur->next->sushe);
strcpy(cur->next->sushe,shue);
}
cur=cur->next;
}
tail=cur;
cur=head.next;
}
}
void zyrank()//按专业排序
{
stu *cur,*tail;
cur=head.next;
tail=NULL;
if(cur==NULL||cur->next==NULL)
return;
while(cur!=tail)
{
while(cur->next!=tail)
{
if(strcmp(cur->zhuanye,cur->next->zhuanye)>0)
{
long temp=cur->xuehao,jxj;
char n[20],s[10],ds[20],yfx[50],shue[10],zy[30];
cur->xuehao=cur->next->xuehao;
cur->next->xuehao=temp;
strcpy(n,cur->name);
strcpy(cur->name,cur->next->name);
strcpy(cur->next->name,n);
strcpy(s,cur->sex);
strcpy(cur->sex,cur->next->sex);
strcpy(cur->next->sex,s);
strcpy(ds,cur->daoshi);
strcpy(cur->daoshi,cur->next->daoshi);
strcpy(cur->next->daoshi,ds);
strcpy(zy,cur->zhuanye);
strcpy(cur->zhuanye,cur->next->zhuanye);
strcpy(cur->next->zhuanye,zy);
strcpy(yfx,cur->xianjiufx);
strcpy(cur->xianjiufx,cur->next->xianjiufx);
strcpy(cur->next->xianjiufx,yfx);
jxj=cur->jxueji;
cur->jxueji=cur->next->jxueji;
cur->next->jxueji=jxj;
strcpy(shue,cur->sushe);
strcpy(cur->sushe,cur->next->sushe);
strcpy(cur->next->sushe,shue);
}
cur=cur->next;
}
tail=cur;
cur=head.next;
}
}
//欢迎界面******************************
float f(float x, float y, float z) {
float a;
a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
}
float h(float x, float z) {
float y;
for ( y = 1.0f; y >= 0.0f; y -= 0.001f)
if (f(x, y, z) <= 0.0f)
return y;
return 0.0f;}
void home()//欢迎界面
{
float z,x,v,y0,ny,nx,nz,nd,d;
for ( z = 1.5f; z > -1.5f; z -= 0.05f) {
for ( x = -1.5f; x < 1.5f; x += 0.025f) {
v = f(x, 0.0f, z);
if (v <= 0.0f) {
y0 = h(x, z);
ny = 0.01f;
nx = h(x + ny, z) - y0;
nz = h(x, z + ny) - y0;
nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);
d = (nx + ny - nz) * nd * 0.5f + 0.5f;
putchar(".:-=+*#%@"[(int)(d * 5.0f)]);
}
else
putchar(' ');
}
putchar('\n');
}
}
//********************************************
void login()//登陆验证
{
int i=3,j=0;
char password1[20]="201821111134", user[20],password[20];
char user1[20]={"徐世兴"},ch;
char password2[20]="201821111138",user2[20]={"李金轩"};
printf(" 欢迎使用研究生信息管理系统\n");
printf(" Welcome to Postgraduate Information Management System\n");
printf(" 请输入您的用户名:");
scanf("%s",user);
while(!(strcmp(user1,user)==0||strcmp(user2,user)==0))
{
printf(" 该用户名不存在,请重新输入! 您还有%d次机会。\n",i);
printf(" 请您重新输入:");
scanf("%s",user);
i--;
if(!i)
{
system("cls");home();
printf(" 感谢您使用研究生信息管理系统,再见!\n");
printf(" Thank you for using the Graduate Information Management System. Good-bye.\n");
getch();exit(0);
}
}
printf(" 请输入您的密码:");
ch=getch();
while(ch!='\r'||ch=='\b')
{
if(ch!='\b')
{
password[j]=ch;
printf("*");j++;
}
else
{
j-=1;
printf("\b");
printf(" ");
printf("\b");
}
ch=getch();
}
i=3;
while(!(strcmp(password1,password)==0||strcmp(password2,password)==0))
{
printf("\n 密码错误,请重新输入! 您还有%d次机会。\n",i);
printf(" 请您重新输入:");
ch=getch();
j=0;
while(ch!='\r'||ch=='\b')
{
if(ch!='\b')
{
password[j]=ch;
printf("*");j++;
}
else
{
j-=1;
printf("\b");
printf(" ");
printf("\b");
}
ch=getch();
}
i--;
if(!i)
{
system("cls");home();
printf(" 感谢您使用研究生信息管理系统,再见!\n");
printf(" Thank you for using the Graduate Information Management System. Good-bye.\n");
getch();exit(0);
}
}
}
void yecount()//按专业统计人数
{
stu *p2=&head;
int i=0;
zyrank();
if(p2->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
while(p2->next)
{
i++;
printf("%-12d",p2->next->xuehao);
printf("%-8s",p2->next->name);
printf("%-5s",p2->next->sex);
printf("%-8s",p2->next->daoshi);
printf("%-20s",p2->next->zhuanye);
printf("%-24s",p2->next->xianjiufx);
printf("%-8d",p2->next->jxueji);
printf("%-10s\n",p2->next->sushe);
if(!p2->next->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("专业为%s的研究生人数为%d\n",p2->next->zhuanye,i);
break;
}
if(strcmp(p2->next->zhuanye,p2->next->next->zhuanye)!=0)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("专业为%s的研究生人数为%d\n",p2->next->zhuanye,i);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
i=0;
}
p2=p2->next;
}
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------------------------------\n");
}
else
printf("当前信息为空,请载入文件或输入信息!!!\n");
}
void dscount()//按导师统计奖学金
{
stu *p2=&head;
int i=0;
daosrank();
if(p2->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
while(p2->next)
{
printf("%-12d",p2->next->xuehao);
printf("%-8s",p2->next->name);
printf("%-5s",p2->next->sex);
printf("%-8s",p2->next->daoshi);
printf("%-20s",p2->next->zhuanye);
printf("%-24s",p2->next->xianjiufx);
printf("%-8d",p2->next->jxueji);
printf("%-10s\n",p2->next->sushe);
i+=p2->next->jxueji;
if(!p2->next->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("导师为%s的研究生奖学金总数为%d元\n",p2->next->daoshi,i);
break;
}
if(strcmp(p2->next->daoshi,p2->next->next->daoshi)!=0)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("导师为%s的研究生奖学金总数为%d元\n\n",p2->next->daoshi,i);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
i=0;
}
p2=p2->next;
}
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------------------------------\n");
}
else
printf("当前信息为空,请载入文件或输入信息!!!\n");
}
void yemoney()//按专业统计奖学金
{
stu *p2=&head;
int i=0;
zyrank();
if(p2->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
while(p2->next)
{
printf("%-12d",p2->next->xuehao);
printf("%-8s",p2->next->name);
printf("%-5s",p2->next->sex);
printf("%-8s",p2->next->daoshi);
printf("%-20s",p2->next->zhuanye);
printf("%-24s",p2->next->xianjiufx);
printf("%-8d",p2->next->jxueji);
printf("%-10s\n",p2->next->sushe);
i+=p2->next->jxueji;
if(!p2->next->next)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("专业为%s的研究生奖学金总数为%d元\n",p2->next->zhuanye,i);
break;
}
if(strcmp(p2->next->zhuanye,p2->next->next->zhuanye)!=0)
{
printf("-------------------------------------------------------------------------------------------------\n");
printf("专业为%s的研究生奖学金总数为%d元\n",p2->next->zhuanye,i);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------------------------------\n");
printf("学号 姓名 性别 导师 专业 研究方向 奖学金 宿舍信息\n");
printf("-------------------------------------------------------------------------------------------------\n");
i=0;
}
p2=p2->next;
}
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------------------------------\n");
}
else
printf("当前信息为空,请载入文件或输入信息!!!\n");
}
void music()//播放音乐
{
PlaySound(TEXT("music.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
}
void offmusic()//关闭音乐
{
PlaySound(NULL, NULL, SND_FILENAME | SND_ASYNC);
}
void hello()//问候音
{
PlaySound(TEXT("hello.wav"), NULL, SND_FILENAME | SND_ASYNC);
}
void tui()//退出音效
{
PlaySound(TEXT("退出音效.wav"), NULL, SND_FILENAME | SND_SYNC);
}
void dqsj()//显示当前时间
{
char * wday[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
time_t t;
struct tm *p;
t = time(NULL);
p = gmtime(&t);
printf("现在时间是:");
printf("%d年%2d月%2d日", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday);
printf(" %s ", wday[p->tm_wday]);
printf("%02d:%02d\n", (8+p->tm_hour), p->tm_min);
printf("\n-------------------------------------------------------------------------------\n");
}
研究生信息管理系统(C语言课设)
猜你喜欢
转载自blog.csdn.net/weixin_46165788/article/details/105532206
今日推荐
周排行