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

📄 st.c

📁 这是一个学生管理系统的完整版本,包括学籍管理和成绩管理,非常有利于开发此类系统的人参考用.
💻 C
字号:
#include <math.h>
#include<stdio.h>
#include<stdlib.h>
#include <graphics.h>
#include <sgchn30.h>
#include<ctype.h>
#include<dos.h>
#define swap(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
#define N 30
#define C 15
#define ok 1
#define error 0
#define V 15
typedef struct node
{
 long num;
 char name[V];
 char sex[5];
 int age;
 char dept[V];
 char class[10];
struct node *next;
}link;
link *L,*head;
int num;
void create_linklist()
{
char ch;
link *new;
head=(link *)malloc(sizeof(link));
head->next=NULL;
num=0;
while(1)
{
  new=(link *)malloc(sizeof(link));
       if(!new)
       {
        print("overflow!");
       exit(0);
       }
       print("\n输入第%d个学生的信息:",num+1);
       print("\n学号:");
       scanformat("%ld",&new->num);
       print("\n姓名:");
       scanformat("%s",new->name);
       print("\n性别:");
       scanformat("%s",new->sex);
       print("\n年龄:");
       scanformat("%d",&new->age);
       print("\n所在系:");
       scanformat("%s",&new->dept);
       print("\n班级:");
       scanformat("%s",&new->class);
       new->next=head->next;
       head->next=new;
       num++;
       print("\n继续?Y or N?:");
       scanformat("%c",&ch);
       if(ch=='N'||ch=='n')
       break;
 }
L=head->next;
print("\n 成功的创建了学生信息表!\n");
}
void output_linklist()
{
   int i=num;
   print("\n此刻学生信息表中学生信息:\n");
   while(i>0)
   {
        print("\n第%d个学生的信息:",i);
        print("\n 学号:");
        print("%ld",L->num);
        print("\n 姓名:");
        print("%s",L->name);
        print("\n 性别:");
	   print("%s",L->sex);
        print("\n 年龄:");
        print("%d",L->age);
        print("\n所在的系:");
        print("%s",L->dept);
        print("\n所在的班级:");
        print("%s",L->class);
        i--;
        L=L->next;
   }
 L=head->next;
}
void insert_list()
{
int n,i=1;
link *new;
print("\n你想在哪个记录之前插入新的记录 :");
scanformat("%d",&n);
while(n>num||n<0)
{
print("\n非法输入,请重新输入:");
scanformat("%d",&n);
}
while(i<n-1)
{
L=L->next;
i++;
}
new=(link *)malloc(sizeof(link));
if(!new)
  {
  print("溢出!");
  exit(0);
  }
print("\n 请输入学生的信息:\n");
print("\n学号:");
scanformat("%ld",&new->num);
print("\n姓名:");
scanformat("%s",new->name);
print("\n性别:");
scanformat("%s",&new->sex);
print("\n年龄:");
scanformat("%d",&new->age);
print("\n所在系:");
scanformat("%s",new->dept);
print("\n所在班级:");
scanformat("%s",new->class);
new->next=L->next;
L->next=new;
print("已成功的加入了一个新的记录!\n");
num++;
L=head->next;
}
void delete_linklist()
{
link *q,*p;
int i,j=1;
print("\n你想删除哪个学生的信息:");
scanformat("%d",&i);
while(i>num||i<0)
{
print("\n输入格式错误,请重新输入!");
scanformat("%d",&i);
}
while(j<i-1)
{
L=L->next;
j++;
}
q=L;
p=L->next;
q->next=q->next->next;
free(p);
print("\n你已经成功的删除了该生的记录!\n");
num--;
L=head->next;
}
void show_menu2()
{
print("\n====================================================");
print("\n1.显示表中的信息");
print("\n2.加入一个学生的信息");
print("\n3.删除学生的信息");
print("\n4.退出");
print("\n====================================================\n");
}

