📄 新建 文本文3.txt
字号:
#include<conio.h>
/*班级成绩管理*/
#define ERROR 0
#define OK 1
#define K 9
char km[K][20];
/*单链表存储结构*/
typedef struct LNode
{
long ID ;
char name[10];
char sex[2];
int age ;
double cj[K];
struct LNode*next ;
}
*LinkList ;
char name[10],sex[2],k[20];
double c ;
int i,x,age,ks ;
static int y ;
struct LNode e ;
long id ;
/*创建一个带头结点的空链表*/
LinkList create(void)
{
LinkList L ;
L=(LinkList)malloc(sizeof(struct LNode));
if(L!=NULL)L->next=NULL ;
return L ;
}
/*返回平均成绩*/
double pj(double cj[K])
{
int i ;
double pj=0 ;
for(i=0;i<K;i++)pj+=cj[i];
pj/=K ;
return pj ;
}
/*返回结点数*/
int node(LinkList p)
{
int j=0 ;
while(p->next)
{
p=p->next ;
++j ;
}
return j ;
}
/*标题*/
void bt()
{
printf("ID号\t姓名\t性别\t年龄\t");
for(i=0;i<y;i++)printf("%s\t",km[i]);
printf("平均成绩 \n");
}
/*输出当前信息*/
void put(LinkList p)
{
printf("%ld\t",p->ID);
printf("%s\t",p->name);
printf("%s\t",p->sex);
printf("%d\t",p->age);
for(i=0;i<y;i++)printf("%f\t",p->cj[i]);
printf("%f",pj(p->cj));
}
/*输出全部信息*/
int all(LinkList p)
{
int j=0 ;
bt();
while(p->next)
{
p=p->next ;
put(p);
++j ;
}
printf("共有%d人",j);
return OK ;
}
/*输出全部信息---按编号*/
int idall(LinkList p,long D)
{
int j=0 ;
bt();
while(p->next)
{
p=p->next ;
if(p->ID==D)
{
put(p);
++j ;
}
}
printf("共有%d人",j);
return OK ;
}
/*输出全部信息---按姓名*/
int nameall(LinkList p,char name[10])
{
int j=0 ;
bt();
while(p->next)
{
p=p->next ;
if(p->name==name)
{
put(p);
++j ;
}
}
printf("共有%d人",j);
return OK ;
}
/*输出全部信息---按年龄*/
int ageall(LinkList p,int age)
{
int j=0 ;
bt();
while(p->next)
{
p=p->next ;
if(age==p->age)
{
put(p);
++j ;
}
}
printf("共有%d人",j);
return OK ;
}
/*输出全部信息---按性别*/
int sexall(LinkList p,char sex[2])
{
int j=0 ;
bt();
while(p->next)
{
p=p->next ;
if(p->sex==sex)
{
put(p);
++j ;
}
}
printf("共有%d人",j);
return OK ;
}
/*输出全部信息---按成绩*/
int cjall(LinkList p,int k,double cj)
/*k:第几门科目 cj:大于等于这个分数*/
{
int j=0 ;
bt();
while(p->next)
{
p=p->next ;
if(p->cj[k]>=cj)
{
put(p);
++j ;
}
}
printf("共有%d人",j);
return OK ;
}
/*获取ID的信息返回给对象e---获取信息*/
int Getdata(LinkList L,long D,struct LNode e)
{
struct LNode*p=L->next ;
int i ;
while(p||p->ID!=D)p=p->next ;
if(!p)return ERROR ;
e.ID=p->ID ;
e.age=p->age ;
for(i=0;i<K;i++)e.cj[i]=p->cj[i];
for(i=0;i<10;i++)e.name[i]=p->name[i];
for(i=0;i<2;i++)e.sex[i]=p->sex[i];
return OK ;
}
/*将对象e的信息插入表---添加*/
int Insert(LinkList p,struct LNode e)
{
LinkList s ;
s=(LinkList)malloc(sizeof(struct LNode));
s->ID=e.ID ;
s->age=e.age ;
for(i=0;i<K;i++)s->cj[i]=e.cj[i];
for(i=0;i<10;i++)s->name[i]=e.name[i];
for(i=0;i<2;i++)s->sex[i]=e.sex[i];
s->next=p->next ;
p->next=s ;
free(s);
return OK ;
}
/*删除ID信息并返回给对象e--删除*/
int Delete(LinkList p,long D)
{
LinkList q ;
while(p->next)
{
p=p->next ;
if(p->ID==D)
{
p=p->next ;
q=p->next ;
p->next=q->next ;
free(q);
}
}
return OK ;
}
/*排序(x:排序方式)*/
void Sort(LinkList p,char x)
{
int i ;
struct LNode*s ;
p=p->next ;
for(i=0;i<node(p)-1;i++)
{
int N=1,j ;
for(j=0;j<node(p)-1-i;j++)
switch(x)
{
case '1' :
if(p->next->ID<p->ID)
{
s=p ;
p=p->next ;
p->next=s ;
N=0 ;
p=p->next ;
}
break ;
case '2' :
if(p->next->name<p->name)
{
s=p ;
p=p->next ;
p->next=s ;
N=0 ;
p=p->next ;
}
break ;
case '3' :
if(p->next->age<p->age)
{
s=p ;
p=p->next ;
p->next=s ;
N=0 ;
p=p->next ;
}
break ;
}
if(N)break ;
}
}
/*界面程序*/
jm()
{
window(25,5,55,8);
textcolor(2);
cprintf("学生成绩管理系统 v2004 Dos版\n");
cprintf(" 制作设计:waiguai");
}
put1()
{
window(33,10,42,19);
textcolor(8);
cprintf("1.课程设置\n");
cprintf("2.学生管理\n");
cprintf("3.系统管理\n");
cprintf("4.退出系统\n");
}
put2()
{
window(33,10,42,20);
textcolor(4);
cprintf("1.全部清空\n");
cprintf("2.编号排序\n");
cprintf("3.姓名排序\n");
cprintf("4.年龄排序\n");
cprintf("5.返回上层\n");
}
put3()
{
window(33,10,42,20);
textcolor(8);
cprintf("1.添加信息\n");
cprintf("2.删除信息\n");
cprintf("3.查询信息\n");
cprintf("4.返回上层\n");
cprintf(" \n");
}
put4()
{
window(33,10,44,22);
textcolor(8);
cprintf("1.按编号查询\n");
cprintf("2.按姓名查询\n");
cprintf("3.按性别查询\n");
cprintf("4.按年龄查询\n");
cprintf("5.按成绩查询\n");
cprintf("6.返回上层\n");
}
/*目录*/
char ml1()
{
char x ;
put1();
x=getche();
return x ;
}
char ml2()
{
char x ;
put3();
x=getche();
return x ;
}
char ml3()
{
char x ;
put2();
x=getche();
return x ;
}
char ml4()
{
char x ;
put4();
x=getche();
return x ;
}
void main()
{
LinkList h=create(),p=create(),t ;
do
{
clrscr();
jm();
x=ml1();
switch(x)
{
case '1' :
clrscr();
window(25,10,55,11);
textcolor(1);
cprintf("科目(请输入一个整数):");
x=getche();
x=x-48 ;
clrscr();
y=x ;
window(3,15,20,20);
for(i=0;i<x;i++)
{
cprintf("科目%d:",i+1);
scanf("%s",km[i]);
clrscr();
}
x='0' ;
break ;
case '2' :
clrscr();
x=ml2();
switch(x)
{
case '1' :
clrscr();
window(10,20,79,21);
textcolor(14);
cprintf("ID编号:");
scanf("%ld",&e.ID);
clrscr();
window(5,18,79,19);
cprintf("%ld",e.ID);
window(10,20,79,21);
cprintf("姓 名:");
scanf("%s",&e.name);
clrscr();
cprintf("性 别:");
scanf("%s",&e.sex);
clrscr();
cprintf("年 龄:");
scanf("%d",&e.age);
clrscr();
for(i=0;i<y;i++)
{
cprintf("%s成绩:",km[i]);
scanf("%f",&e.cj[i]);
clrscr();
}
window(5,18,79,19);
clrscr();
cprintf("请稍等...");
for(i=y;i<K;i++)e.cj[i]=NULL ;
Insert(p,e);
clrscr();
break ;
case '2' :
clrscr();
p=h ;
window(10,20,79,21);
textcolor(14);
cprintf("输入要删除的ID :");
scanf("%ld",id);
if(Delete(p,id)==0)
{
cprintf("无此ID!");
getch();
clrscr();
break ;
}
clrscr();
cprintf("删除成功");
getch();
clrscr();
break ;
case '3' :
clrscr();
x=ml4();
switch(x)
{
case '1' :
clrscr();
cprintf("ID号:");
scanf("%ld",id);
idall(p,id);
getch();
break ;
case '2' :
clrscr();
cprintf("姓名:");
scanf("%s",name);
nameall(p,name);
getch();
break ;
case '3' :
clrscr();
cprintf("年龄:");
scanf("%d",age);
ageall(p,age);
getch();
break ;
case '4' :
clrscr();
cprintf("性别:");
scanf("%s",sex);
sexall(p,sex);
getch();
break ;
case '5' :
clrscr();
cprintf("科目:");
scanf("%s",ks);
clrscr();
cprintf("成绩:");
scanf("%f",c);
clrscr();
cjall(p,ks,c);
getch();
break ;
case '6' :
clrscr();
break ;
}
break ;
case '4' :
break ;
}
x='0' ;
break ;
case '3' :
do
{
clrscr();
x=ml3();
switch(x)
{
case '1' :
clrscr();
textcolor(4);
cprintf("注意:此操作执行后将无法恢复!继续执行吗?(yes/no)");
x=getche();
if(x=='y'&&x=='Y')
{
p=p->next ;
while(p->next)
{
LinkList q ;
q=p->next ;
p->next=q->next ;
free(q);
}
}
break ;
case '2' :
clrscr();
Sort(p,'1');
all(p);
break ;
case '3' :
clrscr();
Sort(p,'2');
all(p);
break ;
case '4' :
clrscr();
Sort(p,'3');
all(p);
break ;
case '5' :
clrscr();
break ;
}
}
while('5'!=x);
case '4' :
break ;
}
}
while('4'!=x);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -