ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:26.03KB ,
资源ID:12650335      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12650335.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程方案设计书学生信息管理系统.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课程方案设计书学生信息管理系统.docx

1、C语言课程方案设计书学生信息管理系统封面作者:PanHongliang仅供个人学习 学生信息管理系统一. 课程设计目的:熟练掌握条件语句、循环、数组、函数操作,将本课程所学的知识合理地运用于实践当中。了解一些书上没有的函数及使用方法。为以后的用C语言乃至其他设计语言解决实际问题打下了一个良好的基础。二. 课程设计的思路及设计过程1.思路:设计出适合本班同学的同学信息管理系统,可以按照多种查询方式查询班级成员信息。2.过程:a. 定义所需函数: void main()void m(int x)void put(LinkList p)void all(LinkList head,int x)b 然

2、后调用函数;c通过预先输入学生信息,实现可以按照学号 姓名 年龄 性别 查询学生信息;d 快捷启动,快捷推出。3.程序流程图如下:4. 课程设计中涉及的知识点 循环语句:for语句循环。 for语句是C语言中所提供的功能最强、使用最为灵活的一种循环语句。特别适用与循环次数固定而循环条件不确定的情况。 for语句最主要的特点是:特别适合已知循环次数的循环语句。while语句while语句可以实现当型循环,通常用于能够确定的循环次数的循环控制。条件语句:if语句。if语句是C语言中的选择结构语句的主要形式,它根据if语句后面的条件表达式来决定执行过程。 数组:一维数组元素的应用、赋值和越界检查。

3、一维数组声明的一般形式为: 类型标识符 数组名 常量表达式; 数组元素是组成数组的基本单元。一维数组赋值的方法有:用赋值语句对数组元素逐个赋值;采用初始化赋值和动态赋值的方法。为了不可避免不可预测的错误发生,在程序中最好还是加上数组越界检查程序代码,将数组越界的检查范围加在程序中,就可以确保程序执行的正确性。因此,可以说数组的边界检验便是程序员的职责。函数:1)、函数的定义。函数定义的形式1 传统的定义形式 类型标识符 函数名( 形参列表 )形参说明 声明部分语句 / * 功能实现部分 * / return 表达式;2 现代的定义形式 类型标识符 函数名( 数据类型 形式参数,数据类型 形式参

4、数,) 声明部分语句 / * 功能实现部分 * / return表达式;2)、函数的调用。在函数调用中,对于无参数调用时是没有实际参数列表。实际参数列表中的参数可以是常数、变量或其他构造类型数据及表达式,各是参数之间用逗号分隔。在C语言程序中,可以用以下几种方式调用函数:1 函数表达式2 函数语句3 函数实参3)、函数变量的作用域。C语言中所有的变量都有自己的作用域。变量说明的方式不同,其作用域也不同。C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。局部变量:局部变量也称为内部变量。局部变量是在函数内作定义说明的,其作用域仅限于函数内,离开函数后在使用这种变量是非法的。全局变量:

5、全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义变量的位置开始到当前源文件结束。4)、数组元素作为函数的参数。如果同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内全局变量被“屏蔽”了,即它不起作用。发生函数调用时,把作为实参的数组元素的值传送给形参,实现一一对应、单向的至传递。5)、数组名作为函数的参数。用数组名作为函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明。数组名实质上就是数组的首地址,因此数组名作函数参数时所进行的传递只是地址的传递。数组名作函数参数时,由于实际上形参和实参共享

6、同一数组,因此当形参变化时,形参和实参共享的数组就发生了变化,即实参也随之变化。4.程序设计如下:#include stdio.h#include stdlib.h#include conio.h#include string.h#define K 8 #define ERROR 0 #define OK 1 char kmK7。 /科 目int KM=0 。 /科目数int n =0 。 /人 数int Y =20。 /每页显示的人数/*单链表结构*/typedef struct LNode char ID 8。 /学号 char name8。 /姓名 char sex 3。 /性别 cha

