

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生信息管理系统一. 课程设计目的:熟练掌握条件语句、循环、数组、函数操作,将本课程所学的知识合理地运用于实践当中。了解一些书上没有的函数及使用方法。为以后的用C 语言乃至其他设计语言解决实际问题打下了一个良好的基础。二. 课程设计的思路及设计过程1. 思路:设计出适合本班同学的同学信息管理系统,可以按照多种查询方式查询班级成员信 息。2. 过程:a.定义所需函数:void main()void m(int x)void put(LinkList p)voidall(LinkList head,int x)b 然后调用函数;c 通过预先输入学生信息,实现可以按照学号 姓名年龄性别查询学生信息;
2、d 快捷启动,快捷推出。3. 程序流程图如下:4.课 程 设 计 中 涉 及 的 知 识 点 循环语句: for 语句循环。for 语句是 C 语言中所提供的功能最强、使用最为灵活的一种循环语句。特别适用与循 环次数固定而循环条件不确定的情况。for 语句最主要的特点是:特别适合已知循环次数的循环语句。while语句while 语句可以实现当型循环,通常用于能够确定的循环次数的循环控制。件语句if语句if 语句是 C 语言中的选择结构语句的主要形式,它根据if 语句后面的条件表达式来决执行过程。数组:一维数组元素的应用、赋值 和越界检查。维数组声明的-一般形式为:型标识符数组名常量表 达 式戋
3、;组元素是组成数 组的基 本单元。一维数组赋值的方法有: 用赋值语句对数组元素逐个赋值; 采用初始化赋值和动态赋值的方法为了不可避免不可预测的错误发生, 在程序中最好还是加上数组越界检查程序代码, 将数组越界的检查范围加在程序中,就可以确保程序执行的正确性。因此,可以说数的边界 检验便是 程序员的职责函数:1)、函数的疋义数疋义的形传统的疋义形类型标 识符函数名 (形参列表参说声明部句/ *功能实现部分*return表达式7现代的疋义形类型标识符 函数名( 数据类型形式参数,数据类型形式参数,声明部句/ *功能实现部分*return表达式7)、函数的调用在函数调用中,对于无参数调用时是没有实际
4、参数列表。实际参数列表中的参数可以是常数、 变量或其他构造类型数据及表达式, 各是参数之间用逗号分隔C 语言程序中,可以用以下几种 方式 弋调用函数函数表达函数语函数实)、函数变量的作用域语言中所有的变量都有自己的作用域。变量说明的i 勺方式不同,其作用域也不同 。语言中的变量, 按作用域范围可分为两种, 即局部变量和全局变量 局部变量:局部变量也称为内部变量。局部变量是在函数内作定义说明的,其作用域 仅限于函数内,离开函数后在使用这种变量是非法的 全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个 函数,它属于一个源程序文件。其作用域是从定义变量的位置开始到当前源文件
5、结 束4)、 数 组 元 素 作 为 函 数 的 参 数如果同一个源文件中, 全局变量与局部变量同名, 则在局部变量的作用范围内全局变 量被屏蔽”了,即它不起作用。发生函数调用时,把作为实参的数组元素的值传送给形 参, 实现一一对应、 单向 的 至传递5)、 数 组 名 作 为 函 数 的 参 数用数组名作为函数参数时, 要求形参和相对应的实参都必须是类型相同的数组,都必 须有明确的数组说明。数组名实质上就是数组的首地址,因此数组名作函数参数时所 进行的传递只是地址的传递。 数组名作函数参数时, 由于实际上形参和实参共享同一 数组,因此当形参变化时,形参和实参共享的数组就发生了变化,即实参也随
6、之变 化。4.程序设计如下:#i nclude stdio.h#i nclude stdlib.h#i nclude co ni o.h#i nclude stri ng.h#defi ne K 8#defi ne ERROR 0#defi ne 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。*L
7、i nkList。Lin kList In sert(L in kList head)。Lin kList sort(L in kList head,i nt x)。void m(int x)。/*创建一个带头结点的空链表*/Lin kList create(void)Lin kList L 。L=(L in kList)malloc(sizeof(struct LNode) 。if(L!=NULL)L-n ext=NULL。return L。/*设置科目:返回科目数*/int setKM()int i=0,kk=KM 。char x1,s,y1。if(KM0)printf(当前设置:)。fo
8、r(i=0。i0)printf(nn 设置科目数:)。scanf(%s,x)。if(atoi(x)=0)return KM。while(atoi(x)K) system(cls)。m(1)。if(KM0)printf(输入不合法!)。 for(i=0。i0)printf(n 真的要修改吗?(Y/N)。s=getch()。if(s!=y & s!=Y)return kk。 if(atoi(x)KM)doif(KM=0)s=y。elseprintf(n 是否保留原来设置?(Y/N)。 s=getch()。 if(s=y |s=Y)for(i=KM。i7)gets(kmi)。else if(
9、s=n | s=N)for(i=0。i7)gets(kmi)。while(s!=y & s!=Y & s!=n & s!=N)。elsedo system(cls)。m(1)。printf(”当前设置:)。for(i=0。i0 & atoi(y)7)printf(输入不合法!n 请重新输入第%d 门科目名称:,atoi(y)。 gets(kmatoi(y)-1)。while(atoi(y)atoi(x)。return atoi(x)。/*读入数据*/int loadkm() int i。FILE*fp。if(fp=fope n(km.txt,r+)=NULL)f
10、p=fope n( km.txt,w+)。for(i=0。!feof(fp)。i+)fgets(kmi,7,fp)。fscanf(fp,)。if(strlen(kmi)!=0)KM+。fclose(fp)。return OK。Lin kList load(L in kList head)int i=0,j 。LinkList s,t,p。FILE*fp。loadkm()。if(fp=fope n( data.txt,r+)=NULL)return head。if(fgetc(fp)=EOF) system(cls)。m(1)。while(KM=0)system(cls)。m(1)。printf
11、(没有资料,请设置资料!n)。KM=setKM()。printf(n)。system(cls)。m(1)。 printf(添加数据:n)。In sert(head)。return head。fseek(fp,0L,0)。rewind(fp)。p=(L in kList)malloc(sizeof(struct LNode)。fscanf(fp,%s ,p-ID)。fgets(p-name,8,fp)。fscanf(fp,t%s %s ,p-sex,p-age)。for(i=0。icji)。fscanf(fp,n)。for(i=KM。icji,O)。p-next=NULL。head-n ext=
12、p。while(!feof(fp)p=p-next。p=(L in kList)malloc(sizeof(struct LNode)。fscanf(fp,%s ,p_ID)。fgets(p-name,8,fp)。fscanf(fp,t%s %s ,p-sex,p-age)。for(i=0。icji)。fscanf(fp,n)。for(i=KM。icji,O)。 p- next=NULL。i=j=0。s=head。while(atol(s-ID)ID)&p- next) s=s-next。i+。s=head。while(s- next&jnext。j+。t=s-next。s-n
13、 ext=p。p-next=t。s=head。i=0。while(s- next) s=s-next。i+。n=i。 fclose(fp)。return head。/*保存文件*/int save(L in kList head) int i。LinkList p=head-next。FILE*fp,*fpp 。if(fp=fopen(data.txt,w+)=NULL)return ERROR。if(fpp=fopen(km.txt,w+)=NULL)return ERROR。for(i=0。iID)。for(i=0。iID)。i+)fprintf(fp,)。fputs(p-name,fp)
14、。for(i=0。iname)。i+)fprintf(fp,)。fprintf(fp, %s %s,p-sex,p-age)。for(i=0。icji)。fprintf(fp,n)。p=p-next。fclose(fp)。fclose(fpp)。return OK。/*平均成绩*/double pj(Lin kList p) int i。double pj=0。for(i=0。icji)。pj/=KM。return pj。/*排头*/bt()int i。printf(学号t 姓名t 性别 年龄)。for(i=0。iKM。i+)printf(%-5s,kmi)。 printf(平均 n)。pri
15、ntf(- )。if(KM9) for(i=0。iKM+1。i+)printf()。printf(n)。elsefor(i=0。iID)。printf(%st,p-name)。printf( %s ,p-sex)。printf(%3d ,atoi(p-age)。for(i=0。icji)cji)。else prin tf(%-6g,atof(p-cji)。if(pj(p)10)pri ntf( %1.2fn,pj(p)。else printf(%2.2fn,pj(p)。int pdd(char x,i nt z) int y=strlen(x),k,i。if(z=1)for(i=0。i57|x
16、i7)returnERROR。if(z=2)for(i=0。i57|xinext。int i,j=0。char a14,a24,t,k1,c1 6 ,c2 6 ,tmp3,ID18,ID28。double zK=0,zpj=0.0。char n10,s3。if(x=0) system(cls)。bt()。 while(p) - put(p)。- for(i=0。icji)。 j+。if(j%Y=0) if(j!=0) printf(”- )。if(KM8)for(i=0。iKM+1。i+)printf()。 printf(n)。elsefor(i=0。inext。if(x=1)printf(按
17、学号搜索)。printf(nn 学号范围:)。scanf(%s,ID1)。scanf(%s,ID2)。while(pdd(ID1,1)=ERR0R|pdd(ID2,1)=ERR0R) system(cls)。m(2)。printf(输入错误!)。printf(nn 学号范围:)。scanf(%s,ID1)。scanf(%s,ID2)。if(atol(ID1)atol(ID2) strcpy(tmp,ID1)。strcpy(ID1,ID2)。strcpy(ID2,tmp)。system(cls)。bt()。while(p) if(atol(ID1)ID) &atol(ID2)=atol(
18、p-ID) put(p)。for(i=0。icji)。 j+。if(j%Y=0)if(j!=0)printf(-)。if(KM8)for(i=0。iKM+1。i+)printf()。 printf(n)。elsefor(i=0。inextoif(x=2)printf(按姓名搜索)。printf(nn 姓名:)。scanf(%s,n)。system(cls)。bt()。while(p!=NULL)if(strcmp(n,p-name)=0)put(p)。for(i=0。icji)。j+。if(j%Y=0)if(j!=0)printf(- )。if(KM8)for(i=0。iKM+1。i+)pri
19、ntf()。printf(n)。elsefor(i=0。inext。if(x=3) printf(按年龄搜索)。printf(nn 年龄范围:)。scanf(%s,a1)。scanf(%s,a2)。while(pdd(a2,1)=ERR0R | pdd(a1,1)=ERR0R | atoi(a1)100 |atoi(a2)100) printf(输入错误!)。printf(nn 年龄范围:)。scanf(%s,a1)。scanf(%s,a2)。if(atof(a1)atof(a2)strcpy(tmp,a1)。strcpy(a1,a2)。strcpy(a2,tmp)。system(cls)。b
20、t()。while(p)if(atoi(p-age)=atoi(a1)if(atoi(p-age)=atoi(a2)put(p)。for(i=0。icji)。j+。if(j%Y=0) if(j!=0)printf(- )。if(KM8)for(i=0。iKM+1。i+)printf()。printf(n)。elsefor(i=0。inext。 if(x=4)printf(”按性别搜索nn 1.男 2女nn 性别:)。 t=getch()。if(t=i)strcpy(s,男)。else if(t=2)strcpy(s,女)。else strcpy(s,男)。system(cls)。bt()。wh
21、ile(p)if(strcmp(s,p-sex)=0)put(p)。for(i=0。icji)。 j+。if(j%Y=0) if(j!=0) printf(-)。if(KM8)for(i=0。iKM+1。i+)printf()。 printf(n)。 elsefor(i=0。inext。 if(x=5)printf(按成绩搜索)。for(i=0。iKM|atoi(k)=0) system(cls)。m(2)。printf(超出范围!)。for(i=0。i100 |atof(c1)100) printf(输入错误!)。printf(n 成绩范围:)。scanf(%s,c1)。scanf(%s,c2)。if(atof(c1)atof(c2)strcpy(tmp,c1)。strcpy(c1,c2)。strcpy(c2,tmp)。system(cls)。bt()。w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 升职转正述职汇报大纲
- 汽车平衡力讲解
- 小学体育项目讲解
- 新概念车祸讲解
- 我的名字深度讲解
- 如何讲好技术交流
- 网络安全机制讲解
- 细胞小学教育体系介绍
- 腰椎间盘突出症的针灸治疗
- 现代植物生产技术
- 出入境检验检疫申请和进出口报关单
- 混凝土局部受压验算计算书
- 大学英语六级词汇表(全)含音标
- 电气设备状态检修技术与现状
- 轧钢厂安全检查表
- 艺术课程标准(2022年版)
- YC/T 199-2006卷烟企业清洁生产评价准则
- YY 0666-2008针尖锋利度和强度试验方法
- GB/T 6663.1-2007直热式负温度系数热敏电阻器第1部分:总规范
- GB/T 5184-1996叉车挂钩型货叉和货叉架安装尺寸
- GB/T 19355.2-2016锌覆盖层钢铁结构防腐蚀的指南和建议第2部分:热浸镀锌
评论
0/150
提交评论