加载《 学生成绩管理系统c语言实践报告》成功,点击此处阅读
首页 →文档下载

学生成绩管理系统c语言实践报告

以下为《 学生成绩管理系统c语言实践报告》的无排版文字预览,完整内容请下载



《C语言应用》实验报告

题 目

学生成绩管理系统





专业名称

软件工程



班 级

***2



学 号

191355



学生姓名

 孟某某



指导教师

张某某



完成时间

2020.7.2





目 录

第1章 需求分析 3

第2章 总体设计 3

2.1 系统的程序流程图 3

2.2系统的全局变量和常量 3

2.3系统的函数介绍 3

第3章 详细设计 3

3.1 主函数设计 4

3.2 录入函数设计 4

3.3 排序函数设计 4

3.4 显示函数设计 4

3.5 查找函数设计

3.6 保存函数设计

第4章 测试 4

总结 4

参考文献 5

附录 程序源代码 5

需求分析

做一个学生管理系统,包含学生姓名和成绩,可对学生成绩进行排序,并实现由学号查找成绩

总体设计

2.1 系统的程序流程图



2.2系统的全局变量和常量

头文件有,,,

全局变量由n.k

常量有

2.3系统的函数介绍

main()函数:主函数功能主要是让程序选择将要进行的操作,通过menu()函数返回的选项进入其他函数执行。

int menu(int k)函数:此函数显示主菜单容,需要一个int类型变量作为输入要执行的选项并返回给main()函数。

score *creatlink()函数:此函数用于创建链表,为了节省存空间,我们采用malloc()函数为结构体分配动态存空间。另外考虑到学号不可能是0,所以用输入0 的式来判断是否结束输入,将最后的结构体中的指针指向NULL,并返回一个指向链表第一个结构的指针。

void print(score *head)函数:此函数返回值为空,知识为了在stdout流(屏幕)上打印出学生的成绩信息,需要一个指向链表头的指针来逐个向后打印。

score *add(score *head , score *stu)函数:为学生信息中添加新的学生资料,然后重新排序(按学号),并返回头指针。传入函数的head为链表头指针,stu指针指的是要添加的位置。

score *search(score *head)函数:按照学号查找学生信息,需要链表头指针并返回指向被搜索学生的指针。搜索原理就是从头向后面依次检索。

score *dele(score *head)函数:删除指定学生的资料。传入头指针,在函数中创建变量储存要删除学生的学号,然后从头向尾检索,直至找到该学生并将其删除,返回头指针。

score *sortdata(score *head)函数:用于按要求(学号、姓名、单科成绩)排序,最后返回头指针,排序运用老师上课时讲过的冒泡排序法。

int save(score *p1)函数:将链表的数据以文件的形式储存,传入的p1指针一开始指向链表头,随着储存顺序一个一个地向后面指,直到NULL为止。函数部定义一个指向文件的指针*fp,用于写入文件。

score *load(score *head)函数:读取文件数据,head为一个新建的链表头指针,读取文件数据之后令其保存至新建的链表之中,并返回头指针。

score *statistics(score *head)函数:统计成绩,可以统计总分、平均分、最高(低)分,返回操作后的链表首地址(头指针)。

详细设计

按函数,写出函数的原型声明,并画出每个函数的程序流程图。

3.1 主函数设计

int main() {int k;

score *head=0,*stu=0;

while(1)

{

k=menu(k);

switch(k)

{case 1:head=creatlink();break;

case 2: system("CLS");print(head); break;

case 3: head=search (head);break;

case 4: head=add (head,stu);break;

case 5: head=dele (head); break;

case 6: sortdata(head);break;

case 7: save (head);break;

case 8: statistics(head); break;

case 9: head=loadfile(head);break;

case 0:exit(0); default: printf("输入错误,请重试!\n"); }

}

}

3.2 录入函数设计



score *add(score *head,score *stu)

{

score *p0,*p1,*p2,*p3,*max;

int i,j;

float fen;

char t[10];

p3=stu=(score *)malloc(LEN); printf("\n输入要增加的学生的资料!");

repeat4: printf("请输入学生学号(学号应大于0):");

scanf("%d",&stu->number); while(stu->numbernumber);

} if(stu->number==0)

goto end2; / else

{

p3=head;

if(n>0)

{ for(i=0;inumber!=p3->number)

p3=p3->next;

else

{

printf("学号重复,请重输!\n");

goto repeat4; }

}

}

}

printf("输入学生姓名:");

scanf("%s",stu->name); printf("请输入语成.文绩(0~100):");

scanf("%f",&stu->chinese); while(stu->chinesechinese>100)

{ getchar();

printf("输入错误,请重新输入语成.文绩");

scanf("%f",&stu->chinese);

} printf("请输入数学成绩(0~100):");

scanf("%f",&stu->mathmatic); while(stu->mathmaticmathmatic>100)

{

getchar();

printf("输入错误,请重新输入数学成绩");

scanf("%f",&stu->mathmatic);

} printf("请输入英语成绩(0~100):");

