课程设计--学生信息管理系统.docx
合 肥 师 范 学 院(本 科)课程设计说明书课 程数据结构题 目01学生信息管理系统姓 名陈兆胜 王涛 解淼学 号1110451055,1110451033,1110451065专业班级2011级计算机软件一班指导教师程敏完成日期2012年12月26日目录1. 绪言.32. 需求分析.3系统以菜单方式工作;.学生信息录入功能输入;.学生信息浏览功能输出; 查询功能算法;按学号查找.按姓名查找. 学生信息的删除与修改3. 计划与进度安排.44.系统设计.51.系统总框架. 2.设计内容及要求. 3.模块设计.5.运行及结果76.设计体会与建议127.源代码131.绪言随着学校的快速发展和在校学生的增多,学生管理工作变得越来越复杂,许多工作非常繁琐,消耗大量的人力物力。比如学生档案管理,学生的姓名出生年月等资料在做了修改后,可能在招办学生科财务科有同一个学生的几份不同档案材料,数据共享性极差;有的学生欠费,财务部门也很难及时发现;有的学生中途变更学籍,给教学管理工作带来不便。2.需求分析 用C实现学生信息管理系统,学生信息包括:学号姓名性别地址出生年月电话E等。该系统主要有以下功能:系统以菜单方式工作;学生信息录入功能输入;学生信息浏览功能输出;查询功能算法;按学号查找按姓名查找学生信息的删除与修改。3.计划与进度安排:第八周:小组成员一起制定计划完成对该系统的模块功能函数的编写,计划主要由我负责前。 三个模块功能函数的编写;王涛负责查询功能函数的编写;解淼负责学生信息的删除与修改功能函数的编写。最后我们共同负责主函数的编写。 第九周第十二周:小组成员分别就自己的任务完成五个函数功能,这几周根据完成情况,大家可以独立完成,完成较快的人也可以帮助未完成的人,争取较短的时间编出一个基本的框架;第十三周第十四周:完善五个功能函数并尝试对主函数程序的编写。下面几周都是对程序一个总的编写与设计,相对来说,比较难,事情比较细腻,所以要实现以上功能,所耗时间较长。争取在规定的时间里完成。4.系统设计1.系统总框架学生信息管理系统浏览学生信息删除学生信息录入学生信息修改学生信息查询学生信息退出程序录入学生信息录入学生信息2.设计内容及要求 设计编写一个学生基本信息管理系统,主要管理学生基本信息。 1.建立学生信息,每个学生信息包括姓名,学号,年龄,电话号码, 生日,籍贯。 2.通过输入功能函数,用户可以录入学生基本信息。 3.排序:按年龄大小排序。 4.查找:分别按学号查找函数或姓名查找函数查找。 5.删除:建立按姓名删除函数删除学生信息。 6.插入:建立插入函数插入学生信息。 7.输出:建立显示函数输出学生信息。 8.实现简单的菜单调用。3.模块设计模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明。模块二:结构体的建立,定义学生的学号,姓名,年龄等基本信息。模快三:void shuru( )定义了输入函数void xianshi( ) 定义了输出函数void anxingmingchazhao( ) 定义了按姓名查找函数void anxuehaochazhao( ) 定义了按学号查找函数void chazhao( ) 定义了查找函数,通过调用void anxingmingchazhao( )和void anxuehaochazhao( )函数来实现查找函数。void shanchu( ) 定义了删除函数。void paixu( )定义了按年龄从大到小的排序函数。void charu( ) 定义了插入函数,调用了void paixu( )和void shuru( )函数。switch(change)设定用学号查找,用姓名查找两个分支。fflush(stdin)清除缓存函数,起清屏作用。5.运行及结果学生信息管理系统菜单选择 学生信息的输入学生信息的输出 学生信息的查找1.按姓名查找 2.按学号查找学生信息的删除- 8 - 学生信息的插入插入后显示退出学生信息管理系统6.设计体会与建议这次的学生信息管理系统的设计中,使我懂得课堂上的知识,必须要通过实践操作才能掌握。在练习中,遇到一些问题,需要具体分析, 具体操作,不断调试。在这过程中,遇到过很多问题。刚编写程序时,总是出错,经过不断地调试后来解决了。通过这次的设计,我发现了自身知识的欠缺,上机操作的经验不足,以及粗心。比如,一些错误不知道怎么改,后来同学讨论后才调试成功,还有字符串的比较都不熟,有时掉了地址符等等。虽然有很多欠缺,但在这过程中我也受益良多,感觉自己对程序的处理越来越清晰。在调试过程中,我发现有时一个小小的错误也会给程序带来很大的麻烦,所以以后应该更加细心,多多操作,积累经验。7.源代码#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> struct student int id; char name10; int age; char sex10; char birthady20; int tel; char nativeplace50; st50; int i=0; void shuru() char a; do printf("n请输入学号:"); scanf("%d",&sti.id); fflush(stdin);printf("请输入姓名:"); gets(sti.name); printf("请输入年龄:"); scanf("%d",&sti.age); fflush(stdin); printf("请输入姓别:"); gets(sti.sex); fflush(stdin); printf("请输入生日:"); gets(sti.birthady); printf("请输入电话:"); scanf("%d",&sti.tel); fflush(stdin); printf("请输入籍贯:"); gets(sti.nativeplace); printf("是否继续输入另外一个学生信息?(y/n)"); fflush(stdin); a=getchar(); i+; while(a='y' && i<=50); void xianshi() int j; printf("n");printf("学号tt姓名t年龄t性别t生日tt电话tt籍贯n"); for(j=0;j<i;j+) printf("%dt%st%dt%st%st%dt%sn", stj.id,stj.name,stj.age,stj.sex,stj.birthady,stj.tel,stj.nativeplace); void paixu() /按年龄从大到小排序函数 int j,k; int temp; for(j=0;j<i;j+) for(k=0;k<i-1-j;k+) if(stk.age<stk+1.age) temp=stk.age; stk.age=stk+1.age; stk+1.age=temp; xianshi(); /排序后输出 void anxingmingchazhao() int m; char name20,b; do printf("n请输入想查找的学生姓名:"); fflush(stdin); gets(name); for(m=0;m<i;m+) if(strcmp(name,stm.name)=0) printf("nt您查找的学生在第%d个位置找到了!n",m+1); break; if(m>=20) printf("nt没有找到这个学生!n"); else printf("学号tt姓名t年龄t性别t生日tt电话tt籍贯n"); printf("%dt%st%dt%st%st%dt%sn", stm.id,stm.name,stm.age,stm.sex,stm.birthady,stm.tel,stm.nativeplace); printf("n是否查找另一个学生的信息?(y/n)"); fflush(stdin); b=getchar(); while(b='y'); void anxuehaochazhao()int id,m;char b;doprintf("n请输入想查找的学生学号:");fflush(stdin);scanf("%d",&id);for(m=0;m<i;m+)if(id=stm.id)printf("nt您查找的学生在第%d个位置找到了!n",m+1); break; if(m>20)printf("nt没有找到这个学生!n"); else printf("学号tt姓名t年龄t性别t生日tt电话tt籍贯n"); printf("%dt%st%dt%st%st%dt%sn", stm.id,stm.name,stm.age,stm.sex,stm.birthady,stm.tel,stm.nativeplace); printf("n是否查找另一个学生的信息?(y/n)"); fflush(stdin); b=getchar(); while(b='y'); void chazhao() int change;printf("ntttt请输入查找类型:n");printf("tttt1:按姓名查找n");printf("tttt2:按学号查找n"); fflush(stdin); printf("tttt请输入功能选项:"); scanf("%d",&change); switch(change)case 1:anxingmingchazhao();break;case 2:anxuehaochazhao();break; void shanchu() char name20,c; int a,b; do printf("n请输入要删除的学生姓名:"); fflush(stdin); gets(name); for(a=0;a<i;a+) if(strcmp(name,sta.name)=0) break; for(b=a;b<i;b+) stb=stb+1; if(a>i) printf("t没有找到这个学生!n"); else i-; xianshi(); printf("n是否继续删除另一个学生信息?(y/n) "); fflush(stdin); c=getchar(); while(c='y'); void charu() shuru(); paixu(); void main() /主函数 int change; do system("cls"); printf("=学生信息管理系统=n"); printf("tttt1:输入学生信息n"); printf("tttt2:显示学生信息n"); printf("tttt3:查找学生信息n"); printf("tttt4:删除学生信息n"); printf("tttt5:插入学生信息n"); printf("tttt6:退出程序n"); fflush(stdin); printf("tttt请输入功能选项:"); scanf("%d",&change); switch(change) case 1: shuru(); break; case 2: xianshi(); break; case 3: chazhao(); break; case 4: shanchu(); break; case 5: charu(); break; case 6: break; getch(); while(change!=6);