学生管理系统 最新修改

来源:互联网 发布:逆袭网络剧1第一视频 编辑:程序博客网 时间:2024/05/22 06:23

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "conio.h"
#define LEN sizeof(struct student)
typedef struct student
{
    char num[10];
    char name[10];
    int math,english,computer,yuwen;
int total;
    struct student *next;
}student, *LinkList;
void Login();
void weixiu();
void menu() ;
int  Open(LinkList L);
void printstart() ;
void Wrong() ;
void Nofind() ;
void printc();
void getinf(LinkList L);
void orderbyzongfen(LinkList L);
void deleteall(LinkList L);
void Developer();
void Sort(LinkList L);
void Save(LinkList L);
LinkList dingwei(LinkList L,char findmess[],char nameornum[]);
LinkList L;
int main(void)
{


Login();


   
    return 0;

/*---------------------------------------------------输入学生成绩并计算-----------------------------------------------------*/
void getinf(LinkList L)
{
LinkList r,s;
r=(LinkList )malloc(LEN); 
    printf("请输入学号:");
    scanf("%s",r->num); 
 printf("请输入名字");
 scanf("%s",r->name);
    printf("请输入语文成绩:"); 
    scanf("%d",&r->yuwen); 
printf("请输入数学成绩:"); 
    scanf("%d",&r->math); 
    printf("请输入英语成绩:"); 
    scanf("%d",&r->english); 
    printf("请输入电脑成绩:"); 
    scanf("%d",&r->computer); 
r->total=r->math+r->english+r->computer+r->yuwen;

    s=L->next;
    L->next=r;
    r->next=s;
    printf("追加记录成功!/n"); 
}


/*------------------------------该函数用于定位连表中符合要求的接点,并返回该指针---------------------------*/
LinkList dingwei(LinkList L,char findmess[],char nameornum[]) 
{
LinkList r;
if(strcmp(nameornum,"num")==0)
{
r=L->next;
while(r!=NULL)
{
if(strcmp(r->num,findmess)==0)
return r; 
r=r->next;
}
r=NULL;
return r;
}
else if(strcmp(nameornum,"name")==0)
{
r=L->next; 
while(r!=NULL) 

  if(strcmp(r->name,findmess)==0) 
  return r; 
  r=r->next; 

r=NULL;
return r;
}
else return 0;
}


/*---------------------------------------------删除记录--------------------------------------------------*/
void deleteall(LinkList L)
{

char ch;


   
  printf("确定您要清除文件里所有学生的信息,这样就无法恢复数据了(  Y or N )/n");
getchar();
        scanf("%c",&ch);
        if(ch == 'y' || ch == 'Y')
{
L->next = NULL;
printf("文件里学生成绩信息已经被清除!/n"); 
        }
        else return;
   
 
}

/*-------------------------------------------------排序记录------------------------------------------------------------*/
void Sort(LinkList L)
{
LinkList p,r,s;
p = L;

r = p ->next;
s = p ->next->next;
while(s != NULL)
{
while(s ->total < p ->next->total)
p = p ->next;
if(p ->next == s)
{
printf("排序已完成!/n");return;
}
else
{
  r ->next = s ->next;
  s ->next = p ->next;
  p ->next = s;
  s = r ->next;
  p = L;
}
}
printf("排序成功!/n"); 

 

   
}
/*--------------------------------------------------------- 排名---------------------------------------------------*/

void orderbyzongfen(LinkList L)

{
LinkList p;


    p=L;
        if(p->next!=NULL)
{
printstart();
        printc();
        for (p=p->next;p!=NULL;p=p->next)
            printf("%3s/t%7d/t/t%5d/t/t%5d/t%7d/t%10d/n",p->num,p->yuwen,p->math,p->english,p->computer,p->total);
        printstart();}
        else Nofind();
    }


/*-----------------------------------------------------------打开文件--------------------------------------------------------*/
int  Open(LinkList L)
{
FILE *fp;
LinkList p1,p2;
char choose;
int count=0;

p1=L;
p1->next=NULL;
fp=fopen("E://student_score","rb");
if(fp==NULL) 

  printf("/n=====>提示:文件还不存在,是否创建?(y/n)/n"); 
  scanf("%c",&choose);
  if(choose=='y'||choose=='Y') 
  {
  fp=fopen("E://student_score","wb");
  printf("文件已创建,请按回车键关闭,然后重新打开软件/n");getchar();getchar();exit(0);
  }
  else exit(0); 

p2=(LinkList)malloc(LEN);
while(fread(p2,LEN,1,fp))

  p2->next=NULL;
  p1->next=p2; 
  p1=p2;
  p2=(LinkList)malloc(LEN);
  count++; 
}
p2->next=NULL; 
fclose(fp);

return 1;
}
/*-----------------------------------------------------保存文件----------------------------------------------------*/
void Save(LinkList L)
{
FILE *fp;
LinkList p1;
char choose;
if(L ->next == NULL)
{printf("没有可以保存的信息!/n"); 
return;}
printf("确认保存?(y/n)/n");
getchar();
scanf("%c",&choose);
getchar();
if(choose == 'y' || choose == 'Y')
{
fp=fopen("E://student_score","wb");
p1=L;
p1=p1->next;

while(p1) 

if(fwrite(p1,LEN,1,fp)==1) 

p1=p1->next; 

  else 
  break; 
 

fclose(fp);
printf("保存成功!/n"); 
}
else printf("没有保存!/n");
}

