?? st.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 + -