收藏 分销(赏)

学生信息标准管理系统.doc

上传人:丰**** 文档编号:2827709 上传时间:2024-06-06 格式:DOC 页数:30 大小:88.04KB 下载积分:12 金币
下载 相关 举报
学生信息标准管理系统.doc_第1页
第1页 / 共30页
学生信息标准管理系统.doc_第2页
第2页 / 共30页


点击查看更多>>
资源描述
一.设计目: 课程设计内容: 1.问题描述 学生信息涉及:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。设计以学生信息管理系统,使之能提供如下功能: (1).系统以菜单方式工作; (2).学生信息录入功能(学生信息用文献保存)---输入; (3).学生信息浏览功能---输出; (4).查询,排序功能---算法: a.按学号查询; b.按姓名查询。 (5).学生信息删除与修改。 2.功能规定 A.界面比较美观; B.有一定容错能力。 3.函数功能描述 ⑴输入某些 通过键盘输入多位学生学生信息。学生信息包具有: 学生姓名、性别、学号、出生年月、年龄等。本次做学生管理系统是运用链表而完毕程序,故第一某些想要实现建立链表 ⑵、输出某些 输出当前已存储学生信息 ⑶、更新某些 ①删除 删除顾客指定学生信息 ,这某些功能是输入学生学号,找到其在链表中存储结点处,并将这整个结点删除,再把该结点前驱结点和后驱节点连接,来实现这个学生信息删除. ②修改 修改顾客指定学生信息 ,这某些是运用输入学生学号,来找到存储该学生信息结点,通过该结点链域来修改其中值域,来实现对学生信息修改. ⑷、查询某些 ①按名字查询 输出顾客查询学生信息,这某些是运用输入学生姓名,来找到存储该学生信息结点,输出该结点值域中内容,来实现对学生信息查询功能. ②按学号查询 输出顾客查询学生信息,同上,只是查询条件为学号 . 4.规定与限制条件 ①.各模块间通过菜单切换和调用 ②.主函数通过调用菜单函数实现对各功能模块调用,各功能模块间依照需要可互相调用。 ③.程序可以保证各模块功能独立和数据共享。不使用全局变量则能保证函数之间独立性,运用形参加实参之间数值传递来实现数据共享。 二.总体设计: 录入数据 break 选取2 输出界面 选取操作 选取9 读取文献 执行freeall() 退出系统 选取1 协助阐明 Break 结束 选取3 增长数据 Break 选取4 选取5 修改数据 增长数据 Break Break 选取6 删除数据 Break 选取7 选取8 显示数据 保存数据 Break Break 输出:无效选项 Break 结束 主界面 选取录入学生信息 输入学生信息 对的 错误 对的 不录入学生信息 录入学生信息 结束 查找 运用函数找到有关结点 与否存在该学生信息 输出该结点值域内容 查询完毕 该学生不存在 修改 调用函数查找到有关结点地址 修改有关结点值域 与否存在该学生信息 修改完毕 三.详细设计: 输入模块 void insert() /*插入函数*/ { int i=n,j,flag; printf("请输入待增长学生数:\n"); scanf("%d",&m); do { flag=1; while(flag) { flag=0; printf("请输入第 %d 个学生学号:\n",i+1); scanf("%s",stu[i].code); for(j=0;j<i;j++) if(strcmp(stu[i].code,stu[j].code)==0) { printf("已有该学号,请检查后重新录入!\n"); flag=1; break;/*如有重复及时退出该层循环,提高判断速度*/ } } printf("请输入第 %d 个学生姓名:\n",i+1); scanf("%s",stu[i].name); printf("请输入第 %d 个学生年龄:\n",i+1); scanf("%d",&stu[i].age); printf("请输入第 %d 个学生性别:\n",i+1); scanf("%s",stu[i].sex); printf("请输入第 %d 个学生出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time); printf("请输入第 %d 个学生地址:\n",i+1); scanf("%s",stu[i].add); printf("请输入第 %d 个学生电话:\n",i+1); scanf("%s",stu[i].tel); printf("请输入第 %d 个学生E-mail:\n",i+1); scanf("%s",stu[i].mail); if(flag==0) { i=i; i++; } } while(i<n+m); n+=m; printf("录入完毕!\n\n"); sort(); } 查找模块 void seek() /*查找*/ { int i,item,flag; char s1[21];/* 以姓名和学号最长长度+1为准 */ 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;i<n;i++) if(strcmp(stu[i].code,s1)==0) { flag=1; printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } if(flag==0) printf("该学号不存在!\n");break; case 2: printf("请输入要查询学生姓名:\n"); scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].name,s1)==0) { flag=1; printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } if(flag==0) printf("该姓名不存在!\n");break; case 3:return; default:printf("请在1-3之间选取\n"); } } } 修改模块 void modify() /*修改信息*/ { int i,item,num; char sex1[3],s1[LEN+1],s2[LEN+1];/* 以姓名和学号最长长度+1为准 */ printf("请输入要要修改学生学号:\n"); scanf("%s",s1); for(i=0;i<n;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"); } } } 四.调试: A先编译程序 B再连接程序 生成目的 C运营程序 1调试中重要问题 调试中重要浮现问题: ⑴经常遇到程序执行到某某些就不运营,而编译和链接都成功,阐明程序设计上有些问题,语法等并未出错,这时就要去再行考虑设计程序哪某些考虑不周全。 ⑵由于这次使用链表来设计程序,就牵扯到形参和实参问题。曾经由于考虑不周全,在自定义函数前基类出错,导致有关值未变化,这里就要考虑好形参和实参问题。刚开始没有那个初始化函数,程序运营后没有输入任何数据就试得去执行显示功能,成果显示是某些乱码!加入初始化函数后,这种现象也随之消失。在没有输入任何信息状况下,不能执行查询、修改、删除、记录、排序功能 。 有时候,忘掉定义就直接调用,使得出错。我这时候才真正体会到了一致性重要。检查程序诸多遍但却始终不懂得输入数据有错,很令人头疼。 2程序局限性和改进之处 由于用链表来设计一种程序,较复杂,最后没来得及,设计有关文献存储来实现将数据保存,以致每次运营程序都要重新输入新数据 改进之处:可以再考虑编写一种函数,这个函数功能是将数据写入文献中并保存。 五.测试成果: 程序运营: 主界面: 输入信息 显示 查询 修改 删除 六.结束语: 回忆学习C语言 过程中,既有高兴又有烦恼。 从领到书那一刻,我就很郁闷,C 语言究竟事学什么,有什么用。刚开始上学时,还在迷茫这门课程是用来做什么。但是,这些感受都是在对这门课程不理解状况下产生。日后慢慢接触多了,听教师讲多了,理解多了,徐徐产生了兴趣。特别是学到语句和函数时,上机操作程序,通过编译,调试和运营后,浮现界面,当时觉得较好奇,想真正学好这门课程。通过一种学期学习,我掌握了基本知识。 期末,被告知要进行课程设计。当时有点懵,感觉学东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为咱们了。 通过两周自学,第二周结束时候,我感觉自己收获挺大,从一开始迷茫,不懂得从何下手到把程序中几种模块编写出来,心里挺开心。但是,咱们又不得不再次陷入困境。在整个程序编写过程中。最难就是修改和删除这两个模块,这也是咱们要解决重点问题。 开始编写修改和删除时,很头疼,去向其她人谋求协助,在别人协助和提示下,我编完了修改程序,但编译时老出错,修改后内容将文本内信息所有覆盖了。困难之时,咱们组其她人,协助了我,完毕了修改和删除。这样话,整个程序基本上所有完毕了,就剩余完善工作了。咱们组写了两个程序,最后,两个程序互相组合,互补,大功告成 虽然设计时完毕了,但是我觉得其中还是由某些局限性之处: 1. 警告句。程序中缺少某些警告句,例如:“与否真删除(y/n)?”。 2. 重名状况。由于考虑不周全,没有设计遇到重名状况该怎么解决。 整个程序完毕了,尚有诸多不完善地方,但愿自己后来办事时候要认真,仔细,考虑周全。 短短几周课程设计结束了,但是这段时间里,我又学到了更多C 知识,如:对象数组,string类,文献流等,同步我也被提示后来办事时候要认真,仔细,考虑周全。,也看到了团队精神和互帮互助重要性。这一点会让我终身受益。通过这次课程设计,我觉得自己肚子里墨水多了,收获也挺大,这几周过挺充实! 七.源程序清单: #include<stdio.h> /*I/O函数*/ #include<stdlib.h> /*其他阐明*/ #include<string.h> /*字符串函数*/ #define BUFLEN 100 /* 缓冲区最大字符数 */ #define LEN 15 /* 学号和姓名最大字符数,实际请更改 */ #define N 100 /* 最大学生人数,实际请更改*/ struct record /*构造体*/ { char code[LEN+1];/* 学号 */ char name[LEN+1];/* 姓名 */ int age;/* 年龄 */ char sex[3];/* 性别 */ char time[LEN+1];/* 出生年月 */ char add[30];/* 家庭地址 */ char tel[LEN+1];/* 电话号码 */ char mail[30];/* 电子邮件地址 */ }stu[N]; int k=1,n,m;/* 定义全局变量 */ void readfile();/* 声明函数 */ void seek(); void modify(); void insert(); void del(); void display(); void save(); void menu(); int main() { while(k) menu(); system("pause"); return 0; } void help() /* 协助*/ { printf("\n1.欢迎使用系统协助!\n"); printf("\n2.进入系统后,先刷新学生信息,再查询;\n"); printf("\n3.按照菜单提示键入数字代号;\n"); printf("\n4.增长学生信息后,牢记保存按8;\n"); printf("\n5.谢谢您使用!\n"); } void readfile()/* 建立信息 */ { char *p="student.txt"; FILE *fp; int i=0; if ((fp=fopen("student.txt","r"))==NULL) { printf("Open file %s error!Strike any key to exit!",p); system("pause"); exit(0); } while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8) { i++; i=i; } fclose(fp); n=i; printf("录入完毕!\n"); } void seek() /*查找*/ { int i,item,flag; char s1[21];/* 以姓名和学号最长长度+1为准 */ 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;i<n;i++) if(strcmp(stu[i].code,s1)==0) { flag=1; printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } if(flag==0) printf("该学号不存在!\n");break; case 2: printf("请输入要查询学生姓名:\n"); scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].name,s1)==0) { flag=1; printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } if(flag==0) printf("该姓名不存在!\n");break; case 3:return; default:printf("请在1-3之间选取\n"); } } } void modify() /*修改信息*/ { int i,item,num; char sex1[3],s1[LEN+1],s2[LEN+1];/* 以姓名和学号最长长度+1为准 */ printf("请输入要要修改学生学号:\n"); scanf("%s",s1); for(i=0;i<n;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"); } } } void sort()/*按学号排序*/ { int i,j,*p,*q,s; char temp[10]; for(i=0;i<n-1;i++) { for(j=n-1;j>i;j--) if(strcmp(stu[j-1].code,stu[j].code)>0) { strcpy(temp,stu[j-1].code); strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp); strcpy(temp,stu[j-1].name); strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp); strcpy(temp,stu[j-1].sex); strcpy(stu[j-1].sex,stu[j].sex); strcpy(stu[j].sex,temp); strcpy(temp,stu[j-1].time); strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp); strcpy(temp,stu[j-1].add); strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j].add,temp); strcpy(temp,stu[j-1].tel); strcpy(stu[j-1].tel,stu[j].tel); strcpy(stu[j].tel,temp); strcpy(temp,stu[j-1].mail); strcpy(stu[j-1].mail,stu[j].mail); strcpy(stu[j].mail,temp); p=&stu[j-1].age; q=&stu[j].age; s=*q; *q=*p; *p=s; } } } void insert() /*插入函数*/ { int i=n,j,flag; printf("请输入待增长学生数:\n"); scanf("%d",&m); do { flag=1; while(flag) { flag=0; printf("请输入第 %d 个学生学号:\n",i+1); scanf("%s",stu[i].code); for(j=0;j<i;j++) if(strcmp(stu[i].code,stu[j].code)==0) { printf("已有该学号,请检查后重新录入!\n"); flag=1; break;/*如有重复及时退出该层循环,提高判断速度*/ } } printf("请输入第 %d 个学生姓名:\n",i+1); scanf("%s",stu[i].name); printf("请输入第 %d 个学生年龄:\n",i+1); scanf("%d",&stu[i].age); printf("请输入第 %d 个学生性别:\n",i+1); scanf("%s",stu[i].sex); printf("请输入第 %d 个学生出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time); printf("请输入第 %d 个学生地址:\n",i+1); scanf("%s",stu[i].add); printf("请输入第 %d 个学生电话:\n",i+1); scanf("%s",stu[i].tel); printf("请输入第 %d 个学生E-mail:\n",i+1); scanf("%s",stu[i].mail); if(flag==0) { i=i; i++; } } while(i<n+m); n+=m; printf("录入完毕!\n\n"); sort(); } void del() /* 删除信息 */ { int i,j,flag=0; char s1[LEN+1]; printf("请输入要删除学生学号:\n"); scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].code,s1)==0) { flag=1; for(j=i;j<n-1;j++) stu[j]=stu[j+1]; } if(flag==0) printf("该学号不存在!\n"); if(flag==1) { printf("删除成功,显示成果请选取菜单6\n"); n--; } } void display() /* 显示信息 */ { int i; printf("所有学生信息为:\n"); printf("学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mail\n"); printf("--------------------------------------------------------------------\n"); for(i=0;i<n;i++) { printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } } void save() /* 保存 */ { int i; FILE *fp; fp=fopen("student.txt","w");/*写入*/ for(i=0;i<n;i++) { fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail); } fclose(fp); } void menu() /* DOS界面悬着 */ { int num; printf(" \n\n 电子信息工程——学生信息管理系统 \n\n"); printf(" ———————————— \n\n"); printf(" * 制作人:张三 李四 * \n \n"); printf(" ———————————— \n\n"); printf("===========================>系统功能菜单<=================== \n"); printf("查询前请先刷新系统! \n"); printf(" <-------------------------------------------> \n"); printf(" ---------------------------------------------------------- \n"); printf(" [ 1.系统协助及阐明 ] [ 2.刷新学生信息 ] \n"); printf(" ---------------------------------------------------------- \n"); printf(" [ 3.查询学生信息 ] [ 4.修改学生信息 ] \n"); printf(" ---------------------------------------------------------- \n"); printf(" [ 5.增长学生信息 ] [ 6.按学号删除信息 ] \n"); printf(" ---------------------------------------------------------- \n"); printf(" [ 7.显示当前信息 ] [ 8.保存当前学生信息] \n"); printf(" ---------------------------------------------------------- \n"); printf(" [ 9.退出系统 ] \n"); printf(" ----------------------------------------- \n"); printf(" <=========== ======= ============> \n"); printf("请选取菜单编号:"); scanf("%d",&num); switch(num) { case 1:help();break; case 2:readfile();break; case 3:seek();break; case 4:modify();break; case 5:insert();break; case 6:del();break; case 7:display();break; case 8:save();break; case 9:k=0;break; default:printf("请在1-9之间选取\n"); } }
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服