课程设计报告格式Word文档下载推荐.docx
《课程设计报告格式Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《课程设计报告格式Word文档下载推荐.docx(47页珍藏版)》请在冰点文库上搜索。
4、插入模块。
插入一个学生的信息。
5、排序模块。
将表中学生按照考试成绩排列学生。
二、总体设计
1、功能模块设计
(1)主函数执行流程……
(2)输入记录模块……
(3)查询模块……
(4)插入模块……
(5)排序模块……
(6)输出记录模块……
三、数据结构设计
1、学生成绩信息结构体
structstud
{
longnum;
charname[20];
doublescore;
};
2、单链表node结构体
structstucode
structstudstudent;
structstucode*next;
}L;
四、函数功能描述
1.menu()
voidmenu()
printf("
\n学生信息管理系统\n"
);
\n菜单\n\n"
\n1建立链表并显示\n"
\n2查找某学号的学生信息\n"
\n3查找某姓名的学生信息\n"
\n4删除某学号的学生信息\n"
\n5插入新的学生信息\n"
\n6按分数降序排列输出\n"
\n7输出\n"
\n0退出\n"
\n请选择您要执行的选项:
\n"
}
参数含义:
无
2.Createlist
voidcreatelist(structstucode**r)
structstucode*p,*t;
longn;
chara[20];
doubles;
if(*r)*r=NULL;
\n请输入:
\n学号(请按学号升序排列)姓名分数(若要结束请输入三个为零)
scanf("
%ld%s%lf"
&
n,a,&
s);
if(n==0)return;
p=(L*)malloc(sizeof(L));
p->
student.num=n;
strcpy(p->
student.name,a);
student.score=s;
next=NULL;
*r=p;
while(n)
t=p;
t->
next=p;
}
n,学号;
a[20],姓名;
s,分数;
p、t,定义指针变量,使其指向结构体变量stucode
3.Out
voidout(structstucode*r)
\n\n"
if(!
r)
没有学生信息可输出!
return;
while(r)
%ld%s%.2lf\n"
r->
student.num,r->
student.name,r->
student.score);
r=r->
next;
r,结构体变量stucode,所用线性链表
4.search1
voidsearch1(structstucode*r)
longx;
没有学生信息可查询!
请输入要查询的学生信息的学生学号:
%ld"
x);
while(r&
&
r->
student.num!
=x)
if(r==NULL)
Error!
Nosuchstudent!
else
x,定义一个长整形变量,用于储存查找的学生信息;
r,结构体变量stucode,所用线性链表
5.search2
voidsearch2(structstucode*r)
charm[20];
请输入要查询的学生信息的学生姓名:
%s"
m);
strcmp(r->
student.name,m))
m[20],定义一个字符数组型变量,用于储存查找的学生信息;
6.Del
voiddel(structstucode**r)
longk;
structstucode*p=*r,*t;
(*r))
没有学生信息可删除!
请输入要删除的学生信息的学生学号:
k);
if(p->
student.num==k)
*r=(*r)->
next,free(p);
while(p->
next&
next->
=k)
p=p->
next==NULL)
t=p->
next=p->
free(t);
k定义一个长整形变量,用于储存删除的学生信息pt指向结构体变量stucode指针变量,用于储存数据,方便删除r结构体变量stucode,所用线性链表
7.Insert
voidinsert(structstucode**r)
L*p,*t,*k;
请输入要插入的学生信息的学生学号姓名分数:
(*r)->
student.num<
student.num)
next=(*r),(*r)=p;
t=*r;
k=t;
while(t->
=p->
t=t->
next=t->
*r=k;
p、k、t,定义指针变量,使其指向结构体变量stucode
8.Sort
voidsort(structstucode**r)
structstucode*t,*p,*q,*z;
没有学生信息可排序!
(*r)||!
next)
return;
p=t->
while(p)
q=p->
student.score>
student.score)
next=t;
z=t;
while(z->
z->
z=z->
next=z->
p=q;
*r=t;
p、q、t、z,定义指针变量,使其指向结构体变量stucode
9.info_daoru
voidinfo_daoru(structstucode**r)//学生信息导出文件函数
{
FILE*f_info;
//定义一个指向文件的指针变量
f_info=fopen("
info.cpp"
"
r"
//用fopen打开文件info.cpp
structstucode*p,*t;
p=(L*)malloc(sizeof(L));
if(*r)*r=NULL;
printf("
\n\n\t正在导入...\n\n"
if(!
f_info){
printf("
\n\t打开文件失败!
return;
}
fscanf(f_info,"
student.num,&
student.name,&
p->
*r=p;
while(!
feof(f_info)){
t=p;
t->
}//导入数据
fclose(f_info);
//关闭文件
f_info,定义一个指向文件的指针变量;
p,t;
指向structstucode的指针变量,用于储存每一个学生信息。
五、程序实现
五、源代码分析
⑴程序预处理
包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。
#include<
stdio.h>
#include<
stdlib.h>
string.h>
structstud//定义一个结构体变量,结构体中含有学号、姓名、分数
//学号,为长整形
//姓名、为字符型数组
//分数、为双精度型
typedefstructstucode//定义一个结构体变量,结构体中含有学生信息和下一个变量的地址
//结构体变量,包含学生信息
//结构体变量,包含下一个储存单位的地址
voidmenu();
//菜单函数
voidcreatelist(structstucode**r);
voidout(structstucode*r);
//输出函数
voidsearch1(structstucode*r);
//查找函数1
voidsearch2(structstucode*r);
//查找函数2
voiddel(structstucode**r);
//删除函数
voidinsert(structstucode**r);
//插入函数
voidsort(structstucode**r);
//排序函数
voidinfo_daoru(structstucode**r);
//导入函数
voidsearch1(structstucode*r)//定义一个查找函数,根据学生的学号信息来查找
//定义一个长整形变量,用于储存查找的学生信息
//提示输入学生信息,并将元素放到变量x中
//一个一个查找
//若为空了,则显示Error!
//若没为空,则打印出该元素
voidsearch2(structstucode*r)//定义一个查找函数,根据学生的姓名信息来查找
//定义一个字符数组型变量,用于储存查找的学生信息
}//若链表中没有任何学生信息,则显示没有学生信息可查询,并返回出来
//提示输入学生信息,并将元素放到变量m[]中
voiddel(structstucode**r)//定义一个删除函数,根据学生的学号信息来查找
//定义一个长整形变量,用于储存删除的学生信息
}//若链表中没有任何学生信息,则显示没有学生信息可删除,并返回出来
//提示输入学生信息,并将元素放到变量k中
student.num==k)//从第一个开始查找
//若第一个元素就是,则删除此元素
//若不是,则一个一个查找
//若没有,则显示Error!
//若某一个元素就是,则删除此元素
voidinsert(structstucode**r)//定义一个插入函数
//定义各个变量,用于储存信息
//把输入的信息放到p所指的L中
}//如果r所指的L中没有任何元素,则直接放进去
}//比较学号大小,以便放入
}//若链表中没有任何学生信息,则显示没有学生信息可排序,并返回出来
//若链表中只有一个元素,则不用排,直接返回
//比较分数大小,再排序
voidout(structstucode*r)//定义一个输出函数,根据学生的信息来一个一个输出
}//将学生信息一个一个输出
//定义指针变量,使其指向结构体变量stucode
//定义long型变量,用于存放学号
//定义char型变量,用于存放姓名
//定义double型变量,用于存放分数
//将链表中的信息致空
\n学号(请按学号升序排列)姓名分数(若要结束请输入三个为零)\n"
//提示输入学号、姓名、分数
scanf(