欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C课程设计报告(学生信息管理系统).doc

    • 资源ID:78770269       资源大小:585KB        全文页数:23页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C课程设计报告(学生信息管理系统).doc

    课 程 设 计 报 告课程名称 C语言程序设计 课题名称 学生信息管理系统 专 业 电气工程及其自动化 班 级 1086班 学 号 2 姓 名 周铁 指导教师 彭祯 刘琤 郭芳 2011年 6 月 20 日湖南工程学院课 程 设 计 任 务 书课程名称 C课程设计课 题 学生信息管理系统 专业班级 电气1086班 学生姓名 周铁 学 号 2 指导老师 彭祯 刘琤 郭芳 审 批 任务书下达日期 2011 年 6 月 20 日任务完成日期 2011 年 7 月 1 日目录一、题目总体介绍4二、需求分析5三、总体设计61、现行系统组织结构图:62、数据结构分析63、工作原理等6三、详细设计6四系统调试与结果分析19六、总结22七、附件22参考文献23一、题目总体介绍(一)、课程设计题目:学生信息管理(二)、课程设计内容与主要功能:设计与开发一个学生信息管理系统,对学生的学号、姓名、性别、年龄等基本信息进行管理、主要功能如下: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、现行系统组织结构图:开始选择菜单序号8按学号显示记录7读文件6保存记录5插入记录4删除记录9按姓名排序0退出3查找记录2显示记录1输入记录把当前学生信息拷贝到后一条1?按要求逐步输入学生信息2?保存?学号查询输入学生信息姓名查找保存退出2、数据结构分析使用整型,双精度,字符型定义变量和函数。使用结构体,类等概念实现数据存储。同时也是用这些自定义类型定义了变量和函数。体现面向对象设计的特点。3、工作原理等系统功能结构图:主程序菜单程序初始化程序按姓名排序退出按学号显示记录读文件删除记录查找记录显示记录保存记录插入记录输入记录四、详细设计1、类设计类:student 数据成员学号,姓名,性别,年龄 类:school成员函数输入记录函数enter ():输入编号到计算机中;显示记录函数list():显示全部输入的内容,如学号、姓名、性别、年龄等;按姓名查找显示记录函数search ():按学号或姓名查找学生的信息;删除记录函数delete():删除指定学号学生信息;插入记录函数add():插入指定学号学生信息;记录保存为文件函数save():将学生信息保存为文件函数;从文件中读记录函数load():从文件中读出学生信息;按序号查找显示记录函数display():按序号查找学生信息;按姓名排序函数sort():按学生姓名排序;文件复制函数copy():将文件复制;显示单条记录函数print(STUDENTS temp);显示单条学生信息;查找函数find(STUDENTS t,int n,char *s):查找学生信息;输出函数menu_select():输出学生信息;五系统调试与结果分析1、初始目录:2、输入数据:3、显示所有记录:4、查找记录:5、删除记录:6、插入记录:7、按姓名排序8、复制信息9、按序号排序2.系统运行的结果: 设计特点和不足之处:系统整体清晰明了,功能基本齐全,但系统中报错功能不完整,当学号等信息输入数字等时不出现报错,可设置提醒重新输入。六、总结1、在做了课程实验以后,我对C语言的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了!但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解2、作了学生学生信息管理系统程序后,我对数据类型、函数、指针、结构体更加熟悉了,作为C语言所特有得指针、结构体和对象再编写程序得过程中运用十分广泛,我还必须多加练习才能达到一个更高的水平,结构体和对象、指针都是非常重要的。3、这次实训是彭祯老师给了很大引导,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到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;/*年龄*/ STUDENTS; /*以下是函数原型*/ int enter(STUDENTS t); /*输入记录*/ void list(STUDENTS t,int n); /*显示记录*/ void search(STUDENTS t,int n); /*按姓名查找显示记录*/ int delete(STUDENTS t,int n); /*删除记录*/ int add(STUDENTS t,int n); /*插入记录*/ void save(STUDENTS t,int n); /*记录保存为文件*/int load(STUDENTS t); /*从文件中读记录*/ void display(STUDENTS t); /*按序号查找显示记录*/ void sort(STUDENTS t,int n); /*按姓名排序*/ void copy(); /*文件复制*/ void print(STUDENTS temp); /*显示单条记录*/ int find(STUDENTS t,int n,char *s) ; /*查找函数*/ int menu_select(); /*主菜单函数*/ /*主函数开始*/ main() STUDENTS stuM; /*定义结构体数组*/ int length; /*保存记录长度*/ clrscr(); /*清屏*/ for(;)/*无限循环*/ switch(menu_select() /*调用主菜单函数,返回值整数作开关语句的条件*/ case 0:length=enter(stu);break;/*输入记录*/ case 1:list(stu,length);break; /*显示全部记录*/ case 2:search(stu,length);break; /*查找记录*/ case 3:length=delete(stu,length);break; /*删除记录*/ case 4:length=add(stu,length); break; /*插入记录*/ case 5:save(stu,length);break; /*保存文件*/ case 6:length=load(stu); break; /*读文件*/ case 7:display(stu);break; /*按序号显示记录*/ case 8:sort(stu,length);break; /*按姓名排序*/ case 9:copy();break; /*复制文件*/ case 10:exit(0); /*如返回值为11则程序结束*/ /*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select() char s80; int c; gotoxy(1,25);/*将光标定为在第25行,第1列*/ printf("press any key enter menu.n");/*提示压任意键继续*/ getch(); /*读入任意字符*/ clrscr(); /*清屏*/ gotoxy(1,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(" 6. Load the filen"); printf(" 7. display record on ordern"); printf(" 8. sort to make new filen"); printf(" 9. copy the file to new filen"); printf(" 10. Quitn"); printf("*n"); do printf("n Enter you choice(010):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/ c=atoi(s); /*将输入的字符串转化为整型数*/ while(c<0|c>10); /*选择项不在011之间重输*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/ /*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enter(STUDENTS t) int i,n; char *s; clrscr(); /*清屏*/ printf("nplease input num n"); /*提示信息*/ scanf("%d",&n); /*输入记录数*/ printf("please input record n"); /*提示输入记录*/ printf("no name sex agen"); 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 list(STUDENTS t,int n) int i; clrscr(); printf("nn*STUDENTS*n"); printf("no name sex agen"); printf("-n"); for(i=0;i<n;i+) printf("%-20s%-20s%-10s%-10dn",ti.no,ti.name,ti.sex,ti.age); if(i+1)%10=0) /*判断输出是否达到10条记录*/ printf("Press any key continue.n"); /*提示信息*/ getch(); /*压任意键继续*/ printf("*end*n"); /*查找记录*/ void search(STUDENTS t,int n) char s20; /*保存待查找姓名字符串*/ int i; /*保存查找到结点的序号*/ clrscr(); /*清屏*/ printf("please search namen"); scanf("%s",s); /*输入待查找姓名*/ i=find(t,n,s); /*调用find函数,得到一个整数*/ if(i>n-1) /*如果整数i值大于n-1,说明没找到*/ printf("not foundn"); else print(ti); /*找到,调用显示函数显示记录*/ /*显示指定的一条记录*/ void print(STUDENTS temp) clrscr(); printf("nn*n"); printf("no name sex agen"); printf("-n"); printf("%-20s%-20s%-10s%-10dn",temp.no,temp.name,temp.sex,temp.age); printf("*end*n"); /*查找函数,参数为记录数组和记录条数以及姓名s */ int find(STUDENTS t,int n,char *s) int i; for(i=0;i<n;i+)/*从第一条记录开始,直到最后一条*/ if(strcmp(s,ti.name)=0)/*记录中的姓名和待比较的姓名是否相等*/ return i; /*相等,则返回该记录的下标号,程序提前结结束*/ return i; /*返回i值*/ /*删除函数,参数为记录数组和记录条数*/ int delete(STUDENTS t,int n) char s20; /*要删除记录的姓名*/ int ch=0; int i,j; printf("please deleted namen"); /*提示信息*/ scanf("%s",s);/*输入姓名*/ i=find(t,n,s); /*调用find函数*/ for(;i<n;i+) strcpy(ti.name,ti+1.name); strcpy(ti.no,ti+1.no); strcpy(ti.sex,ti+1.sex); ti.age=ti+1.age; n-; return n; /*返回记录数*/ /*插入记录函数,参数为结构体数组和记录数*/ int add(STUDENTS t,int n)/*插入函数,参数为结构体数组和记录数*/ STUDENTS temp; /*新插入记录信息*/ int i,j; char s20; /*确定插入在哪个记录之前*/ printf("please input recordn"); printf("*n"); printf("no name sex agen"); 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=find(t,n,s); /*调用find,确定插入位置*/ for(j=n-1;j>=i;j-) /*从最后一个结点开始向后移动一条*/ strcpy(tj+1.no,tj.no); /*当前记录的学号拷贝到后一条*/ strcpy(tj+1.name,tj.name); /*当前记录的姓名拷贝到后一条*/ strcpy(tj+1.sex,tj.sex); /*当前记录的性别拷贝到后一条*/ tj+1.age=tj.age; /*当前记录的年龄拷贝到后一条*/ strcpy(ti.no,temp.no); /*将新插入记录的学号拷贝到第i个位置*/ strcpy(ti.name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/ strcpy(ti.sex,temp.sex); /*将新插入记录的性别拷贝到第i个位置*/ ti.age = temp.age; /*将新插入记录的年龄拷贝到第i个位置*/ n+; /*记录数加1*/ return n; /*返回记录数*/ /*保存函数,参数为结构体数组和记录数*/ void save(STUDENTS t,int n) int i; FILE *fp; /*指向文件的指针*/ if(fp=fopen("record.txt","wb")=NULL) /*打开文件,并判断打开是否正常*/ printf("can not open filen");/*没打开*/ exit(1); /*退出*/ printf("nSaving filen"); /*输出提示信息*/ fprintf(fp,"%d",n); /*将记录数写入文件*/ fprintf(fp,"rn"); /*将换行符号写入文件*/ for(i=0;i<n;i+) fprintf(fp,"%-20s%-30s%-10s%-10d",ti.no,ti.name,ti.sex,ti.age);/*格式写入记录*/ fprintf(fp,"rn"); /*将换行符号写入文件*/ fclose(fp);/*关闭文件*/ printf("*save success*n"); /*显示保存成功*/ /*读入函数,参数为结构体数组*/ int load(STUDENTS t) int i,n; FILE *fp; /*指向文件的指针*/ if(fp=fopen("record.txt","rb")=NULL)/*打开文件*/ printf("can not open filen"); /*不能打开*/ exit(1); /*退出*/ fscanf(fp,"%d",&n); /*读入记录数*/ for(i=0;i<n;i+) fscanf(fp,"%20s%30s%10s%10d",ti.no,ti.name,ti.sex,&ti.age); /*按格式读入记录*/ fclose(fp); /*关闭文件*/ printf("You have success read data from file!n"); /*显示保存成功*/ return n; /*返回记录数*/ /*按序号显示记录函数*/ void display(STUDENTS t) int id,n; FILE *fp; /*指向文件的指针*/ if(fp=fopen("record.txt","rb")=NULL) /*打开文件*/ printf("can not open filen"); /*不能打开文件*/ exit(1); /*退出*/ printf("Enter order number.n"); /*显示信息*/ scanf("%d",&id); /*输入序号*/ fscanf(fp,"%d",&n); /*从文件读入记录数*/ if(id>=0&&id<n) /*判断序号是否在记录范围内*/ fseek(fp,(id-1)*sizeof(STUDENTS),1); /*移动文件指针到该记录位置*/ print(tid); /*调用输出函数显示该记录*/ printf("rn"); else printf("no %d number record!n ",id); /*如果序号不合理显示信息*/ fclose(fp); /*关闭文件*/ /*排序函数,参数为结构体数组和记录数*/ void sort(STUDENTS t,int n) int i,j,flag; STUDENTS temp; /*临时变量做交换数据用*/ for(i=0;i<n;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j<n-1;j+) if(strcmp(tj.name,tj+1.name)>0) /*比较大小*/ temp=tj; tj=tj+1;tj+1=temp; flag+; if(flag=0)break; /*如果标志为0,说明没有发生过交换循环结束*/ printf("sort sucess!n"); /*显示排序成功*/ /*复制文件*/ void copy() char outfile20; /*目标文件名*/ int i,n; STUDENTS tempM; /*定义临时变量*/ FILE *sfp,*tfp; /*定义指向文件的指针*/ clrscr();/*清屏*/ if(sfp=fopen("record.txt","rb")=NULL) /*打开记录文件*/ printf("can not open filen"); /*显示不能打开文件信息*/ exit(1); /*退出*/ printf("Enter outfile name,for example c:f1te.txt:n"); /*提示信息*/ scanf("%s",outfile); /*输入目标文件名*/ if(tfp=fopen(outfile,"wb")=NULL) /*打开目标文件*/ printf("can not open filen"); /*显示不能打开文件信息*/ exit(1); /*退出*/ fscanf(sfp,"%d",&n); /*读出文件记录数*/ fprintf(tfp,"%d",n);/*写入目标文件数*/ fprintf(tfp,"rn"); /*写入换行符*/ for(i=0;i<n;i+) fscanf(sfp,"%20s%30s%10s%10dn",tempi.no,tempi.name,tempi.sex,&tempi.age); /*读入记录*/ fprintf(tfp,"%-20s%-30s%-10s%-10dn",tempi.no,tempi.name,tempi.sex,tempi.age); /*写入记录*/ fprintf(tfp,"rn"); /*写入换行符*/ fclose(sfp); /*关闭源文件*/ fclose(tfp); /*关闭目标文件*/ printf("you have success copy file!n"); /*显示复制成功*/ 参考文献1贾宗璞 许合利C语言程序设计,人民邮电出版社,2010年9月出版2谭浩强编,C程序设计,清华大学出版社,2005年7月出版应用技术学院课程设计评分表课程名称: 学生信息管理 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:

    注意事项

    本文(C课程设计报告(学生信息管理系统).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开