void weixiu()
{
printf("/n/n/n");
printf("/n      **************************************************************");
printf("/n                                                                    ");
printf("/n        欢迎使用成绩管理系统.本系统尚在试用阶段,有问题请与我联系!  ");
printf("/n                                                                    ");
 
printf("/n                            我的qq是 810097972                      ");
printf("/n      **************************************************************");
}

/*----------------------------------------------------界面函数-------------------------------------------*/
void Login()
{
system("color 5f");
char ch[23];
int i=0;
char mima[45];
L=(LinkList)malloc(LEN);
int sel,count=0;
weixiu();
printf("/n/n/n");
printf("/n请选择您的登陆方式( 1 :管理员 2 :普通用户 )");
scanf("%d",&i);
switch(i)
{
case 1:

system("cls");
weixiu();
printf("/t/t/t/t用户名:");
scanf("%s",ch);
printf("/t/t密码:");
scanf("%s",mima);
if(strcmp(mima,"123456")==0 && strcmp(ch,"何涛")==0)
{
getchar();printf("/n按回车返回主菜单/n");getchar();
system("cls");
}
else
{
  printf("您的用户名或密码有误,无法登陆!/n");
  exit(0);

}
menu();
Open(L);

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{
case 1:
getinf(L);
count++;Save(L);getchar();printf("/n按回车返回主菜单/n");getchar();
break;
case 2:Sort(L);orderbyzongfen(L);getchar();printf("/n按回车返回主菜单/n");getchar();
break;

case 3:
deleteall(L);getchar();printf("/n按回车返回主菜单/n");getchar();
count--;
break;

case 4:
Developer();getchar();printf("/n按回车返回主菜单/n");getchar();
break;
case 5:
printf("谢谢使用 !有问题可以与我联系/n/t/tqq810097972/n");
exit(0);
break;
default:
Wrong();getchar();printf("/n按回车返回主菜单/n");getchar();
}
}
break;

case 2:
system("cls");
Open(L);
printf("/n/t/t/t/t1:按高分排序并显示/n/t/t/t/t2:制作人员/n/t/t/t/t3:退出系统/n");
printf("请选择你要的操作:");

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{

case 1:Sort(L);orderbyzongfen(L);getchar();printf("/n按回车返回主菜单/n");getchar();
break;

 

case 2:
Developer();getchar();printf("/n按回车返回主菜单/n");getchar();
break;
case 3:
printf("谢谢使用 !有问题可以与我联系/n/t/tqq810097972/n");
exit(0);
break;
default:
Wrong();getchar();printf("/n按回车返回主菜单/n");getchar();
}
}
break;
break;
}

printf("/n        |************************************************************|");

 


}
void menu()
{
    printf("/n/t/t/t/t欢迎进入成绩管理系统/t/t/t/n/n/t/t1:输入学生成绩并计算/n/t/t2:按高分排序并显示/n/t/t3:删除数据/n/t/t4:制作人员/n/t/t5:退出系统/n/n选择您要进入的菜单,请输入功能号(0~5):") ;  //主界面)

}
void printstart()
{
    printf("/n-------------------------------------------------------------------/n");
}
void Wrong()
{
  printf("提示:输入错误!/n");
}
void Nofind()
{
  printf("提示:没有找到该学生!/n");
}

void Developer()
{
printf("/n/n/n/t/t/t/t/t制作人员:/n/t/t/t/t/t/t ------何涛/n/n/n");
}

void printc()   
{
    printf("学号/t语文成绩 数学成绩 英语成绩    电脑成绩    总分/n"); 
}

原创粉丝点击