《C语言课程方案设计书学生信息管理系统2 .docx》由会员分享,可在线阅读,更多相关《C语言课程方案设计书学生信息管理系统2 .docx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习可编辑资料 - - - 欢迎下载精品名师归纳总结同学信息治理系统一. 课程设计目的 :娴熟把握条件语句、循环、数组、函数操作,将本课程所学的学问合理的运用于实践当中。明白一些书上没有的函数及使用方法。为以后的用C 语言乃至其他设计语言解决实际问题打下了一个良好的基础。二. 课程设计的思路及设计过程1. 思路:设计出适合本班同学的同学信息治理系统,可以依据多种查询方式查询班级成员信息。2. 过程:a. 定义所需函数 : void mainvoid mint xvoid putLinkL
2、istpvoid allLinkList head,int xb 然后调用函数。c 通过预先输入同学信息 ,实现可以依据学号 姓名 年龄 性别 查询同学信息。d 快捷启动 ,快捷推出。3.程序流程图如下 :4.课程设计中涉及的知识点 循 环 语 句 : for 语 句 循 环 。for 语句是 C 语言中所供应的功能最强、使用最为灵敏的一种循环语句。特别适用 与 循 环 次 数 固 定 而 循 环 条 件 不 确 定 的 情 况 。for 语 句 最 主 要 的 特 点 是 : 特 别 适 合 已 知 循 环 次 数 的 循 环 语 句 。while语句while 语句可以实现当型循环,通常用
3、于能够确定的循环次数的循环把握。条 件 语 句 : if语 句 。if 语句是 C 语言中的选择结构语句的主要形式,它依据if 语句后面的条件表达式来决定执行过程。数 组 : 一 维 数 组 元 素 的 应 用 、 赋 值 和 越 界 检 查 。一 维 数 组 声 明 的 一 般 形 式 为 :类 型 标 识符数 组 名常 量表 达 式 。可编辑资料 - - - 欢迎下载精品名师归纳总结数组元素是组成数组的基本单元。一维数组赋值的方法有:用赋值语句对数组元素逐个赋值。接受初始化赋值和动态赋值的方法。为了不行防止不行推测的错误发生,在程序中最好仍是加上数组越界检查程序代码,将数组越界的检查范畴加
4、在程序中,就可以确保程序执行的正确性。因此,可以说数组 的边界检验便是 程序员的职责。函数:1)、函数的定义。函数定义的形式1传统的定义形式形类型标识符参函数名(说形参列表)明语句/声*功明能return表部分实现部分*/达式。2现代的定义形式 类型标识符 函数名( 数据类型 形式参数,数据类型 形式参数, )声明部分语 句 / * 功 能 实 现 部 分 * / return表 达 式 。 2)、函数的调用。在函数调用中,对于无参数调用时是没有实际参数列表。实际参数列表中的参数可以是常数、变量或其他构造类型数据及表达式,各是参数之间用逗号分隔。在C语言程序1233)、函中 , 可 以 用 以
5、 下 几 种 方 式 调 用 函 数 : 函数表达式函数语句函数实参数变量的作用域。可编辑资料 - - - 欢迎下载精品名师归纳总结C 语言中全部的变量都有自己的作用域。变量说明的方式不同,其作用域也不同。 C 语言中的变量,按作用域范畴可分为两种,即局部变量和全局变量。局部变量:局部变量也称为内部变量。局部变量是在函数内作定义说明的,其作 用 域 仅 限 于 函 数 内 , 离 开 函 数 后 在 使 用 这 种 变 量 是 非 法 的 。全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义变量的位置开头到当前源文件结束。4
6、) 、 数 组 元 素 作 为 函 数 的 参 数 。假犹如一个源文件中,全局变量与局部变量同名,就在局部变量的作用范畴内全局变量被 “屏蔽”了,即它不起作用。发生函数调用时,把作为实参的数组元素 的 值 传 送 给 形 参 , 实 现 一 一 对 应 、 单 向 的 至 传 递 。5 ) 、 数 组 名 作 为 函 数 的 参 数 。用数组名作为函数参数时,要求形参和相对应的实参都必需是类型相同的数组,都必需有明确的数组说明。数组名实质上就是数组的首的址,因此数组名作函数参数时所进行的传递只是的址的传递。数组名作函数参数时,由于实际上形参和实参共享同一数组,因此当形参变化时,形参和实参共享的
7、数组就发生了变化,即实参也随之变化。4.程序设计如下 :#include stdio.h #include stdlib.h #include conio.h #include string.h #define K 8#define ERROR 0#define OK 1char kmK7 。 /科 目int KM=0 。 /科目数int n =0 。 / 人 数int Y =20 。/每页显示的人数/* 单链表结构 */ typedef struct LNodechar ID 8 。 / 学号char name8 。 /姓名char sex 3 。 /性别char age 4 。 / 年龄可
8、编辑资料 - - - 欢迎下载精品名师归纳总结char cj K6 。 /成果struct LNode*next。*LinkList。LinkList InsertLinkList head。LinkList sortLinkList head,int x。void mint x 。/* 创建一个带头结点的空链表*/LinkList createvoidLinkList L。 L=LinkListmallocsizeofstruct LNode。ifL.=NULLL-next=NULL。return L 。/* 设置科目 :返回科目数 */ int setKMint i=0,kk=KM。cha
9、r x1,s,y1 。ifKM0printf 当前设置 : 。fori=0 。i0printfnn设置科目数 : 。scanf%s,x 。ifatoix=0return KM。whileatoixKsystemcls 。m1。ifKM0printf 输入不合法 . 。fori=0 。i0printfn真的要修改吗 .Y/N 。s=getch。ifs.=y & s.=Yreturn kk。 ifatoixKMdoifKM=0s=y。elseprintfn是否保留原先设置.Y/N 。s=getch。 ifs=y | s=Yfori=KM。 i7getskmi。 else ifs=n | s=Nfo
10、ri=0 。i7getskmi。whiles.=y & s.=Y & s.=n & s.=N。 elsedosystemcls 。m1。printf 当前设置 : 。fori=0 。i0 & atoiy7printf 输入不合法 .n 请重新输入第 %d 门科目名称 :,atoiy 。getskmatoiy-1 。whileatoiyatoix。 return atoix 。/* 读入数据 */ int loadkm int i。FILE*fp。iffp=fopenkm.txt,r+=NULLfp=fopenkm.txt,w+。fori=0 。.feoffp 。i+fgetskmi,7,fp。
11、fscanffp, 。ifstrlenkmi.=0KM+。 fclosefp 。return OK 。LinkList loadLinkList headint i=0,j。LinkList s,t,p。FILE*fp。loadkm 。iffp=fopendata.txt,r+=NULLreturn head。iffgetcfp=EOFsystemcls 。m1。whileKM=0systemcls 。m1。printf 没有资料,请设置资料.n 。KM=setKM 。printfn 。systemcls 。m1 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf 添加数据 :n
12、。Inserthead。return head 。/fseekfp,0L,0 。rewindfp 。p=LinkListmallocsizeofstruct LNode。fscanffp,%s ,p-ID。fgetsp-name,8,fp 。fscanffp,t%s %s ,p-sex,p-age 。fori=0 。icji。fscanffp,n 。fori=KM 。icji,0。p-next=NULL。head-next=p 。while.feoffpp=p-next。p=LinkListmallocsizeofstruct LNode。fscanffp,%s ,p-ID。fgetsp-na
13、me,8,fp 。fscanffp,t%s %s ,p-sex,p-age 。fori=0 。icji。fscanffp,n 。fori=KM 。icji,0。p-next=NULL。i=j=0 。s=head。whileatols-IDID&p-next s=s-next 。i+ 。 s=head。whiles-next&jnext 。j+ 。 t=s-next 。s-next=p 。p-next=t 。s=head 。i=0 。whiles-next s=s-next 。i+ 。n=i 。fclosefp 。return head 。/* 储存文件 */int saveLinkList h
14、ead int i。LinkList p=head-next。FILE*fp,*fpp。iffp=fopendata.txt,w+=NULLreturn ERROR。iffpp=fopenkm.txt,w+=NULLreturn ERROR。可编辑资料 - - - 欢迎下载精品名师归纳总结fori=0 。iID。fori=0 。iID。i+fprintffp, 。fputsp-name,fp 。fori=0 。iname 。i+fprintffp, 。fprintffp, %s %s ,p-sex,p-age。fori=0 。icji。fprintffp,n。p=p-next 。 fclose
15、fp 。fclosefpp 。return OK 。/* 平均成果 */ double pjLinkList p int i。double pj=0 。 fori=0 。icji。pj/=KM。return pj 。/* 排头 */ btint i。printf 学号t 姓名 t 性别 年龄 。fori=0 。iKM 。i+printf%-5s,kmi。printf 平均n 。printf-。ifKM9 fori=0 。iKM+1 。i+printf-。printfn 。 elsefori=0 。iID。printf%st,p-name。printf %s ,p-sex 。printf%3d
16、,atoip-age。fori=0 。icjicji。else printf%-6g,atofp-cji。ifpjp10printf %1.2fn,pjp。else printf%2.2fn,pjp。 int pddchar x,int zint y=strlenx,k,i。ifz=1可编辑资料 - - - 欢迎下载精品名师归纳总结fori=0 。i57|xi7return ERROR 。 ifz=2fori=0 。i57|xinext。int i,j=0 。char a14,a24,t,k1,c16,c26,tmp3,ID18,ID28。double zK=0,zpj=0.0。char n1
17、0,s3 。ifx=0 systemcls 。bt 。whilep putp 。fori=0 。icji。j+ 。ifj%Y=0 ifj.=0 printf-。ifKM8fori=0 。iKM+1 。i+printf-。printfn 。 elsefori=0 。 inext 。 ifx=1printf 按学号搜寻 。printfnn学号范畴 :。scanf%s,ID1 。scanf%s,ID2 。whilepddID1,1=ERROR|pddID2,1=ERRORsystemcls 。m2 。printf 输入错误 . 。printfnn学号范畴 : 。scanf%s,ID1 。scanf%
18、s,ID2 。 ifatolID1atolID2strcpytmp,ID1 。strcpyID1,ID2 。strcpyID2,tmp 。systemcls 。bt 。whilep ifatolID1ID&atolID2=atolp-IDputp 。可编辑资料 - - - 欢迎下载精品名师归纳总结fori=0 。icji。j+ 。ifj%Y=0ifj.=0printf-。ifKM8fori=0 。iKM+1 。i+printf-。printfn 。 elsefori=0 。inext 。ifx=2printf 按姓名搜寻 。printfnn姓名 : 。scanf%s,n 。systemcls
19、。bt 。whilep.=NULLifstrcmpn,p-name=0putp 。fori=0 。icji。j+ 。ifj%Y=0ifj.=0printf-。ifKM8fori=0 。iKM+1 。i+printf-。printfn 。 elsefori=0 。inext 。 ifx=3printf 按年龄搜寻 。printfnn年龄范畴 :。scanf%s,a1 。scanf%s,a2 。whilepdda2,1=ERROR | pdda1,1=ERROR | atoia1100 | atoia2100printf 输入错误 . 。printfnn年龄范畴 : 。scanf%s,a1 。sc
20、anf%s,a2 。ifatofa1atofa2strcpytmp,a1 。strcpya1,a2。可编辑资料 - - - 欢迎下载精品名师归纳总结strcpya2,tmp 。 systemcls 。bt 。whilepifatoip-age=atoia1ifatoip-age=atoia2putp 。fori=0 。icji。j+ 。ifj%Y=0 ifj.=0printf-。ifKM8fori=0 。iKM+1 。i+printf-。printfn。elsefori=0 。inext 。ifx=4printf 按性别搜寻 nn1. 男 2.女nn 性别: 。t=getch 。ift=1st
21、rcpys, 男 。else ift=2strcpys, 女 。else strcpys, 男 。systemcls 。bt 。whilepifstrcmps,p-sex=0putp 。fori=0 。icji。j+ 。ifj%Y=0ifj.=0printf-。ifKM8fori=0 。iKM+1 。i+printf-。printfn 。else可编辑资料 - - - 欢迎下载精品名师归纳总结fori=0 。inext 。ifx=5printf 按成果搜寻 。fori=0 。iKM|atoik=0systemcls 。m2 。printf 超出范畴 . 。fori=0 。i100 | atof
22、c1100printf 输入错误 . 。printfn成果范畴 : 。scanf%s,c1 。scanf%s,c2 。ifatofc1atofc2strcpytmp,c1 。strcpyc1,c2 。strcpyc2,tmp 。systemcls 。bt 。whilepifatofp-cjatoik-1=atofc1ifatofp-cjatoik-1=atofc2可编辑资料 - - - 欢迎下载精品名师归纳总结putp 。fori=0 。icji。j+ 。ifj%Y=0ifj.=0printf-。ifKM8fori=0 。iKM+1 。i+printf-。printfn。elsefori=0
23、。inext 。printf-。ifj0ifKM8fori=0 。iKM+1 。i+printf-。printfn 。elsefori=0 。iKM+1 。i+printf-。printf 共有 %d 人t,j 。printf 平均成果 : 。fori=0 。iKM 。i+zi/=j。ifzinext 。p2=p1-next 。p3=p2-next 。p1-next=NULL。whilep3-nextp2-next=p1 。p1=p2 。p2=p3 。p3=p3-next 。p2-next=p1 。p3-next=p2 。s-next=p3 。head=s 。/判定错误int pdLinkLi
24、st p,int q,int hint i,x,y=0 。ifq=1x=strlenp-age 。fori=0 。iagei57|p-ageicjh 。fori=0 。icjhi=46y+。ifp-cjhi57|p-cjhicjhi=47|y=2return ERROR。return OK 。/* 修改成果 */LinkList editLinkList head,char D8int i=0 。char s,x,z1 。LinkList p=head-next。whileatoip-ID.=atoiDp=p-next 。可编辑资料 - - - 欢迎下载精品名师归纳总结if.pprintf 未
25、找到数据 .n 。getch 。return head 。whilei=0systemcls 。m1 。printf1. 修改基本信息2.修改成果 0.退出 n 请选择 : 。x=getch 。ifx=0return head。else ifx=1systemcls 。m1 。whilex可编辑资料 - - - 欢迎下载精品名师归纳总结age。printfn基本信息 : 1. 姓名 :%s 2.性别 :%s 3.年龄 :%s n 请选择 :,p-name,p-sex,p-x=getch 。ifx=0break 。ifx=1可编辑资料 - - - 欢迎下载精品名师归纳总结printfn输入新的姓
26、名 : 。getsp-name 。getsp-name 。whilepddp-name,1=OK|strlenp-name7printf 输入错误 .n 重新输入姓名 : 。getsp-name 。else ifx=2printfnnt1. 男 2.女nn 请选择 : 。s=getch。ifs=1printf 男。strcpyp-sex, 男。else ifs=2printf 女。strcpyp-sex, 女。else strcpyp-sex, 男。else ifx=3printfn输入新的年龄 : 。scanf%s,p-age 。whileatofp-age.=atoip-age|atofp-ageage100|