scanf("%f",&stu->english); while(stu->englishenglish>100)

{

getchar();

printf("输入错误,请重新输入英语成绩");

scanf("%f",&stu->english);

} p1=head;

p0=stu;

if(head==NULL)

{

head=p0;

p0->next=NULL;

} else {

if(p1->next==NULL) {

p1->next=p0;

p0->next=NULL; /*将它与新开单元相连接*/

}

else

{

while(p1->next!=NULL) {

p2=p1;p1=p1->next;

}

p1->next=p0;

p0->next=NULL;

}

}

n=n+1;

p1=head;

p0=stu;

for(i=1;inumber>p1->number)

{

k=max->number;

max->number=p1->number;

p1->number=k; strcpy(t,max->name);

strcpy(max->name,p1->name);

strcpy(p1->name,t); fen=max->chinese;

max->chinese=p1->chinese;

p1->chinese=fen; fen=max->mathmatic;

max->mathmatic=p1->mathmatic;

p1->mathmatic=fen; fen=max->english;

max->english=p1->english;

p1->english=fen; }

max=head;p1=head ; } end2:

printf("现在的学生数为:%d个!\n",n);

return(head);

}

3.3排序函数设计



score *sortdata(score *head)

{

score *p,*max;

int i,j,x;

float fen;

char t[10];

if(head==NULL)

{

printf("\n没有任学生资料,请先建立链表!\n");

return(head);

} /*链表为空*/

max=p=head;

for(i=0;inumber)

{

k=max->number;

max->number=p->number;

p->number=k;

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

fen=max->chinese;

max->chinese=p->chinese;

p->chinese=fen;

fen=max->mathmatic;

max->mathmatic=p->mathmatic;

p->mathmatic=fen;

fen=max->english;

max->english=p->english;

p->english=fen;

}

}

max=head;

p=head;

}

print(head);

break;

case 2 :

for(i=1;iname,p->name)>0)

{

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

k=max->number;

max->number=p->number;

p->number=k;

fen=max->chinese;

max->chinese=p->chinese;

p->chinese=fen;

fen=max->mathmatic;

max->mathmatic=p->mathmatic;

p->mathmatic=fen;

fen=max->english;

max->english=p->english;

p->english=fen;

}

}

p=head;

max=head;

}

print(head);

break;

case 3 :

for(i=1;ichinese>p->chinese)

{

fen=max->chinese;

max->chinese=p->chinese;

p->chinese=fen;

k=max->number;

max->number=p->number;

p->number=k;

strcpy(t,max->name);

strcpy(max->name,p->name);

strcpy(p->name,t);

fen=max->mathmatic;

max->mathmatic=p->mathmatic;

p->mathmatic=fen;

fen=max->english;

max->english=p->english;

p->english=fen;

}

}

p=head;

max=head;

}

print(head);

break;

case 4 :

for(i=1;imathmatic>p->mathmatic)

{

fen=max->mathmatic;

max->mathmatic=p->mathmatic;

p->mathmat 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 ----\n");

fprintf(fp,"|学号\t|姓名\t|语文\t|数学\t|英语\t|\n");

fprintf(fp,"-----------------------------------------\n");

while(p1!=NULL)

{

fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->chinese,p1->mathmatic,p1->english);

p1=p1->next;

}

fclose(fp);

printf("文件已经保存!\n");

return ;

}

测试

主要进行功能性测试,即验证各个功能模块是否正确运行。

可以采用运行系统进行截图的方法来验证系统结果的正确性。

总结

掌握了更多的知识,收益更多了,拥有一个编程的思维,和一个良好的编程习惯是必不可少的,c的学习正是对我这方面的锻炼和提高

参考文献

附录 程序源代码

[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。

  1. 方程的根与函数的零点教学反思
  2. 函数的单调性教学设计
  3. 方程的根与函数的零点教学反思
  4. 教学设计,函数的单调性
  5. 高中数学必修一:2.1.2指数函数 教学设计
  6. 《对数函数》教学设计
  7. 反比例函数的图象教学设计与反思
  8. 教学设计与反思
  9. 幂函数教学反思
  10. 正弦函数教学反思
  11. 方程的根与函数的零点教学反思
  12. 函数的表示法(1) 教学反思
  13. 函数的表示法(1) 教学反思
  14. 13.2奇偶性教学设计
  15. 函数单调性教学设计
  16. 函数单调性教学设计
  17. 函数的奇偶性教学反思
  18. 教学设计,函数的单调性
  19. 单调性教学设计
  20. 指数函数——教学反思

以上为《 学生成绩管理系统c语言实践报告》的无排版文字预览,完整内容请下载

学生成绩管理系统c语言实践报告由用户“freewindwl”分享发布,转载请注明出处
XXXXX猜你喜欢
回顶部 | 首页 | 电脑版 | 举报反馈 更新时间2021-02-14 05:08:33
if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/8b/0b/29896.html'}ipt>if(location.host!='wap.kao110.com'){location.href='http://wap.kao110.com/html/8b/0b/29896.html'}ipt>