void xuexi()
{
int choice;
print("\n 现在的学生表是空的,开始创建学生表,请稍等.........");
sleep(6);
create_linklist();
show_menu2();
while(1)
{
print("请选择你的操作:");
scanformat("%d",&choice);
     switch(choice)
       {
          case 1:
                     output_linklist();
                     break;
          case 2:
                      insert_list();
                      break;
         case 3:
                      delete_linklist();
                      break;
        case 4:
		  saveconsole("student.txt");
                      return;       
        default:
                   print("\n错误的输入!");
                   break;
      }
print("\n\n");
show_menu2();
}


}


typedef int status;
typedef struct stud
{
long num;
char name[C];
int  high_math;
int english;
int physics;
int program;
int database;
int total;
int ave;
}student;
student chengji[N];
int number,ave[N];
status assert(int x)
{
if(x>=0&&x<=100)
return ok;
else
return error;
}
status create_chengjilist()
{
int num,i;
print("\n正在创建学生成绩表,请稍等.........\n");
sleep(6);
print("请输入学生的数目(<30):");
scanformat("%d",&num);
while(num>N)
{
print("\n你输入的人数太多!");
print("\n请重新输入:");
scanformat("%d",&num);
}
for(i=0;i<num;i++)
{
 print("\n输入第%d个学生的成绩信息:\n",i+1);
print("学号:");
scanformat("%ld",&chengji[i].num);
print("\n姓名:");
scanformat("%s",chengji[i].name);
print("\n高等数学:");
scanformat("%d",&chengji[i].high_math);
while(!assert(chengji[i].high_math))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[i].high_math);
}
print("\n英语:");
scanformat("%d",&chengji[i].english);
while(!assert(chengji[i].english))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[i].english);
}
print("\n物理:");
scanformat("%d",&chengji[i].physics);
while(!assert(chengji[i].physics))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[i].physics);
}
print("\n程序设计:");
scanformat("%d",&chengji[i].program);
while(!assert(chengji[i].program))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[i].program);
}
print("\n数据库:");
scanformat("%d",&chengji[i].database);
while(!assert(chengji[i].database))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[i].database);
}
chengji[i].total=chengji[i].high_math+chengji[i].english+chengji[i].physics+chengji[i].program+chengji[i].database;
chengji[i].ave=chengji[i].total/5;
}
print("\n学生成绩表创建成功!!!\n");
return num;
}
void show(int data)
{
int i;
print("\n学生成绩表的所有信息:\n");
for(i=0;i<data;i++)
{
 if(!(chengji[i].name[0]==''))
{
print("\n第%d个学生信息:",i+1);
print("\n学号:");
print("%ld",chengji[i].num);
print("\n姓名:");
print("%s",chengji[i].name);
print("\n高等数学:");
print("%d",chengji[i].high_math);
print("\n英语:");
print("%d",chengji[i].english);
print("\n物理:");
print("%d",chengji[i].physics);
print("\n程序设计:");
print("%d",chengji[i].program);
print("\n数据库:");
print("%d",chengji[i].database);
print("\n总分:");
print("%d",chengji[i].total);
print("\n平均分:");
print("%d",chengji[i].ave);
}
}
}
status search_num(int v,long d)
{
int i;
for(i=0;i<v;i++)
  {
 if(chengji[i].num==d)
   break;
   }
if(i==v)
{
print("\n成绩表中不存在该生.");

}
else
{
print("\n查找学生的信息是:\n");
print("\n学号:");
print("%ld",chengji[i].num);
print("\n姓名:");
print("%s",chengji[i].name);
print("\n高等数学:");
print("%d",chengji[i].high_math);
print("\n英语:");
print("%d",chengji[i].english);
print("\n物理:");
print("%d",chengji[i].physics);
print("\n程序设计:");
print("%d",chengji[i].program);
print("\n数据库:");
print("%d",chengji[i].database);
print("\n总分:");
print("%d",chengji[i].total);
print("\n平均分:");
print("%d",chengji[i].ave);
return i;
}
}
void search_name(int s)
{
int i;
char string[C];
print("\n请输入要查找学生的姓名:");
scanformat("%s",string);
for(i=0;i<s;i++)
{
if(!strcmp(string,chengji[i].name))
break;
}
if(i==s)
{
print("\n成绩表中不存在该生.");
return;
}
else
{
print("\n该生的成绩记录:\n");
print("\n学号:");
print("%ld",chengji[i].num);
print("\n姓名:");
print("%s",chengji[i].name);
print("\n高等数学:");
print("%d",chengji[i].high_math);
print("\n英语:");
print("%d",chengji[i].english);
print("\n物理:");
print("%d",chengji[i].physics);
print("\n程序设计:");
print("%d",chengji[i].program);
print("\n数据库:");
print("%d",chengji[i].database);
print("\n总分:");
print("%d",chengji[i].total);
print("\n平均分:");
print("%d",chengji[i].ave);
}
}
void searchlist(int t)
{
int i;
long num;
char ch;
while(1)
{
print("\n1.学号.\n2.姓名");
print("\n你想通过什么查询.请选择:");
scanformat("%d",&i);
switch(i)
{
case 1:
print("\n请输入要查找学生的学号:");
scanformat("%ld",&num);
search_num(t,num);
break;
case 2:
search_name(t);
break;
default:
 print("\n非法输入.");
 break;
}
print("\n想继续查询吗?Y or N?:");
scanformat("%ch",&ch);
if(ch=='N'||ch=='n')
break;
}
}
void show_menu()
{
print("==================================");
print("\n1.显示成绩表中所有的学生成绩信息.");
print("\n2.查询学生的成绩信息.");
print("\n3.加入学生的成绩信息.");
print("\n4.删除学生的成绩信息.");
print("\n5.显示各科目的平均分.");
print("\n6.显示学生成绩排名情况.");
print("\n7.退出学生成绩管理系统.");
print("\n================================");
print("\n请选择你想要的操作:");
}
status insertlist(int m)
{
char ch;
print("\n请输入加入学生的成绩信息:\n");
while(1)
{
print("\n输入第%d个学生的成绩信息:\n",m+1);
print("学号:");
scanformat("%ld",&chengji[m].num);
print("\n姓名:");
scanformat("%s",chengji[m].name);
print("\n高等数学:");
scanformat("%d",&chengji[m].high_math);
while(!assert(chengji[m].high_math))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[m].high_math);
}
print("\n英语:");
scanformat("%d",&chengji[m].english);
while(!assert(chengji[m].english))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[m].english);
}
print("\n物理:");
scanformat("%d",&chengji[m].physics);
while(!assert(chengji[m].physics))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[m].physics);
}
print("\n程序设计:");
scanformat("%d",&chengji[m].program);
while(!assert(chengji[m].program))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[m].program);
}
print("\n数据库:");
scanformat("%d",&chengji[m].database);
while(!assert(chengji[m].database))
{
print("\n输入非法格式.");
print("\n请重新输入.");
scanformat("%d",&chengji[m].database);
}
chengji[m].total=chengji[m].high_math+chengji[m].english+chengji[m].physics+chengji[m].program+chengji[m].database;
chengji[m].ave=chengji[m].total/5;
print("\n成功的加入一个学生的成绩信息.");
m=m+1;
print("\n想继续吗?Y or n?:");
scanf("%c",&ch);
if(ch=='N'||ch=='n')
return m;
}
}
void deletelist(int n)
{
char ch,string[C];
int i;
long xuehao;
string[0]='\0';
print("\n请输入你想删去的学生的学号:");
scanf("%ld",&xuehao);
print("\n你要删去的学生的信息:\n");
i=search_num(n,xuehao);
print("\n你真的要删去该生的成绩信息吗?Y or N ?:");
scanformat("%c",&ch);
if(ch=='Y'||ch=='y')
{
strcpy(chengji[i].name,string);
print("\n你已经成功的删去了该生的成绩信息!!\n");
return;
}
else
return;
}


