您好,欢迎访问三七文档
淮海工学院计算机工程学院课程设计报告设计名称:C语言课程设计设计时间:2015年7月2日设计地点:计算机工程学院机房、教室、学生宿舍、图书馆指导教师评语:签名:年月日成绩:C语言课程设计报告第2页,共16页1.课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C程序设计》课程后进行的一次全面的综合练习。本课程设计的目的和任务:(1)巩固和加深学生对C课程的基本知识的理解和掌握;(2)掌握C编程和程序调试的基本技能;(3)利用C进行简单软件设计的基本思路和方法;(4)提高运用C解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。本次课程设计利用《C程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,使学生能够独立完成所布置的任务。2.课程设计任务与要求:要求:1)设计题目、设计要求以及系统功能需求分析;2)总体设计:包括模块说明、模块结构图和系统流程图;3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4)源程序代码及设计成果:完整源程序清单和设计成果;5)总结:调试分析过程描述:包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C和本次课程设计的认识等内容.;任务:对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。功能要求:(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。(2)本系统显示这样的菜单:请选择系统功能项:1)学生基本信息录入2)学生基本信息显示3)学生基本信息保存4)学生基本信息删除5)学生基本信息修改(要求先输入密码)6)学生基本信息查询:a)按学号查询;b)按姓名查询;c)按性别查询;d)按年龄查询7)退出系统(3)执行一个具体的功能之后,程序将重新显示菜单。(4)将学生基本信息保存到文件中。(5)进入系统之前要先输入密码。C语言课程设计报告第3页,共16页3.课程设计说明书概要设计:一、功能模块结构图:信息的删除班级档案管理系统进入菜单信息的录入信息的显示信息的保存信息的修改退出系统学生信息查询按学号查询按姓名查询按性别查询按年龄查询C语言课程设计报告第4页,共16页二、模块介绍主函数:voidmain()录入函数:voidGetInfo()显示函数voidDisplay()保存函数voidSave()删除函数voidDelete()修改函数voidModfiy()查询函数voidSearch()输出函数:voidprint()1.GetInfo()是录入函数,主要是录入学生的基本信息。2.Display()是显示函数,就是把学生的基本信息显示在电脑上。3.Save()是保存函数,就是在把学生基本信息的保存下来。4.Delete()是删除函数,把不要的信息删除。5.Modfiy()是修改函数,修改错误的学生基本信息。6.print()是输出函数。整个系统除了主函数外,另外还有14个函数,实现七大功能:录入功能、显示功能、保存功能、删除功能、修改功能、查询功能、退出系统功能。各个函数的详细设计说明分别如下:(1)主函数main()利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。(2)菜单选择函数intmenu_select()这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,返回菜单。(3代码设计:初始化函数STUDENT*init()这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head的值为NULL和一个清屏语句。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!(4)输入记录函数STUDENT*create()这是一个无参函数,用来执行学生档案记录的输入,当学生为@时停止输入,函数结束后,带回一个链表头的指针指向一下个学生的信息插在表头。(5)显示记录函数voidprint(STUDENT*head)这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。C语言课程设计报告第5页,共16页三、程序流程图:开始学生信息录入退出系统修改完毕输入密码信息的查询信息的修改按学号查询信息的保存信息的删除信息的显示按学号查询按学号查询按学号查询退出查询C语言课程设计报告第6页,共16页程序源代码:#includestdio.h#includestdlib.h#includestring.h#includeconio.h#defineN10//测试数据学生人数为10个structstudent//设定一个内容为学生信息的结构体{charname[10];//名字的长度允许最大为十charno[11];//学号的长度允许最大为十charsex;intage;//定义年龄为整型charbnote[100];//备注的长度为允许最大100};voidprint(boolmenu)//打印基本信息{if(!menu)//主菜单{printf(\t\t\t(欢迎使用本班级档案管理系统)\t\t\t\t\n);printf(****************************欢迎进入我们的系统******************************\n\n);printf(学生基本信息录入,press1\n);}else{printf(学生基本信息显示,press2\n);printf(学生基本信息保存,press3\n);printf(学生基本信息删除,press4\n);printf(学生基本信息修改,press5\n);printf(学生基本信息查询,press6\n);}printf(退出学生信息系统,press7\n);}boolCheck(charpas[6])//密码验证{FILE*fp;//文件类型指针型变量charch;chara[7]={};inti=0;C语言课程设计报告第7页,共16页if((fp=fopen(c:\\1.txt,r))==NULL)//在C盘中建立文件名为1.txt的文档来存放密码{printf(打开文件失败!\n);exit(0);}ch=fgetc(fp);while(ch!=EOF&&i6)//循环控制{a[i]=ch;ch=fgetc(fp);i++;//自加1}a[6]='\0';//正常结束的标志if(!strcmp(pas,a)){returntrue;}else{printf(密码错误\n);returnfalse;}fclose(fp);//关闭一个流,原型是intfclose(FILE*stream)stream为流指针,返回EOF时表示出错。}voidGetInfo(structstudent*arr,intn)//学生基本信息录入{for(inti=0;in;i++)//循环控制{printf(输入学生的基本信息:namenosexagebnote\n);scanf(%s%s%c%d%s,arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);}}voidDisplay(structstudent*arr,intn)//学生基本信息显示{printf(学生信息:namenosexagebnote\n);for(inti=0;in;i++)//循环控制{C语言课程设计报告第8页,共16页printf(%15s%18s%10c%15d%18s\n,arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);}}voidSave(structstudent*arr,intn)//学生基本信息保存,保存在c:\\student.txt{FILE*fp;fp=fopen(c:\\student.txt,w+);if(fp==NULL){printf(文件不存在!\n);exit(0);}fwrite(arr,sizeof(structstudent)*n,n,fp);fclose(fp);}voidModfiy(structstudent*arr,intn)//学生基本信息修改{charnumber[10];boolflag=false;charpass[6];printf(请输入密码:\n);scanf(%s,pass);if(Check(pass)){printf(请输入修改学生学号:\n);scanf(%s,number);for(inti=0;in;i++){if(!strcmp(number,arr[i].no)){printf(学生信息:namenosexagebnote\n);printf(%15s%18s%10c%15d%18s\n,arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);printf(请输入新的信息:\n);scanf(%s%s%c%d%s,arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);Save(arr,n);flag=true;//设置标志}}if(flag==false)//判断标志C语言课程设计报告第9页,共16页{printf(该学生不存在!:\n);}}}voidDelete(structstudent*arr,intn)//学生基本信息删除{charnumber[10];boolflag=false;printf(请输入要删除的学生学号:\n);scanf(%s,number);for(inti=0;in;i++){if(!strcmp(number,arr[i].no)){strcpy(arr[i].name,);strcpy(arr[i].no,);strcpy(arr[i].bnote,);arr[i].sex='';arr[i].age=0;Save(arr,n);flag=true;}}if(flag==true){printf(该学生信息已删除!:\n\n\n);}}voidSearch(structstudent*arr,intn)//学生基本信息查询{inttemp,i;boolflag=false;printf(==============================================\n);printf(通过学号查询,press1\n);printf(通过姓名查询,press2\n);printf(通过性别查询,press3\n);printf(通过年龄查询,press4\n);printf(退出,press5\n);printf(==============================================\n);scanf(%d,&temp);C语言课程设计报告第10页,共16页switch(temp){case1://按照学号查询{charnum[10];printf(请输入学号:\n);scanf(%s,num);for(i=0;in;i++)//循环控制{if(!strcmp(num,arr[i].no)){printf(%15s%18s%10c%15d%18s\n,arr[i].
本文标题:C语言课程设计
链接地址:https://www.777doc.com/doc-5539009 .html