收藏 分销(赏)

C语言学生信息管理系统方案.doc

上传人:人****来 文档编号:10153074 上传时间:2025-04-23 格式:DOC 页数:25 大小:39.54KB 下载积分:10 金币
下载 相关 举报
C语言学生信息管理系统方案.doc_第1页
第1页 / 共25页
C语言学生信息管理系统方案.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
C语言同学信息管理系统方案 C语言课程制定题目名称:同学信息管理系统 姓名XXX 学号XXXXXXXX 专业网络工程 班级一班 指导教师XXX 编写日期2021/6/6 目 录 1、序言 (3) 2、必需求分析 (3) 2.1.具体目标 (3) 2.1.1 (3) 2.1.2. (4) 2.1.3. (4) 2.1.4. (4) 3、总体制定 (4) 3.1.算法分析 (4) 3.2.程序框图 (5) 4、具体制定 (5) 4.1.函数模块 (5) 4.1.1.主界面函数 (5) 4.1.2.输入函数 (6) 4.1.3.查询函数 (7) 4.1.4.修改信息函数 (10) 4.1.5.增加信息函数 (12) 4.1.6删除信息函数. (13) 4.1.7.输出信息函数 (14) 4.1.8储存信息函数 (15) 4、组员名单 (16) 5、结论和心得 (17) 6、致谢 (25) 1、序言 随着学校的规模不断过大,同学数量急剧增加,有关同学的各种信息量也成倍增加。面对庞大的信息量必需要有同学信息管理系统来提升同学管理工作的效率。通过这样的系统可以做到信息的规范化管理、科学性统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。 2、必需求分析 本系统主要必需要解决的任务是实现同学信息关系的系统化、规范化和自动化,其主要目的是计算同学各种信息进行日常管理,如查询、修改、增加删除同学信息等。在实现程序功能的同时应该做到界面简单易懂,容易操作,方便使用的要求。并且程序必需要有一定的纠错能力。 本系统主要应用于同学学籍管理、信息查询等部分,具有不同的操作功能。具体功能如下: 2.1.1 有关同学信息的录入,同学信息包括输入同学的学号,姓名,年龄,性别,出生年月,地址, ,E-mail等〔同学信息用文件储存〕。 2.1.2. 同学信息的浏览功能。 2.1. 3. 同学信息的查询功能,其中实现按学号和姓名二种方式查询。 2.1.4. 同学信息的修改功能,包括增加、删除等。 3、总体制定 首先,合计信息的录入,一个同学包括这么多的属性,应该合计定义一个结构体。其次,我们应该合计数据的存储形式,在这里我们用一个数组。从文件中录入我们首先要定义一个文件指针,打开该文件后通过一个循环来读文件,将所有信息读出来后关闭文件。 关于菜单的实现,首先用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。 信息的浏览,我们只必需要通过一个循环将结构体中所有元素输出就行了。 信息的查询,我们选择用switch结构来解决用学号和姓名二种方式来查询的要求。等输入学号或者姓名的时候,通过字符串比较函数,如果存在,那么输出同学信息,否则提示错误并要求重新输入。 信息的修改,输入要修改信息的学号。首先用字符串比较函数推断改同学信息是否存在,如果存在,同过switch语句来依次修改同学的各项信息。修改信息我们必需要用字符串复制函数。 增加新同学信息,输入要增加的学号。首先用字符串比较函数推断,如果输 入的学号已经存在,则提示重新输入,否则依次输入各项信息。 删除同学信息,通过比较找到要删除的学号,用后一个同学的信息直接赋值,后面的依次赋值给前一个同学的信息。 4、具体制定 void menu() { int num; printf( 简易同学通讯录系统\n\n); printf( -----------系统功能菜单----------\n); printf( *****************************\n); printf( * 1.读入同学信息*\n); printf( * 2.查询同学信息*\n);printf( * 3.修改同学信息*\n); printf( * 4.增加同学信息*\n); printf( * 5.按学号删除信息*\n); printf( * 6.显示当前信息*\n); printf( * 7.储存当前同学信息*\n); printf( * 8.退出系统*\n); printf( *****************************\n); printf(请选择菜单编号:); scanf(%d,num); switch(num) { case 1:input();break; case 2:inquir();break; case 3:modify();break; case 4:increase();break; case 5:del();break; case 6:output();break; case 7:save();break; case 8:k=0;break; default:printf(请在1-8之间选择\n); } } 说明:此函数的功能是输出主界面功能菜单,已供选择相应的模块进行操作。 其中定义一个变量num,通过输入num的值来进入相应的功能,switch提供了不同选择的入口。在结束相应功能的操作后又返回主界面,并且对错误的输入有一定的纠错能力。 void input() { FILE *fp; int i=0; if ((fp=fopen(student.dat,r))==NULL) { printf(Open file studentdent.dat error! Strike any key to exit!); exit(0); } while(fscanf(fp,%s %s%d%s %s %s %s %s,student[i].number,student[i].name, student[i].age, student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].email)==8) { i++; } fclose(fp); n=i; printf(录入完毕!\n); } 说明:此函数的功能是从文件中录入信息。首先定义了一个文件指针fp,用他来打开文件student.dat〔事先已经储存〕,通过while循环录入信息,最后关闭文件。显示录入信息成功! void inquir() {int i,j,item,flag; char s1[LEN]; printf(------------------\n); printf(1.按学号查询\n); printf(2.按姓名查询\n); printf(3.退出本菜单\n); printf(------------------\n); while(1) { printf(请选择子菜单编号:); scanf(%d,item); flag=0; switch(item) { case 1: printf(请输入要查询的同学的学号:\n); scanf(%s,s1); for(i=0;in;i++) if(strcmp(student[i].number,s1)==0) { flag=1; printf(该同学学号,姓名,年龄,性别,出生年月,地址, ,E-email 分别为:\n); printf(%s %s %d %s %s %s %s %s\n,student[i].number,student[i].na me,student[i].age, student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].email); } if(flag==0) printf(该学号不存在!\n); break; case 2: printf(请输入要查询的同学的姓名:\n); scanf(%s,s1); for(i=0;in;i++) if(strcmp(student[i].name,s1)==0) { flag=1; printf(该同学学号,姓名,年龄,性别,出生年月,地址, ,E-email 分别为:\n); printf(%s %s %d %s %s %s %s %s\n,student[i].number,student[i].na me,student[i].age, student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].email); } if(flag==0) printf(该姓名不存在!\n); break; case 3:return; default:printf(请在1-3之间选择\n); } } 说明:首先定义一个变量,输入值通过switch来选择相应模块。用一个for循环和字符串比较函数来不断的把输入的数据和系统储存的信息比较,如果相同,则输出信息。否则提示信息不存在! void modify() { int i,j,item,num; char sex1[3],s1[LEN],s2[LEN]; printf(请输入要要修改的同学的学号:\n); scanf(%s,s1); for(i=0;in;i++) if(strcmp(student[i].number,s1)==0) num=i; printf(------------------\n); printf(1.修改姓名\n); printf(2.修改年龄\n); printf(3.修改性别\n); printf(4.修改出生年月\n); printf(5.修改地址\n); printf(6.修改 号码\n); printf(7.修改E-email地址\n); printf(8.退出本菜单\n); printf(------------------\n); while(1) { printf(请选择子菜单编号:); scanf(%d,item); switch(item) { case 1: printf(请输入新的姓名:\n); scanf(%s,s2); strcpy(student[num].name,s2); break;case 2: printf(请输入新的年龄:\n); scanf(%d,student[num].age);break; case 3: printf(请输入新的性别:\n); scanf(%s,sex1); strcpy(student[num].sex,sex1); break; case 4: printf(请输入新的出生年月:\n); scanf(%s,s2); strcpy(student[num].time,s2); break; case 5: printf(请输入新的地址:\n); scanf(%s,s2); strcpy(student[num].add,s2); break; case 6: printf(请输入新的 号码:\n); scanf(%s,s2); strcpy(student[num].tel,s2); break; case 7: printf(请输入新的E-email地址:\n); scanf(%s,s2); strcpy(student[num].email,s2); break; case 8:return; default:printf(请在1-8之间选择\n); } } } 说明:首先输入要修改信息的学号,同样通过字符串比较函数来推断学号是否存在。如果存在则通过switch语句来选择必需要修改的信息,修改通过字符串复制函数。修改结束后可以选择退出该模块,进入主界面。 4.1. void increase() { int i=n,j,flag; printf(请输入待增加的同学数:\n); scanf(%d,m); do { flag=1; while(flag) { flag=0; printf(请输入第%d 个同学的学号:\n,i+1); scanf(%s,student[i].number); for(j=0;ji;j++) if(strcmp(student[i].number,student[j].number)==0) { printf(已有该学号,请检查后重新录入!\n); flag=1; break; } } printf(请输入第%d 个同学的姓名:\n,i+1); scanf(%s,student[i].name); printf(请输入第%d 个同学的年龄:\n,i+1); scanf(%d,student[i].age); printf(请输入第%d 个同学的性别:\n,i+1); scanf(%s,student[i].sex); printf(请输入第%d 个同学的出生年月:〔格式:年.月〕\n,i+1); scanf(%s,student[i].time); printf(请输入第%d 个同学的地址:\n,i+1); scanf(%s,student[i].add); printf(请输入第%d 个同学的 :\n,i+1); scanf(%s,student[i].tel); printf(请输入第%d 个同学的E-email:\n,i+1); scanf(%s,student[i].email); if(flag==0) { i++; } }while(in+m); n+=m; printf(录入完毕!\n\n); } 说明:首先推断学号是否存在,如果存在,则提示学号已经存在。否则通过循环依次输入同学的各种信息,输入结束后返回主界面。 4.1.6删除信息函数. void del() { int i,j,flag=0; char s1[LEN+1]; printf(请输入要删除同学的学号:\n); scanf(%s,s1); for(i=0;in;i++) if(strcmp(student[i].number,s1)==0) { flag=1; for(j=i;jn-1;j++) student[j]=student[j+1]; } if(flag==0) printf(该学号不存在!\n); if(flag==1) { n--; printf(删除成功,显示结果请选择菜单6\n); } } 说明:该函数的目的是为了删除同学信息,我们定义了四个变量,其中数组s1用来输入必需要删除的同学学号。i为for的循环变量,用来遍历全部同学信息,通过strcmp函数来推断该学号是否存在。如果存在,将定义的变量flag赋值为1,同时将i后面的每一个同学信息都赋给前一个同学的信息,达到删除的效果。如果学号不存在,那么flag为0,这时系统则提示学号不存在。函数调用完后返回主界面,可以持续选用其他模块的功能。 void output() { int i; printf(所有同学的信息为:\n); for(i=0;in;i++) { printf(%s %s %d %s %s %s %s %s\n,student[i].number,student[i].na me,student[i].age, student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].email); } } 说明:此函数是为了输出所有的同学信息,要实现比较简单,只必需直接通过一个循环将结构体中的元素遍历输出即可。输出后返回主界面。 void save() { int i,j,k,flag=0; FILE *fp; fp=fopen(student.dat,w); for(i=0;in;i++) { fprintf(fp,%s %s %d %s %s %s %s %s\n,student[i].num ber,student[i].name,student[i].age, student[i].sex,student[i].time,student[i].add,student[i].tel,student[i].em ail);} fclose(fp); } 说明:定义该函数是为了储存信息至文件,首先必需定义一个文件指针,用指针打开函数打开一个已经存储好的文件,通过一个循环将n个同学的信息存进文件。最后关闭文件,以确保信息不会丢失。函数调用完毕后返回主界面,从而可以持续操作程序。 4、组员名单 XXX 202114160127 模块:删除同学信息、输出同学信息、将信息存入文件 XXX 202114160125 模块:结构体定义、录入信息 XXX 202114160103 模块:修改同学信息 XXX 202114160119 模块:查询同学信息 XXX 202114160140 模块:主界面、增加同学信息 5、结论和心得 XXX:在这次的C程序课程制定中我负责三个模块,分别是:删除同学信息,输出同学信息和将同学信息存入文件。我负责的是相对照较简单的模块,实现的时候不是很吃力。但还是存在很多的小问题,列如忘记分号啊、某些表达式位置不正确导致的逻辑错误等等。在这次制定中我体会到了写程序一定得细心,因为几乎全对还是等于错误,细节决定成败。另外也强化了组员中的友谊,有很多问题都是大家一起讨论解决的。我们讨论分配了各自负责的模块,在接口方面我们开始有一些分歧,但最后都达成了一致。我们每个人都在努力,当最后我们用文件包涵语句将所有的模块包涵起来运行成功的那一刻,我觉得我的付出得到了收获。当然这收获不仅仅是成功的完成了作业,更多是过程中的那种不懈努力的精神,组员间互相的帮助鼓舞,让我收益良多。当然也要感谢老师在制定中对我的帮助,给我的启发,谢谢你们! XXX:通过此次C语言程序制定施行,我实在是获益不浅!C语言是这个学期才开始学习的,有很多地方都没弄懂,所以一开始做题,也是有点模糊,在指导老师的指导下,我们慢慢的进入状态,我们做的是一个同学信息管理系统,内容包括很多。运用的函数也是非常的复杂,我们一组有五个人,我们分工合作,我们每个人各负责一块功能区域,经过几星期的努力,我们完成了大半个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们粗心大意造成的,所以设 计程序一定要仔细,不容一点的马虎。同时,也让我们知道了,合作的力量,如果是孤军奋战的话,我们也不能在规按时间内完成,当然,也多亏老师的指导。 程序制定过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重合计如何从输入导出输出,在这个过程中,可确定所必需的变量、数组、函数,然后确定处理过程--算法。可得最后结论。在程序制定中,可认为也是一个社会,每个一同的社会成员都有不同的想法。程序制定学得的好坏要看你在社会中解决问题的能力的凹凸,所以不同的人编程的结果是不同的。在这个社会中,经验与想法最为重要。 这次制定,让我掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验! XXX:这学期我们学的C语言,以前就听过这个名字,打开书一看简直一窍不通,学好这门科简直就是一个挑战,课前课后都要把书啃一遍,要不然上课就跟不上,终于学期快结束了,我们有一个课程制定,完成一个复杂的程序,我们的题目是做简易同学通讯录系统,难度不小啊。通过组员的分工合作。终于还是完成了制定。 首先感谢郭美老师给予的帮助。通过这次课程制定使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与施行 相结合起来,从理论中得出结论,才干真正为社会服务,从而提升自己的实际动手能力和独立思索的能力。在制定的过程中碰到问题,可以说得是困难重重,这毕竟第一次做的,不免会碰到过各种各样的问题,同时在制定的过程中发现了自己的不够之处,对一些前面学过的知识理解得不够深入,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程制定之后,我们把前面所学过的知识又重新温故了一遍。 做它,难就难在不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。经过一波三折,终于开始正式编程。 编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必需强破自己保持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。 在这次合作中我是负责“修改信息〞这一模块的:〔如下〕void modify() /*修改信息*/ {int i,j,item,num; char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准*/ printf(请输入要要修改的同学的学号:\n); scanf(%s,s1); for(i=0;in;i++) if(strcmp(stu[i].code,s1)==0) num=i; printf(------------------\n); printf(1.修改姓名\n); printf(2.修改年龄\n); printf(3.修改性别\n); printf(4.修改出生年月\n); printf(5.修改地址\n); printf(6.修改 号码\n); printf(7.修改E-mail地址\n); printf(8.退出本菜单\n); printf(------------------\n); while(1) { printf(请选择子菜单编号:); scanf(%d,item); switch(item) { case 1:printf(请输入新的姓名:\n); scanf(%s,s2); strcpy(stu[num].name,s2); break; case 2: printf(请输入新的年龄:\n); scanf(%d,stu[num].age);break; case 3: printf(请输入新的性别:\n); scanf(%s,sex1); strcpy(stu[num].sex,sex1); break; case 4: printf(请输入新的出生年月:\n); scanf(%s,s2); strcpy(stu[num].time,s2); break; case 5: printf(请输入新的地址:\n); scanf(%s,s2); strcpy(stu[num].add,s2); break; case 6: printf(请输入新的 号码:\n); scanf(%s,s2); strcpy(stu[num].tel,s2); break; case 7: printf(请输入新的E-mail地址:\n); scanf(%s,s2); strcpy(stu[num].mail,s2); break; case 8:return; default:printf(请在1-8之间选择\n); } } } 看起来很简短的一点点程序,它可好费了我不少的精力和时间。其间,还是碰到过一些问题。但是很其他几个模块相比,还是相对简单的。char sex1[3],s1[LEN+1],s2[LEN+1];一开始,写成char sex1[3],s1[LEN],s2[LEN]; 后来后来经过多次调试,还是觉得以姓名和学号最长长度+1为好。还有在编写时,总是出现一些低级错误〔如:语句后忘记了;,忘记了输入,输出函数里面的%号,%s,s2里忘记','.还有忘记了运“break〞,直到后来才发现这个问题。〕。除了这些问题,错误。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,无论程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳作成果,是自己经过努力得到的成绩,同时也是学习C语言的一次施行作业,自己进步的证实。 通过这次课程制定,使我对C语言有了更进一步的熟悉和了解,要想学好它要重在施行,要通过不断的上机操作才干更好地学习它,我也发现我的好多不够之处,首先是自己在指法上还不行,常常按错字母,通过学习也有所改善;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中常常出现的错误也不了解,通过施行的学习,我熟悉到学好计算机要重视施行操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在施行,所以后在学习过程中,我会更加凝视施行操作,使自己便好地学好计算机。 在课程制定过程中,收获知识,提升能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程制定的精神带到生活中,不畏困难,勇往直前! XXX:这学期开始接触了C语言,刚开始是有点担心,因为人家说编程很难,但是通过后天的学习,接触多了后发现原来也不是很难,特别是用电脑开始编一些小程序之后,就发现了C语言的乐趣。此次C语言程序制定施行,我们这组做的是一个同学信息管理系统,我们一组有五个人,分工合作,每个人各负责一 部分,内容包括很多。运用的函数也是非常的复杂,经过几星期的努力,我们终于完成了,通过这次施行,我明白了,编程是一件必需要非常细心的工作,而且必需要耐心,更重要的是必需要团队合作,一个人的力量太薄弱了,我们小组在负责各自区域的同时,也和其他组员密切联系和交流,这样我们完成的进度和质量远远超过了我们的预期,很好的诠释了1+1+1+1+15的道理,即使这个过程我们碰到过很多困难,但是我们互相交流,到网上搜索资料,最终还是把困难一一解决了,这次我得到的最大收获就是,团队合作和体会到了编程的乐趣,只要我们以后还能保持下去,我们一定可以编写出很优秀的程序的。 陈赳赳:在这次的课程制定中我负责的是主界面跟修改菜单,在这之中我不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。课程制定是我们专业课程知识综合应用的施行训练,有时候课本上学习的知识不够编某个程序,就必需要自己找资料。体会了学以致用、特别自己劳作成果的喜悦心情,从中发现自己平常学习的不够和薄弱环节,从而加以弥补。在我们一组人的努力下课程制定终于完成的。在课程制按时有很多问题是我不能解决的,都要找同学一起想,让我熟悉到了团队的重要性。 6、致谢 感谢老师在百忙之中抽出宝贵的时间批阅。让我在此向你表示最诚挚的问候:老师,您辛劳了﹗
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服