资源描述
程序设计语言课程设计 学生信息管理系统 系 、 部: 计算机与信息科学系 专 业: 信息与计算科学 班 级: 信本1003班 姓 名: 学 号: 学生信息管理系统1、设计目的本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C+系统编程有一个大致的了解2、 总体设计(程序设计组成框图、流程图)a、学生成绩的录入、统计、查询(可根据名字首字母查询)、修改、删除、输出。 画出功能结构图。3、 详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)函数、部分程序及其说明:int id;/学号char name20;/姓名int age;/年龄char sex;/姓别int score3;/成绩(t语文t数学t英语)char address50;/地址char birthday20; /出生年月char telephone15;/电话char email50;/E-mailint avg;/平均成绩char name120;/登录用户名char mima17;/登录密码struct student stus50;/全局学生结构体数组int count = 0;/统计学生个数 name=yinzhaoxia;/登录名char mima=123456 ;/密码Main():此函数主要是调用录入、统计等函数对成绩表进行处理;通过使用switch函数判断用户所选择的序号,再进入相应的函数。insertStudent();/添加学生信息selectAllStudent():查询所有学生信息AaXingMingChaXunStudent();/姓名首字母查询AaXueHaoChaUunStudent();/根据学号查找AaXingMingChaUunStudent();/根据姓名查找XiuGaiStudent();/修改学生信息AnXueHaoPaiXuStudent();/根据按学号排序AnXingMingShoZiMuPaiXunStudent();/按姓名首字母排序AnChengjPaiXuStudent();/按成绩排序XunZePaiXu(); /选择排序方式ShanChuStudent();/删除学生信息ShanChuStudent1(int len,int index);/根据学号删除学生信息AnXingMingShoZiMuChaXunStudent();/按姓名首字母查询4、 调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措 测试主要的问题: 是“排序”解决方案: 上网查资料和请教老师和同学5、 源程序如下 /* *内容:学生信息管理系统 *作者:尹朝霞 *时间:2011年6月2日 */#include #include #include #include struct student int id;/学号char name20;/姓名int age;/年龄char sex;/姓别int score3;/成绩(t语文t数学t英语)char address50;/地址char birthday20; /出生年月char telephone15;/电话char email50;/E-mailint avg;/平均成绩;struct denglu char name120;/登录用户名char mima17;/登录密码;/全局学生结构体数组struct student stus100;/统计学生个数int count = 0;char mima=123456 ;/密码void insertStudent();/添加void printStudent(struct student s);/输出信息格式void selectAllStudent();/查询void AaXingMingChaXunStudent();/姓名首字母查询void AaXueHaoChaUunStudent();/学号查找void AaXingMingChaUunStudent();/姓名查找void XiuGaiStudent();/修改void AnXueHaoPaiXuStudent();/按学号排序void AnXingMingShoZiMuPaiXunStudent();/按姓名首字母排序void AnChengjPaiXuStudent();/按成绩排序void XunZePaiXu(); /排序void ShangChuStudent();/删除void ShanChuStudent1(int len,int index);/根据学号删除学生void AnXingMingShoZiMuChaXunStudent();/按姓名首字母查询void main() struct denglu denlu;char name=yinzhaoxia;/姓名 char mima220;int i;printf(tt欢迎进入登陆界面n);printf(tt(*_*) 嘻嘻请输入您的名字:);gets(denlu.name1);printf(tt(*_*) 嘻嘻请输入您的密码:);for(i=0;i6;i+) mima2i=getch(); printf(*);mima2i=0;if(strcmp(denlu.name1,name)=0)&(strcmp(mima2,mima)=0)printf(nttt 【.恭喜您登陆成功.】nnn);doint selected;printf(t *欢迎使用学生管理系统*n);printf(1.添加学生 2.删除学生 3.修改学生 4.按学号查找学生n); printf(5.查询所有学生 6.按姓名查询学生 7.排序 8按姓名首字母查询n);printf(9.退出程序n);printf(请选择以上列表中的功能:);scanf(%d,&selected);switch(selected)case 1:insertStudent();/添加break;case 2:ShangChuStudent();/删除break;case 3:XiuGaiStudent();/修改break;case 4:AaXueHaoChaUunStudent();/学号查找break;case 5:selectAllStudent();/查询break;case 6:AaXingMingChaXunStudent();/姓名查找break;case 7: XunZePaiXu(); /排序break;case 8: AnXingMingShoZiMuChaXunStudent();/姓名首字母查询 break;default:printf(t *谢谢使用学生管理系统* n);printf(t *版权所有 * 违者必究* n);exit(0);while(1);elseprintf(nttt 对不起您的输入有误,不能进入n);void insertStudent()char result;int i,sum=0;doprintf(请输入第%d个学生信息:n,count + 1);printf(t学号:); scanf(%d,&stuscount.id);printf(t姓名:);fflush(stdin);gets(stuscount.name);printf(t年龄:);scanf(%d,&stuscount.age);printf(t性别:);fflush(stdin);stuscount.sex = getchar();printf(t成绩:n);sum=0;for(i = 0;i 3;i+)printf(tt第%d门成绩:,i + 1);scanf(%d,&stuscount.scorei); sum+=stuscount.scorei;stuscount.avg=sum/3;fflush(stdin);printf(t家庭地址:);gets(stuscount.address);printf(t出生年月:);gets(stuscount.birthday);printf(t电话:);gets(stuscount.telephone);printf(tE-mail:);gets(stuscount.email); count+; printf(是否还要继续输入学生信息?(y/n));fflush(stdin);result = getchar();while(result != n & result != N);selectAllStudent();void selectAllStudent()int i;printf(所有信息如下:n);printf(学号t姓名t年龄t性别t语文t数学t英语t住址t出生年月t电话tE-mailn);for(i = 0;i count | a 1) printf(对不起没有这个学号,请您认真查询后再输入); else printf(您要查询的学生信息如下:n); printf(学号t姓名t年龄t性别t语文t数学t英语t住址t出生年月t电话tE-mailn); for(i=0;icount;i+) if(a=stusi.id) printStudent(stusi); printf(是否还要继续查询学生信息?(y/n));fflush(stdin);result = getchar(); while(result != n & result != N);void AaXingMingChaXunStudent() char result; int i,g=0; struct student stu1; do g=0; printf(请输入您要查询学生姓名:); fflush(stdin); gets(stu1.name); for(i=0;icount;i+) if(strcmp(stu1.name,stusi.name)!=0) g+; continue; if(g=count) printf(对不起没有这个姓名,请您认真查询后再输入); else printf(您要查询的学生信息如下:n); printf(学号t姓名t年龄t性别t语文t数学t英语t住址t出生年月t电话tE-mailn); for(i=0;i count | b 1) printf(对不起没有这个学号,请您认真查询后再输入);elsefor(i=0;icount;i+) if(b=stusi.id) printf(请重新输入要修改的学生信息:n);printf(请输入学号);scanf(%d,&stusi.id);printf(t姓名:);fflush(stdin);gets(stusi.name);printf(t年龄:);scanf(%d,&stusi.age);printf(t性别:);fflush(stdin);stusi.sex = getchar();printf(t成绩:n);for(j = 0;j 3;j+)printf(tt第%d门成绩:,j + 1);scanf(%d,&stusi.scorej);fflush(stdin);printf(t家庭地址:);gets(stusi.address);printf(t出生年月:);gets(stusi.birthday);printf(t电话:);gets(stusi.telephone);printf(tE-mail:);gets(stusi.email);printf(修改后的学生信息如下:n);printf(学号t姓名t年龄t性别t语文t数学t英语t住址t出生年月t电话tE-mailn);printStudent(stusi); printf(修改后的所有学生信息如下:n);printf(学号t姓名t年龄t性别t语文t数学t英语t住址t出生年月t电话tE-mailn);selectAllStudent();printf(是否还要继续修改学生信息?(y/n));fflush(stdin);result = getchar(); while(result != n & result != N);void AnXueHaoPaiXuStudent() struct student temp; int i,j,k=0; printf(请问您是想按降序还是按升序排序(1/2)); scanf(%d,&k); if(k=1) for(i=0;icount;i+) for(j=0;jcount-i-1;j+) if(stusj.idstusj+1.id) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的学生信息如下:); selectAllStudent(); else if(k=2) for(i=0;icount;i+) for(j=0;jstusj+1.id) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的学生信息如下:); selectAllStudent(); void AnXingMingShoZiMuPaiXuStudent() struct student temp; int i,j,e; printf(请问您是想按降序还是按升序排序(1/2)); scanf(%d,&e); if(e=1) for(i=0;icount;i+) for(j=0;jcount-i-1;j+) if(stusj.name0-stusj+1.name00) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的学生信息如下:); selectAllStudent(); if(e=2) for(i=0;icount;i+) for(j=0;j0) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的学生信息如下:); selectAllStudent(); void AnChengjPaiXuStudent() struct student temp; int i,j,f; printf(请问您是想按降序还是按升序排序(1/2)); scanf(%d,&f); if(f=1) for(i=0;icount;i+) for(j=0;jcount-i-1;j+) if(stusj.avgstusj+1.avg) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的学生信息如下:); selectAllStudent(); if(f=2) for(i=0;icount;i+) for(j=0;jstusj+1.avg) temp=stusj; stusj=stusj+1; stusj+1=temp; printf(排序后的学生信息如下:); selectAllStudent(); void XunZePaiXu() int c; printf(请选择是按学号排序/按姓名的首字母排序/按平均成绩排序(1/2/3)n); scanf(%d,&c); if(c=1) AnXueHaoPaiXuStudent(); else if(c=2) AnXingMingShoZiMuPaiXuStudent(); else if(c=3) AnChengjPaiXuStudent(); void ShangChuStudent()char result;int s;doprintf(请输入你要删除的学生学号n);scanf(%d,&s);if(s count | s 1)printf(对不起,没有这个学号,请您认真查询后再输入n);elseif(count=1) printf(信息已经删完。n); break;elseShanChuStudent1(count,s-1);count-;selectAllStudent();printf(是否还要继续删除学生信息?(y/n));fflush(stdin);result = getchar();while(result != n & result != N);void ShanChuStudent1(int len,int index)int i;for(i = index;i = len;i+)stusi+1.id -=1; stus i = stus i + 1; len-;void AnXingMingShoZiMuChaXunStudent() char result; int i,p=0; char e; do p=0; printf(请输入您要查询学生的姓名首字母); fflush(stdin); e = getchar(); for(i=0;icount;i+) if(e-stusi.name0)!=0) p+;continue; if(p=count) printf(对不起没有这个姓名,请您认真查询后再输入); else printf(您要查询的学生信息如下:n); printf(学号t姓名t年龄t性别t语文t数学t英语t住址t出生年月t电话tE-mailn); for(i=0;icount;i+) if(e-stusi.name0)=0) printf(您要查询的学生信息如下n:);printf(学号t姓名t年龄t性别t语文t数学t英语t住址t出生年月t电话tE-mailn);printStudent(stusi); printf(是否还要继续查询学生信息?(y/n));fflush(stdin);result = getchar(); while(result != n) & (result != N) );
展开阅读全文