《C语言课程设计报告附源代码(共18页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告附源代码(共18页).doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上西安郵電大學C语言课程设计报告题 目:学生信息管理系统院系名称:通信与信息工程学院 专业名称:广播电视工程班 级: 学生姓名:学号(8位):指导教师:设计起止时间:2012年06月18日2012年06月27日专心-专注-专业一. 设计目的(1)将上一学期的C语言知识进行复习,并将课本上的知识应用于实践中。(2)将学过的一部分一部分知识综合应用,自行设计并实现一个较为完整的小型管理信息系统或小型应用系统的设计与开发。(3)提高程序的抽象分析设计能力。(4)学会函数的调用,把一个整体划分成为部分,再分别对部分编程。(5)通过c语言程序设计,编译一个简单的学生成绩管理系统,
2、对学生的信息进行比较简单的管理。在内容上,包括学生的姓名,学号及各科成绩等信息。可进行信息的输入,输出,查询,修改,添加,删除,排序,等操作。(6)通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固C语言程序设计课程学习的内容,掌握高级语言程序设计的基本方法;(7)通过系统分析、系统设计、编程调试,写实验报告等环节,初步掌握软件系统设计的法和步骤,训练灵活运用程序设计语言进行软件开发的能力,提高分析问题和解决问题的能力,提高程序设计水平,培养必要的工程实践动手能力。(8)学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力;二. 设计内容(1)运用C语言程序设
3、计基本知识,通过Microsoft Visual C+程序设计平台,建立一个学生信息管理系统。(2)运用课本上的相关知识编辑一个简单的学生信息管理系统,使之能够完成学生基本信息的输入、修改、添加、查看、删除、排序、统 计、输出、退出等操作。(3)排除编程过程中所遇到的各项错误和警告,并逐项修改调试,直到程序正确运行。(4)通过老师的指导,对程序进行更深入的掌握。三概要设计1功能模块图;主函数打开文件保存文件密码输入模 块输出模 块修改模 块删除模 块查询模 块排序 模 块添加模 块菜 单模 块输入学生的姓名等信 息输出所有学生信 息按照学号修改学生信息按照学号删 除学生信 息按照学号查询学生信
4、息按照学号从小到大排序添加新学生的信 息菜单选项2各个模块详细的功能描述。输入模块学号姓名高数成绩英语成绩c语言成绩体育成绩保存文件爱你返回目录需要录入信息的个数 输出模块读取文件显示文件中的数 据返回目录添加模块学号姓名数学成绩英语成绩c语言成绩体育成绩保存到文件返回目录输入查询模块读取文件学号姓名高数成绩大英成绩c语言成绩体育成绩返回目录输出排序模块按照学号排序输出排序后的数据返回目录删除模块输入要删除学生的学号输出删除后的数据返回目录删除 修改模块打开文件输入要修改学生学号姓名学号高数成绩大英成绩c语言成绩大物成绩修改保存输出修改后的数 据菜单模块选择操作进入该选项模块返回目录显示菜单选
5、项密码模块输入密码,(三次错误退出系统)进入系统输入用户名,(错误则重新输入)四1功能函数的调用关系图; 调用修改信息函数调用删除信息函数调用显示信息函数调用载入信息函数调用保存信息函数调用添加信息函数调用查找信息函数调用排列信息函数菜单模块主函数2各功能函数的数据流程图。 (如上三.2功能详述)3重点设计及编码。主函数输入姓名学号等修改信息(按学号)按学号删除按学号查询添加信息结束菜单五测试数据及运行结果1正常测试数据(3组)及运行结果;2非正常测试数据(2组)及运行结果。六调试情况,设计技巧及体会1对自己的设计进行评价,指出合理和不足之处,提出改进方案;通过两周的编程,我完成了学生成绩管理
6、这个小系统。进一步理解并掌握了C 语言中的精华指针和结构体。程序可以运行,实现对数据的录入、修改、插入、删除、排序、查询、等基本功能。程序开始时从文件中读取数据,结束时对新数据或更新的数据进行保存,以便下次再次调用。2对设计及调试过程的心得体会。本次课程设计我感受颇深,对我无疑是一次巨大大的挑战,实习过程中我深刻感受到我C语言编程方面的不足,我虽然完成了本次设计,今后我会在此方面多下工夫,熟练掌握他。还有此次实习对我函数,结构体,指针,文件,等各方面的知识来了一次系统的复习,是我明白自己还存在很多很多的不足,以后还需多下工夫,真正实现很完整优秀的编程。七参考文献1.C语言程序设计教程 张毅坤
7、曹锰 张亚玲 西安交通大学出版社2. C语言课本八源程序代码(电子版)#include#include#includestdlib.h#include#define N 100struct st_type /*结构体类型定义*/ char num7; char name20; float math; float english; float c; float gym; stN,k;int read_file(st_type st) FILE *fp; int i=0; if(fp=fopen(student.txt,rt)=NULL) printf(nn-库文件不存在!请创建); return
8、 0; while(feof(fp)!=1) fread(&sti,sizeof(st_type),1,fp); if(sti.num0=0) break; else i+; fclose(fp); return i;void save_file(st_type st)FILE *fp; int i; if(fp=fopen(student.txt,wb)=NULL) printf(读文件错误!n); return; for(i=0;iN;i+) if(fwrite(&sti,sizeof(st_type),1,fp)!=1) printf(写文件错误!n); fclose(fp);/*输入模
9、块*/int input(st_type st) int i; char k; system (cls); for(i=0;iN;i+) system (cls); printf(n请输入第%d个学生的信息n,i+1); printf(n姓名:); scanf(%s,sti.name); printf(n学号:); scanf(%s,sti.num); printf(n数学成绩:n); scanf(%f,&sti.math); printf(n英语成绩:n); scanf(%f,&sti.english); printf(nc语言成绩:n); scanf(%f,&sti.c); printf(
10、n体育成绩:n); scanf(%f,&sti.gym); printf(是否继续(任意键继续/N退出):n); scanf(%s,&k); if(k=n|k=N) break; printf(按任意键返回主菜单n); getch(); system(cls); return 0; /*输出模块*/void output(st_type st) int i,j=0;system(cls); for(i=0;iN;i+) if(sti.num0=0&sti.name0=0&sti.c=0&sti.english=0&sti.gym=0&sti.math=0) break; printf(n姓名-
11、学号-数学成绩-英语成绩-c语言成绩-体育成绩n); printf(%-8s %-8s%-12.2f%-12.2f%-12.2f%-12.2f,sti.name,sti.num,sti.math,sti.english,sti.c,sti.gym);j+; if(j=0)printf(n无学生信息!n); printf(n按任意键返回主菜单); getch(); system(cls); /*修改模块*/ void modify() int choice,i,k;char n7; system(cls); for(i=0;iN;i+) if(sti.num0=0&sti.name0=0&sti
12、.c=0&sti.english=0&sti.gym=0&sti.math=0) break; printf(n姓名-学号-数学成绩-英语成绩-c语言成绩-体育成绩n); printf(%-8s %-8s%-12.2f%-12.2f%-12.2f%-12.2f,sti.name,sti.num,sti.math,sti.english,sti.c,sti.gym); printf(n请输入要修改学生成绩的学号:n); scanf(%s,n); system(cls);for(i=0;iN;i+) if(!strcmp(n,sti.num) k=i; printf(n姓名-学号-数学成绩-英语成
13、绩-c语言成绩-体育成绩n); printf(%-8s %-8s%-12.2f%-12.2f%-12.2f%-12.2f,sti.name,sti.num,sti.math,sti.english,sti.c,sti.gym); printf(n输入修改选项:); printf( n 1.姓名2.学号3.数学成绩4.英语成绩5.c语言成绩6.体育成绩 n ); scanf(%d,&choice); switch(choice) case 1:printf(n修改后的姓名:n); scanf(%s,sti.name);break; case 2:printf(n修改后的学号:n); scanf(
14、%s,sti.num);break; case 3:printf(n修改后的数学成绩:n); scanf(%f,&sti.math);break; case 4:printf(n修改后的英语成绩:n); scanf(%f,&sti.english);break; case 5:printf(n修改后的c语言成绩:n); scanf(%f,&sti.c);break; case 6:printf(n修改后的体育成绩:n); scanf(%f,&sti.gym);break; printf(n姓名-学号-数学成绩-英语成绩-c语言成绩-体育成绩n); printf(%-8s %-8s%-12.2f
15、%-12.2f%-12.2f%-12.2f,stk.name,stk.num,stk.math,stk.english,stk.c,stk.gym); printf(n按任意键返回主菜单); getch(); system(cls); /*删除模块*/ void del() int i,j;char n7; printf(n按学号删除n); system(cls); for(i=0;iN;i+) if(sti.num0=0&sti.name0=0&sti.c=0&sti.english=0&sti.gym=0&sti.math=0) break; printf(n姓名-学号-数学成绩-英语成绩
16、-c语言成绩-体育成绩n); printf(%-8s %-8s%-12.2f%-12.2f%-12.2f%-12.2f,sti.name,sti.num,sti.math,sti.english,sti.c,sti.gym); printf(n请输入要删除学生成绩的学号:n); scanf(%s,n); for(j=0;jN;j+) for(i=0;iN;i+) if(!strcmp(n,sti.num) for(i;iN;i+) sti=sti+1; for(i=0;iN;i+) if(sti.num0=0&sti.name0=0&sti.c=0&sti.english=0&sti.gym=
17、0&sti.math=0) break; printf(n姓名-学号-数学成绩-英语成绩-c语言成绩-体育成绩n); printf(%-8s %-8s%-12.2f%-12.2f%-12.2f%-12.2f,sti.name,sti.num,sti.math,sti.english,sti.c,sti.gym); printf(n按任意键返回主菜单); getch(); system(cls); /*查询模块*/void inquire() int i,j=0;char n7;system(cls); printf(n请输入要查询学生成绩的学号:n); scanf(%s,n); for(i=0
18、;iN;i+) if(!strcmp(n,sti.num) j+;printf(n姓名-学号-数学成绩-英语成绩-c语言成绩-体育成绩n); printf(%-8s%-8s%-12.2f%-12.2f%-12.2f%-12.2f,sti.name,sti.num,sti.math,sti.english,sti.c,sti.gym); if(j=0)printf(无该学号学生信息n); printf(n按任意键返回主菜单); getch();system(cls); /*排序模块*/void sort() st_type k; int i,j; system(cls); printf(n按学号
19、排序n); for(i=0;iN-1;i+)for(j=i+1;j0) if(stj.num0=0)break; k=sti; sti=stj; stj=k; /if(sti.num=stj.num) / sti=stj; for(i=0;iN;i+) if(sti.num0=0&sti.name0=0&sti.c=0&sti.english=0&sti.gym=0&sti.math=0) break; printf(n姓名-学号-数学成绩-英语成绩-c语言成绩-体育成绩n); printf(%-8s %-8s%-12.2f%-12.2f%-12.2f%-12.2f,sti.name,sti.
20、num,sti.math,sti.english,sti.c,sti.gym); printf(n按任意键返回主菜单); getch(); system(cls);/*添加信息模块*/ void add() int i,j=0; char k; system(cls); for(i=0;i=N-1) printf(n人数已满!); printf(n按任意键返回主菜单); getch(); system(cls); void password() /密码模块int i; char y10=,g10=,n10,k10;printf( 注意!温馨提示!用户名和密码都是:nn); printf(用户名
21、:); scanf(%s,n); for(n;strcmp(y,n)!=0;scanf(%s,n) system(cls);printf(用户名错误,请重新输入!n); printf(用户名:); printf(正确用户名!)n);printf(密 码:);for(i=0;i6;i+) ki=getch();printf(*);k6=0;getch();if(strcmp(y,n)!=0|strcmp(g,k)!=0) printf(n密码有误!请重新输入!n密码:);for(i=0;i6;i+) ki=getch();printf(*);k6=0;getch();if(strcmp(y,n)
22、!=0|strcmp(g,k)!=0) printf(n密码有误!请重新输入!n密码:); for(i=0;i6;i+) ki=getch();printf(*);k6=0;getch();if(strcmp(y,n)!=0|strcmp(g,k)!=0)printf(n密码三次错误!退出程序n);exit(0); system(cls);/菜单模块void menu()save_file(st);int j; printf(n*n); printf(n * 学生成绩管理 * n ); printf(n * 1.录入成绩 * n); printf(n * 2.添加成绩 * 欢迎进入n); pr
23、intf(n * 3.修改信息 * 学生信息管理系统 n); printf(n * 4.删除信息 * 请选择您要进行的操作 n); printf(n * 5.查询成绩 * n); printf(n * 6.学号排序 * n);printf(n * 7.保存文件 * n); printf(n * 8.读取文件 * n);printf(n * 9.输出信息 * n); printf(n * 0.退出系统 * n); printf(n*n); printf(请选择:); scanf(%d,&j); switch(j) case 1:input(st);menu();break; case 2:add
24、();menu();break; case 3:modify();menu();break; case 4:del();menu();break; case 5:inquire();menu();break; case 6:sort();menu();break;case 7:save_file(st);menu();break; case 8:read_file(st);menu();break;case 9:output(st);menu();break; case 0: exit(0); /*主函数*/void main()int sum;password();system(cls);sum=read_file(st);printf(已读取%d个学生信息n,sum);printf(任意键进入功能菜单n);getch();menu();save_file(st); getch();