学生成绩管理系统C语言.docx
《学生成绩管理系统C语言.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言.docx(17页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C语言
江西科技师范大学
《高级语言程序设计》实训报告
专业:
计算机科学与技术(职教)
学生姓名:
芦育清
学号:
20142371
指导教师:
曾纯青
2015
年
5
月
27
日
C语言学生系统
——调试分析与运行结果
一.系统总体设计(用了链表)
本系统设计的函数是由一个主函数几个子函数组成的。
首先构思大局编出一个主函数,然后根据要实现的功能逐步细分设计,分别解决新建、显示、查找、删除、退出功能的子函数编程中遇到的问题。
首先通过新建函数添加信息,然后再逐步编写和验证其它功能。
显示函数的设计利用C语言的循环功能依次输出信息。
查找是用一个字符串比较得出两个相同的字符串的方法找出用户要查找的人。
删除函数的设计首先先找到对应的链表然后删除此链表实现删除目的的,for循环和while循环在这此设计中也起了很大的作用。
三.系统流程图
四.程序的数据设计
1菜单函数
菜单函数首先标出欢迎进入学生管理系统,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图3所示:
2新建学生信息
通过开辟链表对每个链表赋值,每输完一次便指向下一个链表,并用一个计数器计入新建的个数;
3查看学生信息
显示学校信息通过循环函数将全部的通讯录信息以此显示出来,其流程图如图所示:
4删除学生信息
链表的删除操作是指将某个节点从链表中分离出来,也就是修改该节点的前趋节点指针,使其指向要删除节点的后节点就可以了。
假
真
假
真
5查找学生信息
通过两字符串的比较,找到与输入姓名相同的姓名的位置。
6退出学生管理系统
在使用完系统后,按0键便会退出系统.
按0即退出;
7我的代码
#include
#include
#include
#include
#include
#defineLENsizeof(structstudent)
structstudent*Head;
structstudent
{
intnum;
charname[10];
intscore;
structstudent*next;
};
intn;
structstudent*creat()//新建学生信息
{
structstudent*head=NULL,*a,*b;//这里的初始化为null是为了避免出错
n=0;
a=(structstudent*)malloc(LEN);
printf("请输入学号姓名和分数(当输入的学号姓名和分数为0时退出新建):
\n");
scanf("%d",&a->num);
scanf("%s",a->name);
scanf("%d",&a->score);
a->next=NULL;
while(a->num!
=0)
{
n=n+1;
if(n==1)
{
head=a;
b=a;
}
else
{
a=(structstudent*)malloc(LEN);
a->next=NULL;
printf("请输入学号姓名和分数:
\n");
scanf("%d",&a->num);
scanf("%s",a->name);
scanf("%d",&a->score);
if(a->num!
=0)
{
b->next=a;
b=a;
}
}
}
b->next=NULL;
returnhead;
}
voidprint(structstudent*head)//查看所有学生信息
{
structstudent*p;
p=head;
while(p!
=NULL)
{
printf("学号:
%d",p->num);
printf("姓名:
%s",p->name);
printf("分数:
%d\n",p->score);
p=p->next;}
printf("按任意键进行......");
fflush(stdin);
getchar();
system("cls");
}
voiddelet(structstudent*head,intnum)
{
structstudent*s,*p;
if(head==NULL)
printf("链表为空,不能进行删除结点操作!
");
else
{
p=head;
while(p->num!
=num)
{
s=p;
p=p->next;
}
if(p==NULL)
printf("没有此人信息!
\n");
else
if(p==head)
{
Head=head->next;
n--;
}
else
{
s->next=p->next;
free(p);
n--;
}
printf("按任意键进行......");
fflush(stdin);
getchar();
system("cls");
}
}
voidsearch(structstudent*head,intnum)//查找单个学生信息
{
structstudent*c;
inti=0;
c=head;
while(c!
=NULL)
{
i=i+1;
if(c->num==num)
{
printf("学号:
%d",c->num);
printf("姓名:
%s",c->name);
printf("分数:
%d\n",c->score);
break;
}
else
c=c->next;
}
if(i>n)
printf("查无此人!
\n");
printf("按任意键进行......");
fflush(stdin);
getchar();
system("cls");
}
voidcode()
{
inta;
staticintb=0;
if(b==3)
{printf("对不起!
你已经输入3次!
\n");
printf("按任意键退出......");
fflush(stdin);
getchar();
exit(0);}
charmima[11];
charmima1[11]="20142371";
intj;
printf("---------------------------------------------------------------------------\n");
printf("---------------------------------------------------------------------------\n");
printf("请输入您的登录密码:
");
for(j=0;j<10;j++)
{
mima[j]=getch();
if(mima[j]=='\r')//空格也是一个字符
break;
printf("*");
}
mima[j]='\0';
//Romdo();
b=b+1;
if(strcmp(mima1,mima)==0);
else
{
system("cls");
printf("你输入的密码错误!
\n");
printf("1:
继续2:
退出\n");
scanf("%d",&a);
system("cls");
switch(a)
{
case1:
code();break;
case2:
exit(0);
}
}
system("cls");
}
voidmain()
{system("color5A");
code();
intchoic,m,s;
printf("\n");
printf("---------------------------------------------------------------------------\n");
printf("---------------------------------------------------------------------------\n");
Sleep(300);
printf("欢");
system("color1A");
Sleep(300);
printf("迎");
system("color2A");
Sleep(300);
printf("来");
system("color3A");
Sleep(300);
printf("到");
system("color4A");
Sleep(300);
printf("学");
system("color6A");
Sleep(300);
printf("生");
system("color0A");
Sleep(300);
printf("管");
system("color1b");
Sleep(300);
printf("理");
system("color7A");
Sleep(300);
printf("系");
system("color2b");
Sleep(300);
printf("统\n");
system("color5A");
Sleep(300);
printf("---------------------------------------------------------------------------\n");
printf("---------------------------------------------------------------------------\n");
do{
printf("\t\t※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t\t******\n");
printf("\t\t******\n");
printf("\t\t***1:
新建学生信息***\n");
printf("\t\t******\n");
printf("\t\t***2:
查看学生信息***\n");
printf("\t\t******\n");
printf("\t\t***3:
删除学生信息***\n");
printf("\t\t******\n");
printf("\t\t***4:
查找学生信息***\n");
printf("\t\t******\n");
printf("\t\t***0:
退出学生系统***\n");
printf("\t\t******\n");
printf("\t\t※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("请选择您要进行的操作");
//printf("请选择学生管理系统功能:
1:
新建2:
查看学生信息3:
删除4:
查找0:
退出\n");
scanf("%d",&choic);
system("cls");
switch(choic)
{case1:
printf("新建学生信息");
Head=creat();system("cls");break;
case2:
print(Head);break;
case3:
printf("输入您要删除的学生的学号:
");
scanf("%d",&s);
delet(Head,s);break;
case4:
printf("输入您要查找的学生的学号:
");
scanf("%d",&m);
search(Head,m);break;
case0:
break;
}
}while(choic!
=0);
}