C语言课程方案设计书学生信息管理系统Word文档格式.docx
- 文档编号:1466696
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:43
- 大小:26.03KB
C语言课程方案设计书学生信息管理系统Word文档格式.docx
《C语言课程方案设计书学生信息管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程方案设计书学生信息管理系统Word文档格式.docx(43页珍藏版)》请在冰点文库上搜索。
为了不可避免不可预测的错误发生,在程序中最好还是加上数组越界检查程序代码,将数组越界的检查范围加在程序中,就可以确保程序执行的正确性。
因此,可以说数组的边界检验便是程序员的职责。
⑶函数:
1)、函数的定义。
函数定义的形式
1
传统的定义形式
[类型标识符]函数名([形参列表])
形参说明
{
声明部分
语句/*功能实现部分*/
[return表达式;
]
}
2
现代的定义形式
[类型标识符]
函数名([数据类型形式参数,数据类型形式参数,……])
{声明部分
[return表达式;
2)、函数的调用。
在函数调用中,对于无参数调用时是没有实际参数列表。
实际参数列表中的参数可以是常数、变量或其他构造类型数据及表达式,各是参数之间用逗号分隔。
在C语言程序中,可以用以下几种方式调用函数:
函数表达式
函数语句
3
函数实参
3)、函数变量的作用域。
C语言中所有的变量都有自己的作用域。
变量说明的方式不同,其作用域也不同。
C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。
局部变量:
局部变量也称为内部变量。
局部变量是在函数内作定义说明的,其作用域仅限于函数内,离开函数后在使用这种变量是非法的。
全局变量:
全局变量也称为外部变量,它是在函数外部定义的变量。
它不属于哪一个函数,它属于一个源程序文件。
其作用域是从定义变量的位置开始到当前源文件结束。
4)、数组元素作为函数的参数。
如果同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内全局变量被“屏蔽”了,即它不起作用。
发生函数调用时,把作为实参的数组元素的值传送给形参,实现一一对应、单向的至传递。
5)、数组名作为函数的参数。
用数组名作为函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明。
数组名实质上就是数组的首地址,因此数组名作函数参数时所进行的传递只是地址的传递。
数组名作函数参数时,由于实际上形参和实参共享同一数组,因此当形参变化时,形参和实参共享的数组就发生了变化,即实参也随之变化。
4.程序设计如下:
#include"
stdio.h"
stdlib.h"
conio.h"
string.h"
#defineK8
#defineERROR0
#defineOK1
charkm[K][7]。
//科目
intKM=0。
//科目数
intn=0。
//人数
intY=20。
//每页显示的人数
/*单链表结构*/
typedefstructLNode
{
charID[8]。
//学号
charname[8]。
//姓名
charsex[3]。
//性别
charage[4]。
//年龄
charcj[K][6]。
//成绩
structLNode*next。
}*LinkList。
LinkListInsert(LinkListhead)。
LinkListsort(LinkListhead,intx)。
voidm(intx)。
/*创建一个带头结点的空链表*/
LinkListcreate(void)
{LinkListL。
L=(LinkList)malloc(sizeof(structLNode))。
if(L!
=NULL)L->
next=NULL。
returnL。
/*设置科目:
返回科目数*/
intsetKM()
{inti=0,kk=KM。
charx[1],s,y[1]。
if(KM>
0)
{printf("
当前设置:
"
)。
for(i=0。
i<
KM。
i++)
{if(i%4==0)printf("
\n\n"
printf("
%d.%-5s"
i+1,km[i])。
0-退出最大值:
%d"
K)。
\n\n设置科目数:
scanf("
%s"
x)。
if(atoi(x)==0)returnKM。
while(atoi(x)<
1||atoi(x)>
K)
{system("
cls"
m
(1)。
输入不合法!
}else
没有资料,请设置资料!
\n"
\n设置科目数:
\n真的要修改吗?
(Y/N)"
s=getch()。
if(s!
='
y'
&
&
s!
Y'
)returnkk。
if(atoi(x)>
KM)
{do
{if(KM==0)s='
。
else
\n是否保留原来设置?
if(s=='
||s=='
)
{for(i=KM。
atoi(x)。
\n输入第%d门科目名称:
i+1)。
gets(km[i])。
while(strlen(km[i])==0||strlen(km[i])>
7)gets(km[i])。
}}
elseif(s=='
n'
N'
{for(i=0。
}while(s!
\n\n输入需要修改科目的序号:
y)。
if(atoi(y)==0)returnkk。
if(atoi(y)>
0&
atoi(y)<
=atoi(x))
atoi(y))。
gets(km[atoi(y)-1])。
while(strlen(km[atoi(y)-1])==0||strlen(km[atoi(y)-1])>
7)
\n请重新输入第%d门科目名称:
}while(atoi(y)<
1||atoi(y)>
atoi(x))。
returnatoi(x)。
/*读入数据*/
intloadkm()
{inti。
FILE*fp。
if((fp=fopen("
km.txt"
"
r+"
))==NULL)fp=fopen("
w+"
!
feof(fp)。
{fgets(km[i],7,fp)。
fscanf(fp,"
"
if(strlen(km[i])!
=0)KM++。
fclose(fp)。
returnOK。
LinkListload(LinkListhead)
{inti=0,j。
LinkLists,t,p。
loadkm()。
data.txt"
))==NULL)returnhead。
if(fgetc(fp)==EOF)
while(KM==0)
KM=setKM()。
system("
添加数据:
Insert(head)。
returnhead。
//fseek(fp,0L,0)。
rewind(fp)。
p=(LinkList)malloc(sizeof(structLNode))。
%s"
p->
ID)。
fgets(p->
name,8,fp)。
\t%s%s"
sex,p->
age)。
i++)fscanf(fp,"
cj[i])。
for(i=KM。
K。
i++)strcpy(p->
cj[i],"
0"
p->
head->
next=p。
while(!
feof(fp))
{p=p->
next。
i=j=0。
s=head。
while(atol(s->
ID)<
=atol(p->
ID)&
p->
next)
{s=s->
i++。
}
while(s->
next&
j<
i)
{s=s->
j++。
t=s->
s->
next=t。
s=head。
i=0。
{s=s->
n=i。
/*保存文件*/
intsave(LinkListhead)
LinkListp=head->
FILE*fp,*fpp。
))==NULL)returnERROR。
if((fpp=fopen("
{fprintf(fpp,"
km[i])。
fprintf(fpp,"
while(p)
{
fprintf(fp,"
8-(int)strlen(p->
i++)fprintf(fp,"
fputs(p->
name,fp)。
name)。
%s%s"
p=p->
fclose(fpp)。
/*平均成绩*/
doublepj(LinkListp)
doublepj=0。
pj+=atof(p->
pj/=KM。
returnpj。
/*排头*/
bt()
{inti。
学号\t姓名\t性别年龄"
i++)printf("
%-5s"
平均\n"
-------------------------"
if(KM<
9)
{for(i=0。
KM+1。
------"
/*输出当前指针信息*/
voidput(LinkListp)
%s\t"
%s"
sex)。
%3d"
atoi(p->
age))。
{if(atof(p->
cj[i])<
10)printf("
%-5g"
atof(p->
cj[i]))。
elseprintf("
%-6g"
if(pj(p)<
%1.2f\n"
pj(p))。
%2.2f\n"
intpdd(charx[],intz)
{inty=strlen(x),k,i。
if(z==1)
{for(i=0。
y。
i++)if(x[i]>
57||x[i]<
48)returnERROR。
if(y>
7)returnERROR。
if(z==2)
{if(x[i]==46)k++。
if(x[i]>
46||x[i]==47||k==2)returnERROR。
returnOK。
/*输出信息*/
voidall(LinkListhead,intx)
{LinkListp=head->
inti,j=0。
chara1[4],a2[4],t,k[1],c1[6],c2[6],tmp[3],ID1[8],ID2[8]。
doublez[K]={0},zpj=0.0。
charn[10],s[3]。
if(x==0)
{system("
bt()。
{put(p)。
i++)z[i]+=atof(p->
if(j%Y==0)
{if(j!
=0)
{printf("
8)
按任意键继续"
getch()。
bt()。
if(x==1)
按学号搜索"
\n\n学号范围:
ID1)。
ID2)。
while(pdd(ID1,1)==ERROR||pdd(ID2,1)==ERROR)
{system("
m
(2)。
输入错误!
if(atol(ID1)>
atol(ID2))
{strcpy(tmp,ID1)。
strcpy(ID1,ID2)。
strcpy(ID2,tmp)。
{if(atol(ID1)<
atol(ID2)>
ID))
{put(p)。
{if(j!
}}}
next。
if(x==2)
按姓名搜索"
\n\n姓名:
n)。
while(p!
=NULL)
{if(strcmp(n,p->
name)==0)
if(x==3)
按年龄搜索"
\n\n年龄范围:
a1)。
a2)。
while(pdd(a2,1)==ERROR||pdd(a1,1)==ERROR||atoi(a1)>
100||atoi(a2)>
100)
if(atof(a1)>
atof(a2))
{strcpy(tmp,a1)。
strcpy(a1,a2)。
strcpy(a2,tmp)。
{if(atoi(p->
age)>
=atoi(a1))
age)<
=atoi(a2))
if(x==4)
按性别搜索\n\n1.男2.女\n\n性别:
t=getch()。
if(t=='
1'
)strcpy(s,"
男"
elseif(t=='
2'
女"
elsestrcpy(s,"
if(strcmp(s,p->
sex)==0)
put(p)。
if(j!
els
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程 方案设计 学生 信息管理 系统