void show_average()
{
int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,i;
print("\n正在计算各科目的平均分,请稍等.........");
sleep(5);
for(i=0;i<number;i++)
if(!(chengji[i].name[0]==' '))
{
sum1+=chengji[i].high_math;
sum2+=chengji[i].english;
sum3+=chengji[i].physics;
sum4+=chengji[i].program;
sum5+=chengji[i].database;
}
print("\n高等数学:%d",sum1/number);
print("\n英语:%d",sum2/number);
print("\n物理:%d",sum3/number);
print("\n程序设计:%d",sum4/number);
print("\n数据库:%d",sum5/number);
}
status search_ave(int average)
{
int i;
char string[]="";
for(i=0;i<number;i++)
{
if(strcmp(chengji[i].name,string)==0)
continue;
if(ave[i]==average)
{
ave[i]=0;
return i;
}
}
return -1;
}

void search_paiming()
{
int numb[N],i,j,temp,k,m=0;/*??????*/
for(i=0;i<number;i++)
numb[i]=chengji[i].ave;
for(i=number;i>=0;i--)
{
for(j=i-1;j>=0;j--)
if(numb[j]<numb[i])
{
swap(numb[j],numb[i],temp);
i=j;
}
}
print("\n学生成绩排名:\n");
print("名次             学号              姓名           平均分");
for(i=0;i<number;i++)
{
k=search_ave(numb[i]);
if(k>=0)
{
print("\n第%d名:",m+1);
print("          %ld",chengji[k].num);
print("          %s",chengji[k].name);
print("          %d",chengji[k].ave);
m++;
 }
}
print("\n");
}


