#include "stdio.h"
#include "stdlib.h"
#include "string.h"
char password[]="123456" ;
char getpassword[30];
typedef struct stu{
char num[6]; /* 序号。学号 */
char name[8]; /* 名字 */
char sex[4]; /*1表示男生,0表示女生*/
char class[8];/*班级*/
int en; /* 英语 */
int ch; /* 语文 */
int sx; /* 数学 */
struct stu *next;
}STU;
STU *jianli()/*建立链表*/
{ STU *p;
p=(STU * )malloc(sizeof(STU)); /*建立头指针*/
p->next=NULL;
if(p==NULL)
{ printf("空间不够"); exit(0);}
return p;
}
print()
{ char a;
printf("/n*********计算机系学生成绩管理系统*********/n");
printf("/n 1 : 添 加 **/n");
printf("/n 2 : 查 找 **/n");
printf("/n 3 : 删 除 **/n");
printf("/n 4 : 查 看 **/n");
printf("/n 5 : 修 改 **/n");
printf("/n 6 : 修改系统密码 **/n");
printf("/n 7 : 退出 **/n");
printf("/n******************************************/n");
/*scanf("%c",&i);*/
printf("/n请输入你的选择:");
return;
}
add ( STU * head) /*添加*/
{ STU *p,*p1,*p2;
char flag='y';
printf("请输入您的密码:");
getchar();
gets(getpassword);
while(strcmp(password,getpassword)!=0){
printf("/n密码错,请重新输入") ;
gets(getpassword);
}
while(flag=='y')
{
p=(STU *)malloc(sizeof (STU));
if(p==NULL)
{ printf("空间不够"); exit(0);}
printf("/n请输入学号:");
scanf("%s",p->num);
p2=head;
p1=head->next;
while(p1!=NULL&&strcmp(p1->num,p->num)!=0)
{ p2=p1;p1=p1->next;}
if(p1==NULL)
{p2=head;p1=head->next; }
else { printf("你输入的学号已经存在");return ;}
printf("/n请输入姓名:");
scanf("%s",p->name);
printf("/n请输入班级:");
scanf("%s",p->class);
printf("/n请输入性别");
scanf("%s",p->sex);
printf("/n请按格式按顺序输入 英语 语文 数学的成绩:");
scanf("%d %d %d",&p->en,&p->ch,&p->sx);
while(p1!=NULL&&strcmp(p1->num,p->num)<0)
{ p2=p1; p1=p1->next;}
p->next=p1 ;p2->next=p; /*head空则直接加在后边,否则按大小插入*/
printf("输入成功/n");
printf("/n学号%s 姓名 %s 英语 %d 语文 %d 数学 %d/n",p->num,p->name,p->en,p->ch,p->sx);
printf("/n/n如果继续添加请按'Y' 返回主菜单请按'N'/n");
scanf(" %c",&flag);
}
return;
}
seatch(STU *head) /*查找函数*/
{ char *c;
char flag='y';
STU *p,*p1;
while(flag=='y')
{
printf("/n请输入你要查询学生的学号:");
scanf(" %s",c);
p=head->next;
while(p!=NULL&&strcmp(p->num,c)!=0)
{ p1=p; p=p->next;}
if(p==NULL)
printf("没有找到");
else if(strcmp(p->num,c)==0)
printf("学号%s 姓名 %s 英语 %d 语文 %d 数学 %d",p->num,p->name,p->en,p->ch,p->sx);
printf("/n/n如果继续查询请按'Y' 回到主菜单请按'N'/n");
scanf(" %c",&flag);
}
return ;
}
del(STU *head) /*删除函数*/
{
char *c;
STU *p,*p1;
char flag='y';
printf("请输入您的密码:");
getchar();
gets(getpassword);
while(strcmp(password,getpassword)!=0){
printf("/n密码错,请重新输入") ;
gets(getpassword);
}
while(flag=='y')
{
printf("/n请输入你要删除学生的学号:");
scanf("%s",c);
p=head;
while(p!=NULL&&strcmp(p->num,c)!=0)
{ p1=p; p=p->next;}
if(p==NULL)
printf("/n没有找到/n");
else if(strcmp(p->num,c)==0)
p1->next=p->next; free(p);
printf("/n/n继续删除请按'Y' 返回主菜单请按'N'/n");
scanf(" %c",&flag);
}
return;
}
chakan(STU *head) /*查看函数*/
{
STU *p;
p=head->next;
if(p==NULL)
{ printf("/n什么都没有/n"); getch(); }
else while(p!=NULL)
{ printf("/n学号:%s 班级:%s 姓名:%s 性别:%s 英语:%d 语文:%d 数学:%d/n",p->num,p->class,p->name,p->sex,p->en,p->ch,p->sx);
p=p->next;getch();}
printf("/n查看完毕");
getch();
clrscr();
return ;
}
xiugai(STU *head) /*修改函数*/
{
char *c;
char flag='y';
STU *p,*p1;
while(flag=='y')
{
printf("/n请输入你要修改的学生的学号:");
scanf(" %s",c);
p=head->next;
while(p!=NULL&&strcmp(p->num,c)!=0)
{ p1=p; p=p->next;}
if(p==NULL)
printf("没有找到");
else if(strcmp(p->num,c)==0)
printf("学号%s 姓名 %s 英语 %d 语文 %d 数学 %d/n",p->num,p->name,p->en,p->ch,p->sx);
printf("/n请输入要修改后的姓名:");
scanf("%s",p->name);
printf("/n请按格式按顺序输入要修改后的 英语 语文 数学的成绩:");
scanf("%d %d %d",&p->en,&p->ch,&p->sx);
printf("/n修改完成 学号%s 姓名 %s 英语 %d 语文 %d 数学 %d/n",p->num,p->name,p->en,p->ch,p->sx);
printf("/n/n如果继续修改请按'Y' 回到主菜单请按'N'/n");
scanf(" %c",&flag);
}
return ;
}
modify(){
printf("/n请输入您要修改的密码:") ;
scanf("%s",getpassword);
strcpy(password,getpassword);
printf("/n密码修改成功,按任意键继续!") ;getch();
return;
}
main()
{ char a;
STU *head;
head=jianli();
print();
while(scanf(" %c",&a))
switch (a)
{ case '1' : add(head); print();break;
case '2' : seatch(head);print();break;
case '3' : del(head);print(); break;
case '4' : chakan(head);print(); break;
case '5' : xiugai(head); print();break;
case '6' : modify();print();break;
case '7' : exit(0);
default : printf("输入错误,从新输入");break;
}
}