7、r age 4。 /年龄 char cj K6。 /成绩 struct LNode*next 。*LinkList 。LinkList Insert(LinkList head)。LinkList sort(LinkList head,int x)。void m(int x)。/*创建一个带头结点的空链表*/LinkList create(void)LinkList L 。 L=(LinkList)malloc(sizeof(struct LNode)。 if(L!=NULL)L-next=NULL 。 return L 。/*设置科目:返回科目数*/int setKM()int i=0,kk

8、=KM。 char x1,s,y1。 if(KM0) printf(当前设置:)。 for(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。 else printf(n是否保留原来设置?(Y/N)。 s=ge

9、tch()。 if(s=y | s=Y)for(i=KM。i7)gets(kmi)。 else if(s=n | s=N)for(i=0。i7)gets(kmi)。while(s!=y & s!=Y & s!=n & s!=N)。 elsedosystem(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 。

10、 FILE*fp 。 if(fp=fopen(km.txt,r+)=NULL)fp=fopen(km.txt,w+)。 for(i=0。!feof(fp)。i+)fgets(kmi,7,fp)。 fscanf(fp, )。 if(strlen(kmi)!=0)KM+。 fclose(fp)。 return OK 。LinkList load(LinkList head)int i=0,j 。 LinkList s,t,p 。 FILE*fp 。 loadkm()。 if(fp=fopen(data.txt,r+)=NULL)return head 。 if(fgetc(fp)=EOF)syst

11、em(cls)。m(1)。 while(KM=0)system(cls)。m(1)。 printf(没有资料,请设置资料!n)。 KM=setKM()。 printf(n)。 system(cls)。m(1)。 printf(添加数据:n)。 Insert(head)。 return head 。 /fseek(fp,0L,0)。 rewind(fp)。 p=(LinkList)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

12、。icji)。 fscanf(fp,n)。 for(i=KM。icji,0)。 p-next=NULL 。 head-next=p 。 while(!feof(fp)p=p-next 。 p=(LinkList)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,0)。 p-next=NULL 。 i=j=0 。 s=head。 while(atol(s-ID

13、)ID)&p-next) s=s-next 。 i+。 s=head。 while(s-next&jnext 。 j+。 t=s-next 。 s-next=p 。 p-next=t 。 s=head 。 i=0 。 while(s-next) s=s-next 。 i+。 n=i 。 fclose(fp)。 return head 。/*保存文件*/int save(LinkList head) int i 。 LinkList p=head-next 。 FILE*fp,*fpp 。 if(fp=fopen(data.txt,w+)=NULL)return ERROR 。 if(fpp=f

14、open(km.txt,w+)=NULL)return ERROR 。 for(i=0。iID)。 for(i=0。iID)。i+)fprintf(fp, )。 fputs(p-name,fp)。 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(LinkList p) int i 。 double pj=0 。 for(i=

15、0。icji)。 pj/=KM 。 return pj 。/*排头*/bt()int i 。 printf(学号t姓名t性别 年龄 )。 for(i=0。iKM。i+)printf(%-5s,kmi)。 printf(平均n)。 printf(-)。 if(KM9) for(i=0。iKM+1。i+)printf(-)。 printf(n)。 else for(i=0。iID)。 printf(%st,p-name)。 printf( %s ,p-sex)。 printf(%3d ,atoi(p-age)。 for(i=0。icji)cji)。 else printf(%-6g,atof(p-

16、cji)。 if(pj(p)10)printf( %1.2fn,pj(p)。 else printf(%2.2fn,pj(p)。int pdd(char x,int z)int y=strlen(x),k,i。 if(z=1) for(i=0。i57|xi7)return ERROR。 if(z=2) for(i=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。 if(x=0) system(cls)。 bt()。 while(p) pu

17、t(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)。 else for(i=0。inext 。 if(x=1) printf(按学号搜索)。 printf(nn学号范围:)。 scanf(%s,ID1)。 scanf(%s,ID2)。 while(pdd(ID1,1)=ERROR|pdd(ID2,1)=ERROR) system(cls)。m(2)。 printf(输入错误!)。 printf(nn学号范围:)。 scanf(%s,ID1)。 s

18、canf(%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(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)。 else for(i=0。inext。 if(x=2) printf(按姓名搜索)。 pr

19、intf(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+)printf(-)。 printf(n)。 else for(i=0。inext。 if(x=3) printf(按年龄搜索)。 printf(nn年龄范围:)。 scanf(%s,a1)。 scanf(%s,a2)。 while(pdd(a2,1)=ERROR | p

20、dd(a1,1)=ERROR | 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)。bt()。 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(-

21、)。 if(KM8) for(i=0。iKM+1。i+)printf(-)。 printf(n)。 else for(i=0。inext 。 if(x=4) printf(按性别搜索nn 1.男 2.女nn性别:)。 t=getch()。 if(t=1)strcpy(s,男)。 else if(t=2)strcpy(s,女)。 else strcpy(s,男)。 system(cls)。bt()。 while(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)。 els

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1