您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言课程设计:学生信息管理系统
课程设计说明书NO.1沈阳大学学生信息管理系统一.课程设计目的:熟练掌握条件语句、循环、数组、函数操作,将本课程所学的知识合理地运用于实践当中。了解一些书上没有的函数及使用方法。为以后的用C语言乃至其他设计语言解决实际问题打下了一个良好的基础。二.课程设计的思路及设计过程1.思路:设计出适合本班同学的同学信息管理系统,可以按照多种查询方式查询班级成员信息。2.过程:a.定义所需函数:voidmain()voidm(intx)voidput(LinkListp)voidall(LinkListhead,intx)b然后调用函数;c通过预先输入学生信息,实现可以按照学号姓名年龄性别查询学生信息;d快捷启动,快捷推出。3.程序流程图如下:课程设计说明书NO.2沈阳大学课程设计说明书NO.3沈阳大学4.课程设计中涉及的知识点⑴循环语句:for语句循环。for语句是C语言中所提供的功能最强、使用最为灵活的一种循环语句。特别适用与循环次数固定而循环条件不确定的情况。for语句最主要的特点是:特别适合已知循环次数的循环语句。while语句while语句可以实现当型循环,通常用于能够确定的循环次数的循环控制。条件语句:if语句。if语句是C语言中的选择结构语句的主要形式,它根据if语句后面的条件表达式来决定执行过程。⑵数组:一维数组元素的应用、赋值和越界检查。一维数组声明的一般形式为:类型标识符数组名[常量表达式];数组元素是组成数组的基本单元。一维数组赋值的方法有:用赋值语句对数组元素逐个赋值;采用初始化赋值和动态赋值的方法。为了不可避免不可预测的错误发生,在程序中最好还是加上数组越界检查程序代码,将数组越界的检查范围加在程序中,就可以确保程序执行的正确性。因此,可以说数组的边界检验便是程序员的职责。⑶函数:1)、函数的定义。函数定义的形式1传统的定义形式[类型标识符]函数名([形参列表])形参说明{声明部分语句/*功能实现部分*/[return表达式;]}课程设计说明书NO.4沈阳大学2现代的定义形式[类型标识符]函数名([数据类型形式参数,数据类型形式参数,……]){声明部分语句/*功能实现部分*/[return表达式;]}2)、函数的调用。在函数调用中,对于无参数调用时是没有实际参数列表。实际参数列表中的参数可以是常数、变量或其他构造类型数据及表达式,各是参数之间用逗号分隔。在C语言程序中,可以用以下几种方式调用函数:1函数表达式2函数语句3函数实参3)、函数变量的作用域。C语言中所有的变量都有自己的作用域。变量说明的方式不同,其作用域也不同。C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。局部变量:局部变量也称为内部变量。局部变量是在函数内作定义说明的,其作用域仅限于函数内,离开函数后在使用这种变量是非法的。全局变量:全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义变量的位置开始到当前源文件结束。4)、数组元素作为函数的参数。如果同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内全局变量被“屏蔽”了,即它不起作用。发生函数调用时,把作为实参的数组元素的值传送给形参,实现一一对应、单向的至传递。5)、数组名作为函数的参数。用数组名作为函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明。数组名实质上就是数组的首地址,因此数组名作函数参数时所进行课程设计说明书NO.5沈阳大学的传递只是地址的传递。数组名作函数参数时,由于实际上形参和实参共享同一数组,因此当形参变化时,形参和实参共享的数组就发生了变化,即实参也随之变化。4.程序设计如下:#includestdio.h#includestdlib.h#includeconio.h#includestring.h#defineK8#defineERROR0#defineOK1charkm[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(KM0){printf(当前设置:);for(i=0;iKM;i++){if(i%4==0)printf(\n\n);printf(%d.%-5s,i+1,km[i]);}printf(0-退出最大值:%d,K);}if(KM0){printf(\n\n设置科目数:);scanf(%s,x);if(atoi(x)==0)returnKM;}while(atoi(x)1||atoi(x)K){system(cls);m(1);if(KM0)课程设计说明书NO.6沈阳大学{printf(输入不合法!);for(i=0;iKM;i++){if(i%4==0)printf(\n\n);printf(%d.%-5s,i+1,km[i]);}printf(0-退出最大值:%d,K);}elseprintf(没有资料,请设置资料!\n);printf(\n设置科目数:);scanf(%s,x);if(atoi(x)==0)returnKM;}if(KM0){printf(\n真的要修改吗?(Y/N));s=getch();if(s!='y'&&s!='Y')returnkk;}if(atoi(x)KM){do{if(KM==0)s='y';else{printf(\n是否保留原来设置?(Y/N));s=getch();}if(s=='y'||s=='Y'){for(i=KM;iatoi(x);i++){printf(\n输入第%d门科目名称:,i+1);gets(km[i]);while(strlen(km[i])==0||strlen(km[i])7)gets(km[i]);}}elseif(s=='n'||s=='N'){for(i=0;iatoi(x);i++){printf(\n输入第%d门科目名称:,i+1);gets(km[i]);while(strlen(km[i])==0||strlen(km[i])7)gets(km[i]);}}}while(s!='y'&&s!='Y'&&s!='n'&&s!='N');}else{do{system(cls);m(1);printf(当前设置:);for(i=0;iatoi(x);i++){if(i%4==0)printf(\n\n);printf(%d.%-5s,i+1,km[i]);}printf(\n\n输入需要修改科目的序号:);scanf(%s,y);if(atoi(y)==0)returnkk;if(atoi(y)0&&atoi(y)=atoi(x)){printf(\n输入第%d门科目名称:,atoi(y));gets(km[atoi(y)-1]);gets(km[atoi(y)-1]);while(strlen(km[atoi(y)-1])==0||strlen(km[atoi(y)-1])7){printf(输入不合法!\n请重新输入第%d门科目名称:,atoi(y));gets(km[atoi(y)-1]);}}}while(atoi(y)1||atoi(y)atoi(x));}returnatoi(x);}/*读入数据*/intloadkm(){inti;FILE*fp;课程设计说明书NO.7沈阳大学if((fp=fopen(km.txt,r+))==NULL)fp=fopen(km.txt,w+);for(i=0;!feof(fp);i++){fgets(km[i],7,fp);fscanf(fp,);if(strlen(km[i])!=0)KM++;}fclose(fp);returnOK;}LinkListload(LinkListhead){inti=0,j;LinkLists,t,p;FILE*fp;loadkm();if((fp=fopen(data.txt,r+))==NULL)returnhead;if(fgetc(fp)==EOF){system(cls);m(1);while(KM==0){system(cls);m(1);printf(没有资料,请设置资料!\n);KM=setKM();printf(\n);}system(cls);m(1);printf(添加数据:\n);Insert(head);returnhead;}//fseek(fp,0L,0);rewind(fp);p=(LinkList)malloc(sizeof(structLNode));fscanf(fp,%s,p-ID);fgets(p-name,8,fp);fscanf(fp,\t%s%s,p-sex,p-age);for(i=0;iKM;i++)fscanf(fp,%s,p-cj[i]);fscanf(fp,\n);for(i=KM;iK;i++)strcpy(p-cj[i],0);p-next=NULL;head-next=p;while(!feof(fp)){p=p-next;p=(LinkList)malloc(sizeof(structLNode));fscanf(fp,%s,p-ID);fgets(p-name,8,fp);fscanf(fp,\t%s%s,p-sex,p-age);for(i=0;iKM;i++)fscanf(fp,%s,p-cj[i]);fscanf(fp,\n);for(i=KM;iK;i++)strcpy(p-cj[i],0);p-next=NULL;i=j=0;s=head;while(atol(s-ID)=atol(p-ID)&&p-next){s=s-next;i++;}s=head;while(s-next&&ji){s=s-next;j++;}t=s-next;课程设计说明书NO.8沈阳大学s-next=p;p-next=t;}s=head;i=0;while(s-next){s=s-next;i++;n=i;}fclose(fp);returnhead;}/*保存文件*/intsave(LinkListhead){inti;LinkListp=head-next;FILE*fp,*fpp;if((fp=fopen(data.txt,w+))==NULL)returnERROR;if((fpp=fopen(km.txt,w+))==NULL)returnERROR;for(i=0;iKM;i++){fprintf(fpp,%s,km[i]);fprintf(fpp,);}while(p){fprintf(fp,%s,p-ID);for(i=0;i8-(int)strlen(p-ID);i++)fprintf(fp,);fputs(p-name,fp);for(i=0;i8-(int)strlen(p-name);i++)fprintf(fp,);fprintf(fp,%s%s,p-sex,p-age
本文标题:C语言课程设计:学生信息管理系统
链接地址:https://www.777doc.com/doc-3818348 .html