C课程方案设计书报告3 .docx
精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习可编辑资料 - - - 欢迎下载精品名师归纳总结课 程 设 计 报 告课程名称 C 语言程序设计课题名称同学信息治理系统专 业电气工程及其自动化班 级 1086 班学 号 202113010632姓名周铁指导老师彭祯刘琤 郭芳2021 年 6 月 20 日湖南工程学院 课 程 设 计 任 务 书课程名称 C 课程设计课 题 同学信息治理系统专业班级 电气 1086 班同学姓名 周铁学 号 202113010632指导老师 彭祯 刘琤 郭芳审 批任务书下达日期 2021 年 6 月 20 日任务完成日期2021 年 7 月 1 日目录一、题目总体介绍 错误!未定义书签。二、需求分析 5三、总体设计 61、现行系统组织结构图: 6可编辑资料 - - - 欢迎下载精品名师归纳总结2、数据结构分析 63、工作原理等 7三、详细设计 6四系统调试与结果分析8六、总结 8七、附件 8参考文献 20一、题目总体介绍(一)、课程设计题目 :同学信息治理(二) 、课程设计内容与主要功能:设计与开发一个同学信息治理系统,对同学的学号、姓名、性别、年龄等基本信息进行治理、主要功能如下:1)输入记录2)显示全部记录3)查找记录4)删除记录5)插入记录6)储存文件7)读文件8)按学号显示记录9)按姓名排序(三)、目的与要求:1、目的:(1) 要求同学达到娴熟把握 C语言的基本学问和技能。(2) 基本把握 C语言程序设计的基本思路和方法。可编辑资料 - - - 欢迎下载精品名师归纳总结(3) 能够利用所学的基本学问和技能,解决简洁的C 语言程序设计问题。2、基本要求:1) 设计正确,方案合理。2) 界面友好,使用便利。3) 程序精炼,结构清晰。3、创新要求:在基本要求达到后,可进行创新设计,如依据查找结果进行修改的功能。4、写出设计说明书(四)、设计方法和基本原理:1、问题描述(功能要求):(1) )能够从屏幕上读取一个同学的信息并将信息存入到数据文件中。(2) )能够将指定的信息从文件中删除。(3) )能够按学号、姓名、性别、年龄对同学的信息进行检索并将检索结果显示在屏幕上。(4) )假如检索不到相应的信息应提示用户。2、问题的解决方案:依据系统功能要求,可以将问题解决分为以下步骤:(1) )写出需求分析(做什么)。(2) )分析系统中的各个实体之间的关系及其属性和行为。(3) )依据问题描述,设计系统的类层次。(4) )完成类层次中各个类的描述(包括属性和方法)。(5) )完成类中各个成员函数的定义。(6) )用户界面的设计。(7) )分析系统功能模块(系统流程图)。(8) )代码编写,功能调试。(9) )完成系统总结报告以及系统使用说明书。二、需求分析(1) )能够从屏幕上读取一个同学的信息并将信息存入到数据文件中。(2) )能够将指定的信息从文件中删除。可编辑资料 - - - 欢迎下载精品名师归纳总结(3) )能够按学号、姓名、性别、年龄对同学的信息进行检索并将检索结果显示在屏幕上。(7)假如检索不到相应的信息应提示用户。三、总体设计1、现行系统组织结构图:开头选择菜单序号可编辑资料 - - - 欢迎下载精品名师归纳总结1234567890输显查删插保读按按退入示找除入存文学姓出记记记记记记件号名要 求录录1 ?录把 当 前 学录录显排按逐 步 输入 学 生信息录2?学号查询生 信 息 拷贝 到 后 一条示序记录储存?可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结姓名查找输入同学信息储存可编辑资料 - - - 欢迎下载精品名师归纳总结退出2、数据结构分析使用整型,双精度,字符型定义变量和函数。使用结构体,类等概念实现数据储备。同时也是用这些自定义类型定义了变量和函数。表达面对对象设计的特点。可编辑资料 - - - 欢迎下载精品名师归纳总结3、工作原理等可编辑资料 - - - 欢迎下载精品名师归纳总结系统功能结构图:主程序可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结初始化程序输显四、详细设计入示记记录录1、类设计类: student数据成员菜单程序查删插找除入记记记录录录保 读 按 按 退存 文 学 姓 出记 件 号 名录显 排示 序记录可编辑资料 - - - 欢迎下载精品名师归纳总结学号,姓名,性别,年龄类: school成员函数输入记录函数 enter:输入编号到运算机中。显示记录函数list :显示全部输入的内容,如学号、姓名、性别、年龄等。按姓名查找显示记录函数 search:按学号或姓名查找同学的信息。删除记录函数 delete:删除指定学号同学信息。 插入记录函数 add:插入指定学号同学信息。记录储存为文件函数 save:将同学信息储存为文件函数。从文件中读记录函数 load:从文件中读出同学信息。按序号查找显示记录函数 display:按序号查找同学信息。 按姓名排序函数 sort:按同学姓名排序。文件复制函数 copy:将文件复制。显示单条记录函数 printSTUDENTS temp。显示单条同学信息。 查找函数 findSTUDENTS t,int n,char *s :查找同学信息。输出函数 menu_select:输出同学信息。可编辑资料 - - - 欢迎下载精品名师归纳总结五系统调试与结果分析1、初始目录:2、输入数据:3、显示全部记录:4、查找记录:5、删除记录:6、插入记录:7、按姓名排序8、复制信息9、按序号排序2. 系统运行的结果:设计特点和不足之处:系统整体清晰明白,功能基本齐全,但系统中报错功能不完整,当学号等信息输入数字等时不显现报错,可设置提示重新输入。六、总结1、在做了课程试验以后,我对 C语言的明白更深了,许多学问得到了巩固,一些不懂的学问也渐渐明白!但从C 语言这门课程开头,已发觉程序设计的乐趣,在学习C 语言的过程中也学到了许多运算机应用基础学问,对计算机的机体也有了一个大体的明白3、这次实训是彭祯老师给了很大引导,经过自己的改写,实现要求。先做简洁的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误仍会有意外的收成,感觉实训很有意思。在详细操作中对这学期所学的 C 语言的理论学问得到巩固,达到实训的基本目的,也发觉自己的不足之出,在以后的上机中应更加留意,同时体会到C 语言具有的语句简洁,使用灵敏,执行效率高等特点。发觉上机实训的2、作了同学同学信息治理系统程序后,我对数据类型、函数、指针、结构体更加熟识了,作为 C语言所特有得指针、结构体和对象再编写程序得过程中运用特殊广泛,我仍必需多加练习才能达到一个更高的水平,结构体和对象、指针都是特殊重要的。可编辑资料 - - - 欢迎下载精品名师归纳总结重要作用,特殊是对数组和循环有了深刻的懂得。4、在完完整整的做完一个课程试验后,我对程序的整体性有了一个明确的熟识,做一个程序必需要留意程序前后的联系,要具有清晰的思路,程序要具有层次。对整体性的把握至关重要!5、学习运算机语言,最重要的就是上机操作,我深感自己动手才能比较差,在以后的学习中,仍必需多多上机调试程序,从实践中多积存体会,为以后学习和工作打下坚实的基础。七、附件/*头文件( .h ) */ #include <stdio.h>/*I/O函数*/ #include <stdlib.h> /*标准库函数 */ #include <string.h>/*字符串函数 */ #include <ctype.h>/*字符操作函数 */#define M 50 /*定义常数表示记录数 */typedef struct /*定义数据结构 */char no20。/* 学号*/ char name20。 /* 姓名*/ char sex5。/* 性别*/int age。/* 年龄*/STUDENT。S/*以下是函数原型 */int enterSTUDENTS t。 /*输入记录 */void listSTUDENTS t,int n。 /* 显示记录 */void searchSTUDENTS t,int nint deleteSTUDENTS t,int n。 /* 按姓名查找显示记录。 /* 删除记录 */*/int addSTUDENTS t,int nvoid saveSTUDENTS t,int n。 /* 插入记录 */。 /* 记录储存为文件 */int loadSTUDENTS t。 /*从文件中读记录 */void displaySTUDENTS t。 /* 按序号查找显示记录 */可编辑资料 - - - 欢迎下载精品名师归纳总结void sortSTUDENTS t,int n。 /* 按姓名排序 */ void copy。 /*文件复制 */void printSTUDENTS temp。 /* 显示单条记录 */int findSTUDENTS t,int n,char *s。 /* 查找函数 */ int menu_select。 /*主菜单函数 */*主函数开头 */ mainSTUDENTS stuM 。 /*定义结构体数组 */ int length。 /*储存记录长度 */clrscr。 /*清屏*/for。/* 无限循环 */switchmenu_select/*调用主菜单函数,返回值整数作开关语句的条件 */case 0:length=enterstu。break 。/* 输入记录 */ case 1:liststu,length。break 。 /* 显示全部记录 */ case 2:searchstu,length。break 。 /* 查找记录 */case 3:length=deletestu,length。break 。 /* 删除记录 */ case 4:length=addstu,length。 break 。 /*插入记录 */ case 5:savestu,length。break 。 /* 储存文件 */case 6:length=loadstu。 break 。 /* 读文件 */ case 7:displaystu。break 。 /*按序号显示记录 */ case 8:sortstu,length。break 。 /* 按姓名排序 */ case 9:copy。break 。 /* 复制文件 */case 10:exit0。 /* 如返回值为 11 就程序终止 */* 菜单函数,函数返回值为整数,代表所选的菜单项*/可编辑资料 - - - 欢迎下载精品名师归纳总结menu_selectchar s80。int c。gotoxy1,25。/* 将光标定为在第 25 行,第 1 列*/printf"press any key enter menu.n"。/* 提示压任意键连续 */ getch。 /* 读入任意字符 */clrscr。 /* 清屏*/gotoxy1,1。printf"*MENU*nn"。printf"0. Enter recordn"。printf"1. List the filen"。printf"2. Search record on namen"。printf"3. Delete a recordn"。 printf"4. add record n"。printf"5. Save the filen"。printf" printf"printf"6. Load the filen"7. display record on ordern"8. sort to make new filen"。printf"printf"9. copy the file to new filen"10. Quitn"。printf"*n"。doprintf"nEnter you choice010:"。 /* 提示输入选项 */ scanf"%s",s。 /* 输入选择项 */c=atois。 /* 将输入的字符串转化为整型数 */whilec<0|c>10。 /* 选择项不在 011 之间重输 */return c。 /* 返回选择项,主程序依据该数调用相应的函数*/*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enterSTUDENTS t可编辑资料 - - - 欢迎下载精品名师归纳总结int i,n。char *s。clrscr。 /* 清屏*/printf"nplease input num n"。 /* 提示信息 */ scanf"%d",&n。 /* 输入记录数 */printf"please input record n"。 /* 提示输入记录 */printf"nonamesexagen"。printf"-n"。for i=0。i<n 。i+scanf"%s",ti.no。scanf"%s",ti.name。scanf"%s",ti.sex。scanf"%d",&ti.age。return n。 /*返回记录条数 */* 显示记录,参数为记录数组和记录条数 */ void listSTUDENTS t,int nint i。clrscr。printf"nn*STUDENTS*n"。printf"nonamesexagen"。printf"-n"。fori=0。i<n 。i+ printf"%-20s%-20s%-10s%-10dn",ti.no,ti.name,ti.sex,ti.age。ifi+1%10=0/*判定输出是否达到 10 条记录 */可编辑资料 - - - 欢迎下载精品名师归纳总结printf"Press any key continue.n"。 /* 提示信息 */ getch。 /*压任意键连续 */printf"*end*n"。/* 查找记录 */void searchSTUDENTS t,int nchar s20。 /*储存待查找姓名字符串 */ int i。 /*储存查找到结点的序号 */ clrscr。 /*清屏*/printf"please search namen"。scanf"%s",s。 /* 输入待查找姓名 */i=findt,n,s。 /* 调用 find函数,得到一个整数 */ ifi>n-1 /*假如整数 i 值大于 n-1 ,说明没找到 */printf"not foundn"。elseprintti。 /*找到,调用显示函数显示记录 */* 显示指定的一条记录 */ void printSTUDENTS tempclrscr。printf"nn*n"。printf"nonamesexagen"。printf"-n"。printf"%-20s%-20s%-10s%- 10dn",temp.no,temp.name,temp.sex,temp.age。printf"*end*n"。/* 查找函数,参数为记录数组和记录条数以及姓名s */可编辑资料 - - - 欢迎下载精品名师归纳总结int findSTUDENTS t,int n,char *sint i。fori=0。i<n 。i+/*从第一条记录开头,直到最终一条 */ifstrcmps,ti.name=0/*记录中的姓名和待比较的姓名是否相等*/return i。 /*相等,就返回该记录的下标号,程序提前结终止*/return i。 /*返回 i 值*/* 删除函数,参数为记录数组和记录条数 */ int deleteSTUDENTS t,int nchar s20。 /*要删除记录的姓名 */ int ch=0。int i,j。printf"please deleted namen"。 /* 提示信息 */ scanf"%s",s。/* 输入姓名 */i=findt,n,s。 /* 调用 find函数*/ for。i<n 。i+strcpyti.name,ti+1.name。strcpyti.no,ti+1.no。strcpyti.sex,ti+1.sex。ti.age=ti+1.age。n-。return n。 /*返回记录数 */* 插入记录函数,参数为结构体数组和记录数*/可编辑资料 - - - 欢迎下载精品名师归纳总结int addSTUDENTS t,int n/*插入函数,参数为结构体数组和记录数*/STUDENTS temp。 /*新插入记录信息 */ int i,j。char s20。 /* 确定插入在哪个记录之前 */ printf"please input recordn"。printf"*n"printf"nonamesexagen"。printf"n"。scanf"%s%s%s%d",temp.no,temp.name,temp.sex,&temp.age入信息 */。 /*输入插printf"n"。printf"please input locate name n"。scanf"%s",s。 /* 输入插入位置的姓名 */ i=findt,n,s。 /*调用 find ,确定插入位置 */forj=n-1。j>=i 。j-/*从最终一个结点开头向后移动一条 */strcpytj+1.no,tj.no。 /* 当前记录的学号拷贝到后一条 */ strcpytj+1.name,tj.name。 /*当前记录的姓名拷贝到后一条*/strcpytj+1.sex,tj.sex。 /* 当前记录的性别拷贝到后一条 */ tj+1.age=tj.age。 /* 当前记录的年龄拷贝到后一条 */strcpyti.no,temp.no。 /* 将新插入记录的学号拷贝到第 i 个位置 */ strcpyti.name,temp.name。 /* 将新插入记录的姓名拷贝到第i 个位置*/strcpyti.sex,temp.sex。 /* 将新插入记录的性别拷贝到第 i 个位置 */ ti.age = temp.age。 /* 将新插入记录的年龄拷贝到第 i 个位置 */n+ 。 /*记录数加 1*/ return n。 /* 返回记录数 */可编辑资料 - - - 欢迎下载精品名师归纳总结/* 储存函数,参数为结构体数组和记录数 */ void saveSTUDENTS t,int nint i。FILE *fp。 /*指向文件的指针 */iffp=fopen"record.txt","wb"=NULL /*打开文件,并判定打开是否正常 */printf"can not open filen"。/* 没打开 */ exit1。 /*退出*/printf"nSaving filen"。 /* 输出提示信息 */fprintffp,"%d",n。 /*将记录数写入文件 */fprintffp,"rn"。 /*将换行符号写入文件*/fori=0。i<n 。i+fprintffp,"%-20s%-30s%-10s%- 10d",ti.no,ti.name,ti.sex,ti.age。/* 格式写入记录 */fprintffp,"rn"。 /* 将换行符号写入文件 */fclosefp。/* 关闭文件 */printf"*save success*n"。 /* 显示储存成功 */* 读入函数,参数为结构体数组 */ int loadSTUDENTS tint i,n。FILE *fp。 /* 指向文件的指针 */ iffp=fopen"record.txt","rb"=NULL/*打开文件 */printf"can not open filen"。 /*不能打开 */可编辑资料 - - - 欢迎下载精品名师归纳总结exit1。 /*退出*/fscanffp,"%d",&n。 /* 读入记录数 */ fori=0。i<n 。i+fscanffp,"%20s%30s%10s%10d",ti.no,ti.name,ti.sex,&ti.age。/* 按格式读入记录 */fclosefp。 /*关闭文件 */printf"You have success read data from file.n"。 /* 显示储存成功*/return n。 /* 返回记录数 */* 按序号显示记录函数 */ void displaySTUDENTS tint id,n。FILE *fp。 /* 指向文件的指针 */ iffp=fopen"record.txt","rb"=NULL /*打开文件 */printf"can not open filen"。 /* 不能打开文件 */ exit1。 /*退出*/printf"Enter order number.n"。 /* 显示信息 */ scanf"%d",&id。 /*输入序号 */fscanffp,"%d",&n。 /* 从文件读入记录数 */ ifid>=0&&id<n /*判定序号是否在记录范畴内 */fseekfp,id-1*sizeofSTUDENTS,1。 /*移动文件指针到该记录位置*/printtid。 /* 调用输出函数显示该记录 */ printf"rn"。可编辑资料 - - - 欢迎下载精品名师归纳总结elseprintf"no %d number record.n ",id。 /*假如序号不合理显示信息*/fclosefp。 /*关闭文件 */* 排序函数,参数为结构体数组和记录数 */ void sortSTUDENTS t,int nint i,j,flag。STUDENTS temp。 /* 临时变量做交换数据用 */ fori=0。i<n 。i+flag=0。 /*设标志判定是否发生过交换 */ forj=0。j<n-1 。j+ifstrcmptj.name,tj+1.name>0 /*比较大小 */temp=tj。 tj=tj+1。tj+1=temp。flag+。ifflag=0break。 /*假如标志为0,说明没有发生过交换循环终止*/printf"sort sucess.n"。 /* 显示排序成功 */* 复制文件 */ void copychar outfile20。 /* 目标文件名 */ int i,n。STUDENTS tempM。 /*定义临时变量 */可编辑资料 - - - 欢迎下载精品名师归纳总结FILE *sfp,*tfp。 /* 定义指向文件的指针 */ clrscr。/* 清屏*/ifsfp=fopen"record.txt","rb"=NULL /*打开记录文件 */printf"can not open filen"。 /* 显示不能打开文件信息 */ exit1。 /* 退出*/printf"Enter outfile name,for example c:f1te.txt:n"。 /*提示信息 */scanf"%s",outfile。 /* 输入目标文件名 */ iftfp=fopenoutfile,"wb"=NULL /*打开目标文件 */printf"can not open filen"。 /* 显示不能打开文件信息 */ exit1。 /* 退出*/fscanfsfp,"%d",&n。 /* 读出文件记录数 */ fprintftfp,"%d",n。/* 写入目标文件数 */ fprintftfp,"rn"。 /* 写入换行符 */ fori=0。i<n 。i+fscanfsfp,"%20s%30s%10s%10dn",tempi.no,tempi.name,tempi.sex,& tempi.age。 /* 读入记录 */fprintftfp,"%-20s%-30s%-10s%-10dn",tempi.no,tempi.name,tempi.sex,tempi.age。 /*写入记录*/fprintftfp,"rn"。 /* 写入换行符 */fclosesfp。 /* 关闭源文件 */ fclosetfp。 /* 关闭目标文件 */printf"you have success copy file.n"。 /* 显示复制成功 */可编辑资料 - - - 欢迎下载精品名师归纳总结参考文献1贾宗璞 许合利 C 语言程序设计,人民邮电出版社, 2021 年 9 月出版2谭浩强编, C 程序设计,清华高校出版社, 2005 年 7 月出版应用技术学院课程设计评分表课程名称:同学信息治理项目评价设计方案的合理性与制造性设计与调试结果设计说明书的质量答辩陈述与回答疑题情形课程设计周表现情形综合成果老师签名:日期:版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人全部This article includes some parts, including text,pictures, and design. Copyright is Pan Hongliang's personal可编辑资料 - - - 欢迎下载精品名师归纳总结ownership.用户可将本文的内容或服务用于个人学习、争论或观看,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵害本网站及相关权益人的合法权益。除此以 外,将本文任何内容或服务用于其他用途时,须征得本人及相关权益人的书面许可,并支付酬劳。Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必需是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修 改,并自负版权等法律责任。Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the可编辑资料 - - - 欢迎下载精品名师归纳总结use of n