目录
序
其实我就是想找一个谈得来,合脾气,在一起舒坦,分开久了有点想念的人,爱情如此,友情同理。
嗨!这里是狐狸~~
大家的期末课设要来了吧,有想法做什么了嘛,有没有为此熬夜,有没有为此努力呢,今天,我们来写一个学生成绩管理系统,一方面是让大家复习一下自己学过的知识,一方面是为了给大家的期末课设提供一点思路。前面讲的都是一些项目,不知道现在写一个系统,大家能不能掌握呢?emmm,我们一步一步的来吧,尽量让大家懂得怎么去做一个系统,我写了很多的注释,大家可以根据注释来理解。(代码有点多哈,这次头文件就不放了)
一、需求分析说明
本系统实现了学生成绩管理系统所需的相关功能,其中的功能主要分为五项:
1)实现对两个文件数据进行合并生成新文件
2)抽取出三科成绩中有补考的学生并保存在一个新文件
3)对合并后的文件中的数据按总分降序排序(至少采用两种排序方法实现)
4)输入一个学生姓名后能查找到此学生的信息并输出结果
5)要求使用结构体、链或数组等实现上述要求
二、概要设计说明
模块调用图:
三、详细设计说明
1)主函数模块
调用各功能模块,实现文件合并、查找学生信息、排序等功能。
本模块的主要功能是初始化图形界面,进入主菜单,调用各模块,实现软件功能。
主菜单
void menu() /*主菜单*/
{
system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/
textcolor(10); /*在文本模式中选择新的字符颜色*/
gotoxy(10,5); /*在文本窗口中设置光标*/
cprintf(" The Students' Grade Management System \n");
gotoxy(10,8);
cprintf(" *************************Menu********************************\n");
gotoxy(10,9);
cprintf(" * 1 input record 2 delete record *\n");
gotoxy(10,10);
cprintf(" * 3 search record 4 modify record *\n");
gotoxy(10,11);
cprintf(" * 5 insert record 6 count record *\n");
gotoxy(10,12);
cprintf(" * 7 sort reord 8 save record *\n");
gotoxy(10,13);
cprintf(" * 9 display record 0 quit system *\n");
gotoxy(10,14);
cprintf(" *************************************************************\n");
/*cprintf()送格式化输出至文本窗口屏幕中*/
}
主函数
void main()
{
Link l; /*定义链表*/
FILE *fp; /*文件指针*/
int select; /*保存选择结果变量*/
char ch; /*保存(y,Y,n,N)*/
int count=0; /*保存文件中的记录条数(或结点个数)*/
Node *p,*r; /*定义记录指针变量*/
l=(Node*)malloc(sizeof(Node));
if(!l)
{
printf("\n allocate memory failure "); /*如没有申请到,打印提示信息*/
return ; /*返回主界面*/
}
l->next=NULL;
r=l;
fp=fopen("C:\\student","ab+"); /*以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件*/
if(fp==NULL)
{
printf("\n=====>can not open file!\n");
exit(0);
}
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(!p)
{
printf(" memory malloc failure!\n"); /*没有申请成功*/
exit(0); /*退出*/
}
if(fread(p,sizeof(Node),1,fp)==1) /*一次从文件中读取一条学生成绩记录*/
{
p->next=NULL;
r->next=p;
r=p; /*r指针向后移一个位置*/
count++;
}
}
fclose(fp); /*关闭文件*/
printf("\n=====>open file sucess,the total records number is : %d.\n",count);
menu();
while(1)
{
system("cls");
menu();
p=r;
printf("\n Please Enter your choice(0~9):"); /*显示提示信息*/
scanf("%d",&select);
if(select==0)
{
if(saveflag==1) /*若对链表的数据有修改且未进行存盘操作,则此标志为1*/
{ getchar();
printf("\n=====>Whether save the modified record to file?(y/n):");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("=====>thank you for useness!");
getchar();
break;
}
switch(select)
{
case 1:Add(l);break; /*增加学生记录*/
case 2:Del(l);break; /*删除学生记录*/
case 3:Qur(l);break; /*查询学生记录*/
case 4:Modify(l);break; /*修改学生记录*/
case 5:Insert(l);break; /*插入学生记录*/
case 6:Tongji(l);break; /*统计学生记录*/
case 7:Sort(l);break; /*排序学生记录*/
case 8:Save(l);break; /*保存学生记录*/
case 9:system("cls");Disp(l);break; /*显示学生记录*/
default: Wrong();getchar();break; /*按键有误,必须为数值0-9*/
}
}
}
2)声明模块
函数的声明,以及一些简单的功能实现,这个不好怎么说,自己看注释理解吧!
void print