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

上传人:痛*** 文档编号:171154474 上传时间:2022-11-24 格式:DOC 页数:23 大小:585KB
收藏 版权申诉 举报 下载
C课程设计报告(学生信息管理系统)_第1页
第1页 / 共23页
C课程设计报告(学生信息管理系统)_第2页
第2页 / 共23页
C课程设计报告(学生信息管理系统)_第3页
第3页 / 共23页
资源描述:

《C课程设计报告(学生信息管理系统)》由会员分享,可在线阅读,更多相关《C课程设计报告(学生信息管理系统)(23页珍藏版)》请在装配图网上搜索。

1、课 程 设 计 报 告课程名称 C语言程序设计 课题名称 学生信息管理系统 专 业 电气工程及其自动化 班 级 1086班 学 号 2 姓 名 周铁 指导教师 彭祯 刘琤 郭芳 2011年 6 月 20 日湖南工程学院课 程 设 计 任 务 书课程名称 C课程设计课 题 学生信息管理系统 专业班级 电气1086班 学生姓名 周铁 学 号 2 指导老师 彭祯 刘琤 郭芳 审 批 任务书下达日期 2011 年 6 月 20 日任务完成日期 2011 年 7 月 1 日目录一、题目总体介绍4二、需求分析5三、总体设计61、现行系统组织结构图:62、数据结构分析63、工作原理等6三、详细设计6四系统调

2、试与结果分析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)程序精炼,结构清晰。3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (四)、设计方法和基本原理: 1、问题描述(功能要求): (1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。(2)能够将指定的信息从文件中删除。(3)能够按学号、姓名、性别、年龄对学生的信息进行检索并将检索结果显示在屏幕上。(4)如果检索不到相应的信息应提示用户。 2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)写出需求分析(做什么);(2)分析系统中的各个实体之间的关系及其属性和行为; (3)根据问题描述,设计系统

4、的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)用户界面的设计; (7)分析系统功能模块(系统流程图);(8)代码编写,功能调试;(9)完成系统总结报告以及系统使用说明书。二、需求分析(1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。(2)能够将指定的信息从文件中删除。(3)能够按学号、姓名、性别、年龄对学生的信息进行检索并将检索结果显示在屏幕上。(7)如果检索不到相应的信息应提示用户。三、总体设计1、现行系统组织结构图:开始选择菜单序号8按学号显示记录7读文件6保存记录5插入记录4删除记录9按姓名排序0退出3查找记录2显示

5、记录1输入记录把当前学生信息拷贝到后一条1?按要求逐步输入学生信息2?保存?学号查询输入学生信息姓名查找保存退出2、数据结构分析使用整型,双精度,字符型定义变量和函数。使用结构体,类等概念实现数据存储。同时也是用这些自定义类型定义了变量和函数。体现面向对象设计的特点。3、工作原理等系统功能结构图:主程序菜单程序初始化程序按姓名排序退出按学号显示记录读文件删除记录查找记录显示记录保存记录插入记录输入记录四、详细设计1、类设计类:student 数据成员学号,姓名,性别,年龄 类:school成员函数输入记录函数enter ():输入编号到计算机中;显示记录函数list():显示全部输入的内容,如

6、学号、姓名、性别、年龄等;按姓名查找显示记录函数search ():按学号或姓名查找学生的信息;删除记录函数delete():删除指定学号学生信息;插入记录函数add():插入指定学号学生信息;记录保存为文件函数save():将学生信息保存为文件函数;从文件中读记录函数load():从文件中读出学生信息;按序号查找显示记录函数display():按序号查找学生信息;按姓名排序函数sort():按学生姓名排序;文件复制函数copy():将文件复制;显示单条记录函数print(STUDENTS temp);显示单条学生信息;查找函数find(STUDENTS t,int n,char *s):查找

7、学生信息;输出函数menu_select():输出学生信息;五系统调试与结果分析1、初始目录:2、输入数据:3、显示所有记录:4、查找记录:5、删除记录:6、插入记录:7、按姓名排序8、复制信息9、按序号排序2.系统运行的结果: 设计特点和不足之处:系统整体清晰明了,功能基本齐全,但系统中报错功能不完整,当学号等信息输入数字等时不出现报错,可设置提醒重新输入。六、总结1、在做了课程实验以后,我对C语言的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了!但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解2、

8、作了学生学生信息管理系统程序后,我对数据类型、函数、指针、结构体更加熟悉了,作为C语言所特有得指针、结构体和对象再编写程序得过程中运用十分广泛,我还必须多加练习才能达到一个更高的水平,结构体和对象、指针都是非常重要的。3、这次实训是彭祯老师给了很大引导,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和

9、循环有了深刻的理解。 4、在完完整整的做完一个课程实验后,我对程序的整体性有了一个明确的认识,做一个程序必须要注意程序前后的联系,要具有清晰的思路,程序要具有层次。对整体性的把握至关重要!5、学习计算机语言,最重要的就是上机操作,我深感自己动手能力比较差,在以后的学习中,还必须多多上机调试程序,从实践中多积累经验,为以后学习和工作打下坚实的基础。七、附件/*头文件(.h)*/ #include /*I/O函数*/ #include /*标准库函数*/ #include /*字符串函数*/ #include /*字符操作函数*/ #define M 50 /*定义常数表示记录数*/ typede

10、f 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); /*插入记录*/

11、 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(); /*主菜单函数*/ /*主函数开始*/ m

12、ain() 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; /

13、*删除记录*/ 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则程序结束*/ /*菜单函数,函数返回值为整数,代表所选的

14、菜单项*/ 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 reco

15、rdn); 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); /*输入选

16、择项*/ c=atoi(s); /*将输入的字符串转化为整型数*/ while(c10); /*选择项不在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

17、(no name sex agen); printf(-n); for (i=0;in;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;in-1) /*如果整数i值大于n-1,说明

18、没找到*/ 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,c

19、har *s) int i; for(i=0;in;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);/*输入姓名*

20、/ i=find(t,n,s); /*调用find函数*/ for(;i=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); /

21、*将新插入记录的姓名拷贝到第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)

22、;/*没打开*/ exit(1); /*退出*/ printf(nSaving filen); /*输出提示信息*/ fprintf(fp,%d,n); /*将记录数写入文件*/ fprintf(fp,rn); /*将换行符号写入文件*/ for(i=0;in;i+) fprintf(fp,%-20s%-30s%-10s%-10d,ti.no,ti.name,ti.sex,ti.age);/*格式写入记录*/ fprintf(fp,rn); /*将换行符号写入文件*/ fclose(fp);/*关闭文件*/ printf(*save success*n); /*显示保存成功*/ /*读入函数,

23、参数为结构体数组*/ 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=0&idn) /*判断序号是否在记录范围内*/ fseek(fp,(id-1)*sizeof(STUDENTS),1); /*移动文件指针到该记录位置*/ print(tid); /*调用输出函数显示该记录*/

24、 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;in;i+) flag=0; /*设标志判断是否发生过交换*/ for(j=0;j0) /*比较大小*/ temp=tj; tj=tj+1;tj+1=temp; flag+; if(flag=0)break; /*如

25、果标志为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(Ente

26、r 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;in;i+) fscanf(sfp,%20

27、s%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月出版应用技术学院课程设计评分表课程名称: 学生信息管理 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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