《2022年C语言学生信息管理.docx》由会员分享,可在线阅读,更多相关《2022年C语言学生信息管理.docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源同学信息治理系统一. 课程设计目的 :娴熟把握条件语句、循环、数组、函数操作,将本课程所学的学问合理地运用于实践当中;明白一些书上没有的函数及使用方法;为以后的用C 语言乃至其他设计语言解决实际问题打下了一个良好的基础;二. 课程设计的思路及设计过程1. 思路:设计出适合本班同学的同学信息治理系统,可以依据多种查询方式查询班级成员信息;2. 过程:a. 定义所需函数 : void mainvoid mint xvoid putLinkList pvoid allLinkList head,int x b 然后调用函数;c 通过预先输入同学信息 ,实现可以依据学号 姓名 年龄 性别
2、查询同学信息;d 快捷启动 ,快捷推出;3.程序流程图如下 :4.课程设计中涉及的知识点循环语句:for语句循环;for 语句是 C 语言中所供应的功能最强、使用最为灵敏的一种循环语句;特别适用与循环 次 数 固 定 而 循 环 条 件 不 确 定 的 情 况 ;for语 句 最 主 要 的 特 点 是 : 特 别 适 合 已 知 循 环 次 数 的 循 环 语 句 ;while语句while语句 可以 实现 当型 循环 , 通 常用 于 能够 确定 的循 环 次 数的 循环 把握 ;条件语句:if语句;if 语句是 C 语言中的选择结构语句的主要形式,它依据if 语句后面的条件表达式来准备执
3、行过程;数 组 : 一 维 数 组 元 素 的 应 用 、 赋 值 和 越 界 检 查 ;一 维 数 组 声 明 的 一 般 形 式 为 :类型 标 识符数 组 名常量 表达 式;数组元素是组成数组的基本单元;一维数组赋值的方法有:用赋值语句对数组元素逐个赋值;接受初始化赋值和动态赋欢迎下载精品学习资源值的方法;为了不行防止不行推测的错误发生,在程序中最好仍是加上数组越界检查程序代码,将数组越界的检查范畴加在程序中,就可以确保程序执行的正确性;因此,可以说数组的边界检验便是程序员的职责;函数:1)、函数的定义;函数定义的形式1传统的定义形式形类型标识符参函数名(说形参列表)明语句/声明部分*功
4、能实现部分*/return表达式;2现代的定义形式 类型标识符函数名(数据类型形式参数,数据类型形式参数,)语句/声*功能明实现部部分分*/return表达式;2)、函数的调用;在函数调用中,对于无参数调用时是没有实际参数列表;实际参数列表中的参数可以是 常 数、 变 量或 其他 构 造 类 型 数 据 及 表达 式, 各 是 参 数之 间 用 逗号 分隔 ;在C语 言 程 序 中 , 可 以 用 以 下 几 种 方 式 调 用 函 数 :1函数表达式2函数语句3函数实参3 ) 、 函 数 变 量 的 作 用 域 ;C 语言中全部的变量都有自己的作用域;变量说明的方式不同,其作用域也不同; C
5、 语 言 中 的 变 量 , 按 作 用 域 范 围 可 分 为 两 种 , 即 局 部 变 量 和 全 局 变 量 ;局部变量:局部变量也称为内部变量;局部变量是在函数内作定义说明的,其作用域仅 限 于 函 数 内 , 离 开 函 数 后 在 使 用 这 种 变 量 是 非 法 的 ;欢迎下载精品学习资源全局变量:全局变量也称为外部变量,它是在函数外部定义的变量;它不属于哪一个函数,它属于一个源程序文件;其作用域是从定义变量的位置开头到当前源文件结束;4 )、数组元素作为函数的参数;假犹如一个源文件中,全局变量与局部变量同名,就在局部变量的作用范畴内全局变 量被“屏蔽”了,即它不起作用;发生
6、函数调用时,把作为实参的数组元素的值传送给形参,实现一一对应、单向的至传递;5 )、数组名作为函数的参数;用数组名作为函数参数时,要求形参和相对应的实参都必需是类型相同的数组,都必须有明确的数组说明;数组名实质上就是数组的首地址,因此数组名作函数参数时所进行的传递只是地址的传递;数组名作函数参数时,由于实际上形参和实参共享同一数组,因此当形参变化时,形参和实参共享的数组就发生了变化,即实参也随之变 化;4.程序设计如下 :#include stdio.h #include stdlib.h #include conio.h #include string.h #define K 8#defin
7、e 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;/年龄char cj K6 ; / 成果struct LNode*next;*LinkList;LinkList InsertLinkList head;LinkList sortLinkList head,int x;void mint x ;
8、/* 创建一个带头结点的空链表*/LinkList createvoidLinkList L;欢迎下载精品学习资源L=LinkListmallocsizeofstruct LNode;ifL.=NULLL-next=NULL;return L ;/* 设置科目 :返回科目数 */ int setKMint i=0,kk=KM;char x1,s,y1 ;ifKM0printf 当前设置 : ;fori=0 ;i0printfnn设置科目数 : ;scanf%s,x ;ifatoix=0return KM;whileatoixKsystemcls ; m1 ;ifKM0printf 输入不合法
9、. ;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=Nfori=0 ;i7getskmi;whiles.=y & s.=Y & s.=n & s.=N;elsedosystemcls ; m1 ;printf 当前设置 : ;欢迎下载精品学习资源fori=0 ;i0 & atoiy7printf输入不合法 .n 请重
10、新输入第 %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;fscanffp, ;ifstrlenkmi.=0KM+; fclosefp ;return OK ;LinkList loadLinkList headint i=0,j;LinkList s,t,p;FILE*fp;loadkm ;if
11、fp=fopendata.txt,r+=NULLreturn head;iffgetcfp=EOFsystemcls ; m1 ;whileKM=0systemcls ; m1 ;printf 没有资料,请设置资料.n ;KM=setKM;printfn ;systemcls ;m1 ;printf 添加数据 :n ;Inserthead;return head ;/fseekfp,0L,0 ;rewindfp ;p=LinkListmallocsizeofstruct LNode;fscanffp,%s ,p-ID;fgetsp-name,8,fp ;fscanffp,t%s %s ,p-s
12、ex,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-name,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=
13、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 head int i;LinkList p=head-next;FILE*fp,*fpp;iffp=fopendata.txt,w+=NULLreturn ERROR;iffpp=fopenkm.txt,w+=NULLreturn ERROR;fori=0 ;i
14、ID;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 ; fclosefp ;fclosefpp ;return OK ;/* 平均成果 */欢迎下载精品学习资源double pjLinkList p int i;double pj=0 ;fori=0 ;icji;pj/=KM;return pj ;/* 排头 */ btint i;printf 学号 t 姓名 t 性别
15、年龄 ;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 ,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
16、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 n10,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 按学号搜
17、寻 ;printfnn学号范畴 : ;scanf%s,ID1 ;scanf%s,ID2 ;whilepddID1,1=ERROR|pddID2,1=ERRORsystemcls ;m2;printf 输入错误 . ;printfnn学号范畴 : ;scanf%s,ID1 ;scanf%s,ID2 ; ifatolID1atolID2strcpytmp,ID1 ;strcpyID1,ID2 ;strcpyID2,tmp ;systemcls ;bt ;whilep ifatolID1ID&atolID2=atolp-IDputp ;fori=0 ;icji;j+ ;ifj%Y=0ifj.=0pr
18、intf-;ifKM8fori=0 ; iKM+1 ;i+printf-;printfn; elsefori=0 ;inext ;ifx=2printf 按姓名搜寻 ;printfnn姓名 : ;scanf%s,n ;systemcls ;bt ;whilep.=NULLifstrcmpn,p-name=0欢迎下载精品学习资源putp ;fori=0 ;icji;j+ ;ifj%Y=0ifj.=0printf-;ifKM8fori=0 ;iKM+1 ;i+printf-;printfn; elsefori=0 ;inext ;ifx=3printf 按年龄搜寻 ;printfnn年龄范畴 :
19、;scanf%s,a1 ;scanf%s,a2 ;whilepdda2,1=ERROR | pdda1,1=ERROR | atoia1100 | atoia2100printf 输入错误 . ;printfnn年龄范畴 : ;scanf%s,a1 ;scanf%s,a2 ;ifatofa1atofa2strcpytmp,a1 ;strcpya1,a2 ;strcpya2,tmp ;systemcls ;bt ;whilepifatoip-age=atoia1ifatoip-age=atoia2putp ;fori=0 ;icji;j+ ;ifj%Y=0 ifj.=0printf-;ifKM8
20、fori=0 ;iKM+1 ; i+printf-;printfn;elsefori=0 ;inext ;ifx=4printf 按性别搜寻 nn1. 男 2.女nn 性别 : ;t=getch ;ift=1strcpys,男;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;elsefori=0 ;inext ;ifx=5prin
21、tf 按成果搜寻 ;fori=0 ;iKM|atoik=0systemcls ; m2;printf 超出范畴 . ;fori=0 ; i100 | atofc1100printf 输入错误 . ;printfn成果范畴 :;scanf%s,c1 ;scanf%s,c2 ;ifatofc1atofc2strcpytmp,c1 ;strcpyc1,c2 ;strcpyc2,tmp ;systemcls ;bt ;whilepifatofp-cjatoik-1=atofc1ifatofp-cjatoik-1=atofc2putp ;fori=0 ;icji;j+ ;ifj%Y=0ifj.=0pri
22、ntf-;ifKM8fori=0 ;iKM+1 ; i+printf-;printfn;elsefori=0 ;inext ;printf-;ifj0欢迎下载精品学习资源ifKM8fori=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
23、-next ;p2-next=p1 ;p3-next=p2 ;s-next=p3 ;head=s ;/判定错误int pdLinkList 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
24、=head-next;whileatoip-ID.=atoiDp=p-next ;if.pprintf 未找到数据 .n ;getch;return head ;whilei=0systemcls ;m1 ;printf1. 修改基本信息2.修改成果 0.退出 n 请选择 : ;x=getch ;ifx=0return head;else ifx=1systemcls ; m1;whilexprintfn基本信息 : 1.姓名 :%s 2.性别 :%s 3.年龄 :%s n 请选择 :,p-name,p-sex,p-age ;x=getch ;ifx=0break ;ifx=1printfn输
25、入新的姓名 :;getsp-name ;getsp-name;whilepddp-name,1=OK|strlenp-name7printf 输入错误 .n 重新输入姓名 : ;getsp-name ;else ifx=2欢迎下载精品学习资源printfnnt1. 男 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.
26、=atoip-age|atofp-ageage100|pdp,1,0=ERRORprintf 输入错误,重新输入年龄: ;scanf%s,p-age ;ifx=1|x=2|x=3printfn修改成功 _ ;getch ;break ;continue ;else ifx=2systemcls ; m1;printf 科目设置 :n ;fori=0 ; icji;printfnn选择序号 : ;scanf%s,z ;ifatoiz=0continue;whileatoizKM | atoizcjatoiz-1;whileatofp-cjatoiz-1cjatoiz-1100|pdp,2,atoiz-1=ERRORprintf 输入错误,请重新输入 %s 成果 :,kmatoiz-1 ;欢迎下载精品学习资源scanf%s,p-cjatoiz-1;system