void xuecheng()
{
int choice,i;
number=create_chengjilist();
while(1)
{
print("\n");
show_menu();
scanformat("%d",&choice);
switch(choice)
{
case 1:
show(number);
break;
case 2:
searchlist(number);
break;
case 3:
number=insertlist(number);
break;
case 4:
deletelist(number);
break;
case 5:
show_average();
break;
case 6:
for(i=0;i<number;i++)
ave[i]=chengji[i].ave;
search_paiming();
break;
case 7:
saveconsole("student.txt");
return;
default:
print("\n非法输入!");
break;
}
}
}


void print_menu()
{
print("\n=================================");
print("\n1.学生基本信息管理系统.");
print("\n2.学生成绩管理系统.");
print("\n3.退出管理系统.");
print("\n===================================");
}
main()
{
int choice,i;
 winfont wft;
 setconsolefont(0,GREEN,WIN24K,0);
/* quikquitsgchn();
 sgchnquikstart();*/
 SGCHNinit();
  setbkcolor( BROWN);
   for(i=1;i<11;i++)
   {
   setcolor(i);
   circle(200,200,10*i);
   }
    setfont(&wft,1,RED,WIN24K,0);
   ChineseSize24("欢迎进入学生管理系统",150,150,100,wft);
   setfont(&wft,1,BLUE,WIN24K,0);
   ChineseSize24("copyright: jay0518",300,300,100,wft);
  setfont(&wft,1,YELLOW,WIN24K,0);
 ChineseSize24("2005-06-26",370,350,50,wft);
 setfont(&wft,1,GREEN,WIN24K,0);
 ChineseSize24("PRESS ANY KEY TO CONTINUE !!",150,400,50,wft);
getch();
SGCHNshoutdown();
changeconsolesize(10000);
while(1)
{
print_menu();
print("\n请选择你的操作:");
scanformat("%d",&choice);
switch(choice)
{
case 1:
xuexi();
break;
case 2:
xuecheng();
break;
case 3:
exit(0);
default:
print("\n错误的输入格式.");
break;
}
}
}

⌨️ 快捷键说明

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