c语言课程设计---学生信息管理系统_第1页
c语言课程设计---学生信息管理系统_第2页
c语言课程设计---学生信息管理系统_第3页
c语言课程设计---学生信息管理系统_第4页
c语言课程设计---学生信息管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言课程设计报告 课题学生信息管理系统课题学生信息管理系统 目录 设计目的设计目的 .错误!未定义书签。错误!未定义书签。 设计要求设计要求 .错误!未定义书签。错误!未定义书签。 总体设计总体设计 .错误!未定义书签。错误!未定义书签。 详细设计详细设计 .错误!未定义书签。错误!未定义书签。 调试分析调试分析 .错误!未定义书签。错误!未定义书签。 总结. 错误!未定义书签。错误!未定义书签。 程序代码. 错误!未定义书签。错误!未定义书签。 学生信息管理系统学生信息管理系统 一一 设计目的设计目的 熟练掌握 C 语言课程中所学的理论知识;C 语言是在国内外广 泛使用的一种计算机语言。它既有高级语言的特点,又具有汇编语 言的特点。它可以作为系统设计语言,编写工作系统应用程序,也 可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。 因此,它的应用范围广泛。学习使用 C 语言程序的目的是掌握程序 设计的思路, 学会用计算机语言编写程序正确处理算法和语法的关 系算法是程序的核心、是灵魂,语法是外壳、是工具。通过课程设 计,我们要熟练的掌握C 语言的算法、语言、函数的调用、循环的 使用、数组的运用等。 二二 设计要求设计要求 (一)(一) 。信息描述 信息描述 输入一个班学生的学号和每个学生的各项信息包括 (学号、姓名、性别、出生、地址、电话、 E-mail) 。编程出每个学生的信息,最后打印一张班上学生的各项信息。 1)各项信息输入用循环语句。 2)打印的学生信息表项包括:学号、姓名、性别、出生、地址、电话、E-mail。 3)按实验报告电子模板格式填写实验内容。 (二)(二) 。功能描述。功能描述 1. 学生基本信息录入。 2. 学号、姓名、性别、出生、地址、电话、E-mail。 3. 基本信息的查询(学号,姓名) 。 4. 修改学生信息。 5. 增加学生信息。 6. 按学号删除信息 7. 保存当前学生信息 8. 退出 三三. .总体设计总体设计 MainMain 函数函数 1.调用 input 函 数 2.调用 output 函数 3.调用4.调用5.调用 shanchuaverageSort 函数函数函数 6.调用 Fenlei 函数 7.调用 Charu 函数 8.调用 Find 函数 9 调用10.调用 SearchExit 函数函数 四详细设计四详细设计 1.1. main( )main( ) 主函数主函数 程序采用模块化设计,主函数是程序的入口,各模块独立,可分 块调试,均由主函数控制调用。控制功能的实现通过循环执行一个开关 语句, 该语句的条件值是通过调用主菜单函数得到的返回值, 根据该值, 调用相应的各功能函数,同时设计一个断点,即当返回值为一定条件时 2.2. del()del()删除记录删除记录 输入要删除记录的姓名,调用 find 函数,如果没有该记录,显示没找到信息; 否则,调用 print 函数,显示记录信息,接着显示是否确实要删除,请输入确认信 息整数 0 或 1,1 表示是,0 表示否。如果输入了 1,则系统删除信息。要删除数组 中的某一条元素,实际所做的操作是将其后继记录依次前移一条,所以删除第 i 条 记录,用 for 语句,从 i+l 开始,依次将每个字段拷贝到前一条记录的相应字段, 即覆盖了前一条记录,达到前移的目的,直到最后一条记录。注意前移记录的时候 是逐个字段赋值,不能一个记录整体赋值。由于删除了一条记录,记录数减 1,返 回记录数,程序结束。运行 exit()函数结束程序,以免造成死循环。 1.输入信息 按学号查找 增加新学生信息 按学号删除 显示学生名单 保存学生名单 返 回 菜 单 Meau 结束 3.insert()3.insert()插入记录插入记录 输入要插入记录的信息,保存到临时变量 temp 中,然后再输 入一个姓名,用字符串s 表示,确定新记录插入在该记录之前,调 用 find()函数查找姓名为 s 的记录, 得到该记录所在的序号, 从最 后一条记录开始,向后移动,即第n-1 条移动到第 n 条,第n-2 条 移动到第 n-1 条,直到第i 条移动到第 i+l 条,将新信息存入到第 i 条记录位置。 4 4.seek() .seek() 查找记录查找记录 查找指定姓名的记录,采用顺序查找法。首先输入要查找记录的姓名,然后顺 序查找结点,如果没找到,则输出没找到信息,否则,显示找到的记录信息。因为 程序多次用到了查找和显示记录,例如删除记录中,所以编写了一个 find()函数, 专门进行查找。从第一条记录开始,将记录中的姓名字段和待比较的姓名字符串 s 进行比较,一旦相等,程序结束,返回该记录的下标号i,也就是记录所在的序号; 如果不相等,则继续下一条比较,所有记录比较完毕,循环结束,返回此时的下标 变量 i 值。search()函数通过调用 find()得到了整数 i,判断 i 的值如果大于 n-1, 已超过实际记录数,说明所有记录都进行过比较,没有找到,查找不成功:否则, 说明找到,调用输出函数 print(),显示该第 i 条记录。 输入要查询学生号码 输出学生学号 输出学生姓名 while(1) printf(请选择子菜单编号:); scanf(%d, 按3返回菜单 5.while().switch() for()5.while().switch() for()循环循环 while()for 都是循环语句,使用格式: while(条件表达式) for(表达式1;表达式2;表达式3) 2、switch 是多分支选择语句,case 是 switch 语句中的一个关键字,用来判断从哪个位置开始 执行语句。 格式: switch(表达式) case常量表达式: . case常量表达式: . case常量表达式: . default: . switch 语句结束的条件:碰到break 语句,或执行到 五五. .调试分析调试分析 经过我一天的调试,我们终于把各自的模块整合起来了,在这过程中,我们遇到了 很多问题,像数据不匹配,括号不配对,赋值重复等。因为 C 语言的语法限制不太 严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等 原因。但经过我的努力,终于完成了。首先,我们用 WHILE 循环,使这个图书系统 能无限使用,再次,我们用 SWITCH 对各个模块功能进行了组合,使学生成绩管理系 统的功能更完善,界面更清晰、明了。 六总结六总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼 实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术 发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一 世纪的大学来说掌握计算机开发技术是十分重要的。总的来说,本次课程设计,实 在是受益匪浅。本来这门课的知识学的就不够扎实,当刚开始要设计的时候,还真 不知道从哪里下手,结果第一天的上机,我只是做了一个下午,什么也没干!回去 以后,我想,这样不行,这样下去还得了!后来我们这组的组长把整个程序的各个 模块都分配好任务,我主要负责查找那一个模块的。第二天因为有了确实的任务, 所以我就静下心来去编程,首先想到的是如何定义类型,想用数组的话很麻烦,我 们也只学了这么多内容,后来组长说如果用结构体的话就比较方便,所以我们就决 定自己在学一下结构体那方面的知识。我选用了顺序查找法编写了查找函数,并且 通过编写使该程序可以进行多次查找,界面友好,并且输出的画面美观。在设计的 过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各 样的问题,例如编写的程序在计算机上识别的是没有错误的,但是运行的结果确实 不对的,总是两个字符串一起输出,怎么看我的源程序都没有错误,后来经过老师 的指导才知道字符串输出是以回车键识别结束语句的,解决的办法是在输出语句中 间加一个输入字符语句;后来在我们团队的合作下,一一攻破了困难,最后把一个 完整的程序设计完成,感觉特别有成就感的。虽然课程设计只有短短的几天,但是 我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有 效的方法。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不 够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新 温故。 回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编 程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时 不仅可以巩固了以前所学过的知识, 而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远 不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正 为社会服务,从而提高自己的实际动手能力和独立思考的能力。 七程序代码七程序代码 C C 程序学生信息系统管理设计程序学生信息系统管理设计 #include /*#include /* 引用库函数引用库函数 */ */ #include/*#include/* 随机函数随机函数 */ */ #include /*#include /* 字符串字符串 */ */ #define BUFLEN 100 /*#define BUFLEN 100 /* 缓冲区最大字符数缓冲区最大字符数 */ */ #define LEN 20 /*#define LEN 20 /* 学号和姓名最大字符数,实际请更改学号和姓名最大字符数,实际请更改 */ */ #define N 84 /*#define N 84 /* 最大学生人数,实际请更改最大学生人数,实际请更改*/*/ struct record /*struct record /* 输入输入 */ */ char codeLEN+1; /*char codeLEN+1; /* 学号学号 */ */ char nameLEN+1; /*char nameLEN+1; /* 姓名姓名 */ */ int age; /*int age; /* 年龄年龄 */ */ char sex3; /*char sex3; /* 性别性别 */ */ char timeLEN+1; /*char timeLEN+1; /* 出生年月出生年月 */ */ char add30; /*char add30; /* 家庭地址家庭地址 */ */ char telLEN+1; /*char telLEN+1; /* 电话号码电话号码 */ */ char mail30; /*char mail30; /* 电子邮件地址电子邮件地址 */ */ stuN;stuN; int k=1,n,m; /*int k=1,n,m; /* 定义全局变量定义全局变量 */ */ void readfile();/*void readfile();/* 函数声明函数声明 */ */ void seek(); /*void seek(); /* 搜索搜索*/*/ void modify(); /*void modify(); /* 更改更改*/*/ void insert(); /*void insert(); /*插入插入 */ */ void del(); /*void del(); /* 删除删除*/*/ void display(); /*void display(); /* 显示显示*/*/ void save(); /*void save(); /* 储存储存*/*/ void menu(); /*void menu(); /* 菜单菜单*/*/ int main() /*int main() /* 定义主函数为整型定义主函数为整型*/*/ system(color 2E);/* system(color 2E);/* 背景颜色变化背景颜色变化*/*/ while(k)while(k) menu();menu(); system(pause); /*system(pause); /* 系统终止系统终止*/*/ return 0;return 0; void readfile()/*void readfile()/* 建立信息建立信息 */ */ char bufBUFLEN,*p=student.dat; /*char bufBUFLEN,*p=student.dat; /* 文件存入指针变量文件存入指针变量 */ */ FILE *fp; /*FILE *fp; /* 打开指针文件打开指针文件 */ */ int i=0;int i=0; if (fp=fopen(student.dat,r)=NULL) /*if (fp=fopen(student.dat,r)=NULL) /* 如果等于空指针执行下面程序如果等于空指针执行下面程序 */*/ printf(Open file %s error! Strike any key to exit!,p); printf(Open file %s error! Strike any key to exit!,p); system(pause); /*system(pause); /* 系统终止系统终止 */ */ exit(0); /*exit(0); /* 退出退出*/*/ while(fscanf(fp,%s %s %d %s %s %s %s %s,stui.code,, i+; i=i;i=i; fclose(fp);fclose(fp); n=i;n=i; printf(printf(录入完毕!录入完毕!n);n); void seek() /*void seek() /* 搜索搜索*/*/ int i,j,item,flag;int i,j,item,flag; char s120; /*char s120; /* 以姓名和学号最长为以姓名和学号最长为 20 */20 */ printf(-n);printf(-n); printf(1.printf(1.按学号查询按学号查询n);n); printf(2.printf(2.按姓名查询按姓名查询n);n); printf(3.printf(3.退出本菜单退出本菜单n);n); printf(-n);printf(-n); while(1)while(1) printf( printf(请选择子菜单编号请选择子菜单编号:);:); scanf(%d,scanf(%d, flag=0; /* */flag=0; /* */ switch(item)switch(item) case 1: /*case 1: /* 查询学号查询学号*/*/ printf(printf(请输入要查询的学生的学号请输入要查询的学生的学号:n);:n); scanf(%s,s1);scanf(%s,s1); for(i=0;in;i+)for(i=0;in;i+) if(strcmp(stui.code,s1)=0)if(strcmp(stui.code,s1)=0) flag=1; flag=1; printf(printf(该学生学号,姓名,年龄,性别,出生年月,地址,电话,该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mailE-mail 分别分别 为为:n);:n); printf(%s %s %d %s %s %s %s %sn,stui.code,,stui.age,printf(%s %s %d %s %s %s %s %sn,stui.code,,stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail);stui.sex,stui.time,stui.add,stui.tel,stui.mail); if(flag=0) /*if(flag=0) /* 为假没有输入该学生的学号为假没有输入该学生的学号*/*/ printf(printf(该学号不存在!该学号不存在!n); break;n); break; case 2: /*case 2: /* 查询姓名查询姓名*/*/ printf(printf(请输入要查询的学生的姓名请输入要查询的学生的姓名:n);:n); scanf(%s,s1);scanf(%s,s1); for(i=0;in;i+)for(i=0;in;i+) if(strcmp(,s1)=0)if(strcmp(,s1)=0) flag=1; flag=1; printf(printf(该学生学号该学生学号:%s:%s 姓名姓名:%s:%s 年龄年龄: :性别性别:%s:%s 出生年月出生年月:%s:%s 地址地址:%s:%s 电电 话话:%sE-mail:%s,stui.code,,stui.age,:%sE-mail:%s,stui.code,,stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail);stui.sex,stui.time,stui.add,stui.tel,stui.mail); if(flag=0) /*if(flag=0) /* 为假为假.没有输入该学生的学号没有输入该学生的学号*/*/ printf(printf(该姓名不存在!该姓名不存在!n); break;n); break; case 3:return;case 3:return; default:printf(default:printf(请在请在 1-31-3 之间选择之间选择n);n); void modify() /*void modify() /*修改信息修改信息*/*/ int i,j,item,num;int i,j,item,num; char sex13,s1LEN+1,s2LEN+1; /*char sex13,s1LEN+1,s2LEN+1; /* 比学号姓名长度多一个字符比学号姓名长度多一个字符 */ */ printf(printf(请输入要要修改的学生的学号请输入要要修改的学生的学号:n);:n); scanf(%s,s1);scanf(%s,s1); for(i=0;in;i+)for(i=0;in;i+) if(strcmp(stui.code,s1)=0)if(strcmp(stui.code,s1)=0) num=i;num=i; printf(-n);printf(-n); printf(1.printf(1.修改姓名修改姓名n);n); printf(2.printf(2.修改年龄修改年龄n);n); printf(3.printf(3.修改性别修改性别n);n); printf(4.printf(4.修改出生年月修改出生年月n);n); printf(5.printf(5.修改地址修改地址n);n); printf(6.printf(6.修改电话号码修改电话号码n);n); printf(7.printf(7.修改修改 E-mailE-mail 地址地址n);n); printf(8.printf(8.退出本菜单退出本菜单n);n); printf(-n);printf(-n); while(1)while(1) printf( printf(请选择子菜单编号请选择子菜单编号:);:); scanf(%d,scanf(%d, switch(item)switch(item) case 1:case 1: printf(printf(请输入新的姓名请输入新的姓名:n);:n); scanf(%s,s2);scanf(%s,s2); strcpy(,s2); break;strcpy(,s2); break; case 2:case 2: printf(printf(请输入新的年龄请输入新的年龄:n);:n); scanf(%d,break;scanf(%d,break; case 3:case 3: printf(printf(请输入新的性别请输入新的性别:n);:n); scanf(%s,sex1);scanf(%s,sex1); strcpy(stunum.sex,sex1); break;strcpy(stunum.sex,sex1); break; case 4:case 4: printf(printf(请输入新的出生年月请输入新的出生年月:n);:n); scanf(%s,s2);scanf(%s,s2); strcpy(stunum.time,s2); break;strcpy(stunum.time,s2); break; case 5:case 5: printf(printf(请输入新的地址请输入新的地址:n);:n); scanf(%s,s2);scanf(%s,s2); strcpy(stunum.add,s2); break;strcpy(stunum.add,s2); break; case 6:case 6: printf(printf(请输入新的电话号码请输入新的电话号码:n);:n); scanf(%s,s2);scanf(%s,s2); strcpy(stunum.tel,s2); break;strcpy(stunum.tel,s2); break; case 7:case 7: printf(printf(请输入新的请输入新的 E-mailE-mail 地址地址:n);:n); scanf(%s,s2);scanf(%s,s2); strcpy(stunum.mail,s2); break;strcpy(stunum.mail,s2); break; case 8:return;case 8:return; default:printf(default:printf(请在请在 1-81-8 之间选择之间选择n);n); void insert() /*void insert() /*插入插入 */ */ int i=n,j,flag; int i=n,j,flag; printf(printf(请输入待增加的学生数请输入待增加的学生数:n);:n); scanf(%d,scanf(%d, dodo flag=1; flag=1; while(flag)while(flag) flag=0; flag=0; printf(printf(请输入第请输入第 %d %d 个学生的学号个学生的学号:n,i+1);:n,i+1); scanf(%s,stui.code);scanf(%s,stui.code); for(j=0;ji;j+)for(j=0;ji;j+) if(strcmp(stui.code,stuj.code)=0)if(strcmp(stui.code,stuj.code)=0) printf( printf(已有该学号,请检查后重新录入已有该学号,请检查后重新录入!n);!n); flag=1;flag=1; break; /*break; /*如有重复立即退出该层循环,提高判断速度如有重复立即退出该层循环,提高判断速度*/*/ printf(printf(请输入第请输入第 %d %d 个学生的姓名个学生的姓名:n,i+1);:n,i+1); scanf(%s,);scanf(%s,); printf(printf(请输入第请输入第 %d %d 个学生的年龄个学生的年龄:n,i+1);:n,i+1); scanf(%d,scanf(%d, printf(printf(请输入第请输入第 %d %d 个学生的性别个学生的性别:n,i+1);:n,i+1); scanf(%s,stui.sex);scanf(%s,stui.sex); printf(printf(请输入第请输入第 %d %d 个学生的出生年月个学生的出生年月: :(格式:年(格式:年. .月)月)n,i+1);n,i+1); scanf(%s,stui.time);scanf(%s,stui.time); printf(printf(请输入第请输入第 %d %d 个学生的地址个学生的地址:n,i+1);:n,i+1); scanf(%s,stui.add);scanf(%s,stui.add); printf(printf(请输入第请输入第 %d %d 个学生的电话个学生的电话:n,i+1);:n,i+1); scanf(%s,stui.tel);scanf(%s,stui.tel); printf(printf(请输入第请输入第 %d %d 个学生的个学生的 E-mail:n,i+1);E-mail:n,i+1); scanf(%s,stui.mail);scanf(%s,stui.mail); if(flag=0)if(flag=0) i=i; i=i; i+;i+; while(in+m);while(in+m); n+=m;n+=m; printf(printf(录入完毕!录入完毕!nn);nn); void del() /*void del() /* 删除删除*/*/ int i,j,flag=0; int i,j,flag=0; char s1LEN+1;char s1LEN+1; printf(printf(请输入要删除学生的学号请输入要删除学生的学号:n);:n); scanf(%s,s1);scanf(%s,s1); for(i=0;in;i+)for(i=0;in;i+) if(strcmp(stui.code,s1)=0)if(strcmp(stui.code,s1)=0) flag=1; flag=1; for(j=i;jn-1;j+)for(j=i;jn-1;j+) stuj=stuj+1;stuj=stuj+1; if(flag=0)if(flag=0) printf(printf(该学号不存在!该学号不存在!n);n); if(flag=1)if(flag=1) printf( printf(删除成功,显示结果请选择菜单删除成功,显示结果请选择菜单 6n);6n); n-;n-; void display() /*void display() /* 显示显示*/*/ int i,j; int i,j; printf(printf(所有学生的信息为所有学生的信息为:n);:n); for(i=0;in;i+)for(i=0;in;i+) printf(%s %s %d %s %s %s %s %sn,stui.code,,stui.age,printf(%s %s %d %s %s %s %s %sn,stui.code,,stui.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail);stui.sex,stui.time,stui.add,stui.tel,stui.mail); void save() /*void save() /* 储存储存*/*/ int i,j,k,flag=0; int i,j,k,flag=0; FILE *fp; /*FILE *fp; /*打开指针文件打开指针文件*/*/ fp=fopen(student.dat,w);fp=fopen(student.dat,w); for(i=0;in;i+)for(i=0;in;i+) fprintf(fp,%s %s %d %s %s %s %s %sn,stui.code,,stui fprintf(fp,%s %s %d %s %s %s %s %sn,stui.code,,stui .age,.age, stui.sex,stui.time,stui.add,stui.tel,stui.mail);stui.sex,stui.time,stui.add,stui.tel,stui.mail); fclose(fp

温馨提示

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

评论

0/150

提交评论