学生学籍系统软件工程报告完成态620_第1页
学生学籍系统软件工程报告完成态620_第2页
学生学籍系统软件工程报告完成态620_第3页
学生学籍系统软件工程报告完成态620_第4页
学生学籍系统软件工程报告完成态620_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

w软件工程课程设计报院系专业成员班级学号计算机科学与技术(嵌入式)_森坤宋晨光 15级计嵌班宋晨光201541014 坤201541016W森201541018,包括学生的学号、姓名、院系、专业、班级、年龄、性别、民族、出生日期和籍贯信息。由于目前的学生学籍管理系统并不十分完善,在高等学校的教务管理工作中,学生信息的网上查询都是十分复杂、棘手的工作。耗物力;如今面对大量的学生数据、报表,手工处理式已经很难跟上现代化的步伐。随着计算机技术及网络通讯技术的飞速发展,多学校已经有了较好的计算机应用甚至网络硬件建设基础。因此为提本系统正是为解决这一问题而设计的,大大减少了以往学生管w随着高校规模的不断增加,学生人数的增加,学校对学生管理的难度也越来越大,而学校对学生的管理,其实主要是对学生信息的管理,现代化程度。现代科技的发展,尤其是软件行业的发展使得很多的管理工作都由计算机来完成,这样不仅能节省人力和物力,而且能够得到一要开发出相应的软件对学生学籍进行适当的管理。只有管好学生才能更运用计算机来管理学生学籍,从而取代了人工管理模式下由于各种原因率。我们在现行系统初步调查的基础上提出了新系统目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。技术上的可行性分析主要分析现有技术条件能否顺利完成开发工w据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术以较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规主要是对开发学籍管理系统的高校资金进行评价,一面是估算开发它的支出费用,其中包括设备购置费、软件开发费、管理和维护费、人员工资和培训费等。另一面是估算学籍管理系统这个软件可能取得的收益中可以用来衡量的那部分。并对目前的软件市场进行调查,所做软件是否有很大的销售市场和相当规模的用户群。所做软件的开发成本与客户提出的要否可达到双都满意。并且,分析系统开发是否会对其它产品或利润带来一定影响。经过调查我们了解到,现在很多高校都在寻找功能更加齐全的管费的代价。经过对上述几个面的调查研究和分析,我们得出高校这个软件的市场前景是相当客观的,在经济角度来说,开发学生学籍管理是可w分的发挥作用;系统界面友好美观,操作简单易行,易于理解,功能更常熟悉,所以操作者经过短时间的培训就可以使用高校学籍管理系统。设计将会按时、高质量完成。所以,系统研制和开发是可以马上进行w4t3Tf0.-tsctuAsiyaww沖宿臣=■号绘|*±^fi-TKEKWf-Tjrs.l^甸■ff-甸士生殴沱m负____________,/L=¥±砂界-学主利壬誉千1祐、晋H菱点融fl在住展”・tn*£E低上饰峑龙则3H1尊蛀兰〒蛋■址曙耳■'aiQ书.3妊咖.IL上图为本系统所完成功能的一个基本信息图。用户可通过本软件,对学生的在校情况信息有一个清晰的了解,帮助用户查询和修改学信息化的管理。w经分析先给出该系统的系统流程图,如图2所示:该系统主要包括学生基本信息模块。系统要实现基本信息录入、基本信息。信息的修改、删除。图3系统数据流程图根据对数据流图和数据字典的分析,我们可以确定该应用中的实E-R图。ww系系统管理洗学学生信息管理查查询信息修改信息和修改学生的相关信息,从而对学生实现信息化的管理wERwww根据上面的需求分析,设计好数据库系统,然后开发前台应用程序。所开发的前台界面要求用户可便操作,同时很好的完成每一个窗口所实现的功是管理员,有学籍管理、课程管理。学籍管理包括增加和删除以及修改学籍信息,课程管理具体包括增w加、删除和修改课程信息。接下来的操作有修改密码、查看个人信息、查看课程信息。具体的学生学籍管理系统总体流程图。如图9所示。w统主页用户登录功管理员学籍管理课程管理码查看个人信息查看课程信息退出系统w结束用户登录后输入用户名和密码并选择角色,进入学生学籍管理系统。具体流程图如图10所示进入学生学籍管理系统后,若是管理员,则其有学籍管理或课程管理。管理员权限具体流程图如图w用户进入学生学籍管理系统后,若是学生登录,有修改密码,查看个人信息,查看课程信息等功能#include"stdio.h"#include"conio.h"#include"stdlib.h"#include"string.h"#defineN1000数,可更改structstudent{5.项目编码〃N为可输入的学生总人数,可根据需要更改为宏定义的(在创建密码函数中)可建立的登陆用户个//定义学生信息结构体数组wcharnum[9];charname[20];chardepar[15];charzhuanye[15];charclasses[5];charage[3];charsex[4];charnation[5];//学号//姓名//院系//专业//班级//年龄//民族charbirth[9];//出生日期charadd[10];//籍贯structcode//定义密码结构体数组{charname[20];charcode[7];}co[M],sO;//确认是否新创建密码文件模块intcode(){FILE*fp;if((fp=fopen(”学生学籍管理系统__code.txt","rt"))==NULL){printf("密码文件不存在,请输入新的用户名及密码:\n");//若不存在此密码文件,则提示用户创建密码printf("请输入任意键继续r);getch();system("cls");return1;}elsereturn0;有密码文件返回0}//新创建初始密码//无//已voidcode_input(){FILE*fp;inti;if((fp=fopen(”学生学籍管理系统__code.txt","wt"))==NULL);//当建立密码文件成功时,进入for循环for(i=0;i<M;i++)为宏定义的可建立的登陆用户个数,可更改{printf("请录入第%d个用户名:",i+1);建不同的用户名及密码scanf("%s",co[i].name);printfd多6位):",i+1);scanf("%s",co[i].code);printf("\n”);fwrite(&co[i],sizeof(structcode),1,fp);保存进文件中//M//创//将密码}fclose(fp);getch();system("cls");}//用户登陆验证模块intenter(charname1[20],charcode1[6]){FILE*fp;intflog=0;inti;fp=fopen(”学生学籍管理系统_code.txt","rt");//件for(i=0;i<M;i++){fread(&co[i],sizeof(structcode),1,fp);打开存放密码的文//读密码文件if((strcmp(name1,co[i].name)==0))//如果输入的用户名与已存在用户名相同,再比较密码是否相同,否则进行下一个用户名的比较if((strcmp(code1,co[i].code)==0))密码是否一致return1;数}//比较此用户名下的//验证成功后回到主函}if(i>=M)合条件的用户名与密码,则直接跳出程序printf("******您无权进入此管理系统fclose(fp);getch();exit(1);}//从文件读入数据intread_file(structstudentstu[])//当比较完成后,都没有符{FILE*sp;inti=0;system("cls");if((sp=fopen(”学生学籍管理系统—学生信息.txt","rt"))==NULL)//读文件,若文件不存在,则需要创建一个新的文件(文件创建在save_file函数中完成){printf("\n学生学籍管理系统建!\n");getch();system("cls");return0;}while((fread(&stu[i],sizeof(struct是否处在结束位置{if(stu[i].num==0)空,则跳出循环break;__学生信息文件不存在,请创student),1,sp))==1)〃判断文件//若文件容为welse//若文件容不w构体数组的数量}fclose(sp);returni;代表文件中学生的人数}//保存学生信息(保存在文件中)voidsave_file(structstudentstu[],intsum){FILE*sp;inti;if((sp=fopen(”学生学籍管理系统__学生信息{printf("读文件错误!\n");建不成功,返回menu函数;turn}for(i=0;i<sum;i++)if(fwrite(&stu[i],sizeof(structstudent1,sp)!=1)件,sum为现有总学生人数,若未保存成功,提示printf(”写文件错误!\n");fclose(sp);n}//创建并录入信息intfound(structstudentstu[]){inti=0,x;system("cls");printf("请输入要录入的学生的个数:\n");if(x==0)//i为文件结•txt","wb"))==NULL)〃//创//保存文"写文件错误!";return0;do入信息//输{printf("\n请录入第%d个学生的信息:\n",i+1);printf("请录入学号:");scanf("%s",stu[i].num);printf("\n请录入姓名:");scanf("%s",stu[i].name);printf("\n请录入院系:");scanf("%s",stu[i].depar);printf("\n请录入专业:");scanf("%s",stu[i].zhuanye);printf("\n请录入班级:");scanf("%s",stu[i].classes);printf("\n请录入性别:”);scanf("%s",stu[i].sex);printf("\n请录入年龄:");scanf("%s",stu[i].age);printf("\n请录入出生日期(yyyymmdd):");scanf("%s",stu[i].birth);printf("\n请录入民族:");scanf("%s",stu[i].nation);printf("\n请录入籍贯:");scanf("%s",stu[i].add);system("cls");}while(i<x);建save_file(stu,x);printf("录入完毕,请按任意键返回”);getch();returni;}//修改学生信息//当i>=x(用户要求创//保存学生信息致文件//返回创建学生的人数voidmodify(structstudentstu[],intsum){inti,item,a=1;item控制子菜单的选择chars1[8];FILE*sp;system("cls");read_file(stu,sum);do//读函数{printf("\n\n\n请输入你要修改的学号:\n");scanf("%s",s1);II要修改的学生学for(i=0;i<sum;i++){if(strcmp(stu[i].num,s1)==0)信息//查找此学生//若找到该生,输出该生的printf(”该学生学号:%s\n",stu[i].nuprintf(”该学生姓名m);:%s\n",stu[i].printf(”该学生院系name);:%s\n",stu[i].deprintf(”该学生专业par);:%s\n",stu[i].zhuaprintf(”该学生班级nye);:%s\n”,stu[i].claprintf(”该学生性别sses);:%s\n",stu[i].sexprintf(”该学生年龄);该学生民族该学生民族:%s\n",stu[i].nation);该学生籍printf(”贯:%s\n",stu[i].add);a=0;break;}if(a==1)输出提示语句tftf("\n\n该生,则继续循环重新输入学生学号}while(该生,则继续循环重新输入学生学号//当a=0,即没有找到printf("\t****************\n")・printf("\t你选择你要修改的选:\n");项修改姓名\n");项修改年龄\n");修改性别\n");\n");"i8.*修改民族\n");"i9.*退出菜单\n");"iOtf(.\t****************\n")・while(1){printf("\n\t请选择你要进行的操作:");scanf("%d",&item);switch(item){case1:///item控制子菜单的选择//修改姓名printf("\t请输入新的姓名:”);scanf("%s",stu[i].name);printf("\n\n\n修改成功!\n");save_file(stu,sum);break;case2://修改年龄printf("\t请输入新的年龄:");scanf("%s",stu[i].age);printf("\n\n\n修改成功!\n");save_file(stu,sum);break;case3://修改性别printf("\t请输入新的性别:");scanf("%s",stu[i].sex);printf("\n\n\n修改成功!\n");save_file(stu,sum);wbreak;wcase4://修改出生日期printf("\t请输入新的出生年月(yyyy.mm):”)scanf("%s",stu[i].birth);printf("\n\n\n修改成功!\n");save_file(stu,sum);break;case5://修改籍贯printf("\t请输入新的籍贯:");scanf("%s",stu[i].add);printf("\n\n\n修改成功!\n");save_file(stu,sum);break;case6://修改院系printf("\t请输入新的院系:");scanf("%s",stu[i].depar);printf("\n\n\n修改成功!\n");save_file(stu,sum);break;case7://修改专业printf("\t请输入新的专业名称:");scanf("%s",stu[i].zhuanye);printf("\n\n\n修改成功!\n");save_file(stu,sum);break;case8://修改班级printf("\t请输入新的班级:");scanf("%s",stu[i].classes);printf("\n\n\n修改成功!\n");save_file(stu,sum);break;case9://修改民族printf("\t请输入新的民族名称:”);scanf("%s",stu[i].nation);printf("\n\n\n修改成功!\n");save_file(stu,sum);breakcase0:return;//不修改,退出t}}}//查询学生信息voidseek(structstudentstu[],intsum){inti,item,flag;chars1[11];system("cls");while(1){system("cls");printf("\n\n\t\t----------------\n");printf("\t\tprintf("\t\tprintf("\t\t1.按学号查询\n");2.按姓名查询\n");3.退出本菜单\n");printf("\t\t----------------\n");printf("\t\t请选择子菜单编号:”);scan//选择子菜单f("%d",&item);flag=0;witch(item)case1:printf("\t\tsca//按学号进行查找请输入要查询的学生的学号:");if(strcmp(stu[i].num,s1)==0){//判断学号是否存在//输出flag=1;printf("该学生学号:%s\n",stu[i].num);printf("该学生姓名:%s\n",stu[i].name);printf("该学生院系:%s\n",stu[i].depar);printf(”该学生专业:%s\n",stu[i].zhuanye);printf("该学生班级:%s\n",stu[i].classes);printf("该学生性别:%s\n",stu[i].sex);printf("该学生年龄:%s\n",stu[i].age);printf("该学生出生日期:%s\in",stu[i].birth);printf("该学生民族:%s\n",stu[i].nation);printf("该学生籍贯:%s\n",stu[i].add);getch();}if(flag==0)printfn\n\n\t\t该学号不存在!\n");getch();break;case2://按姓名进行查找printf("\n\n\t\t请输入要查询的学生的姓名:");scanf("%s",s1);for(i=0;i<sum;i++)if(strcmp (stu[i].name,s1)==0)//判断姓名是否存在{//输出flag=1;printf("该学生学号:%s\n",stu[i].num);printf("该学生姓名:%s\n",stu[i].name);printf("该学生院系:%s\n",stu[i].depar);printf("该学生专业:%s\n",stu[i].zhuanye);printf("该学生班级:%s\n",stu[i].classes);printf("该学生性别:%s\n",stu[i].sex);printf("该学生年龄:%s\n",stu[i].age);printf("该学生出生日期:%s\in",stu[i].birth);printf("该学生民族:%s\n",stu[i].nation);printf("该学生籍贯:%s\n",stu[i].add);getch();}if(flag==0)printf("\n\n\n\t\tgetch();case3:system("cls");return;default:printf("\n\n\n\t\t请在1-3之间选择\n”);//若输入getch();}}}//删除某学生信息intdel(structstudentstu[],intsum){inti,j,flag=0;chars1[9];system("cls");printf("\n\n\t\tscanf("%s",s1);for(i=0;i<sum;i++)请输入要删除学生的学号:”);if(strcmp(stu[i].num,s1)==0){flag=1;后一个数组覆盖此数组,循环,即可删除for(j=i;j<sum_1;j++)//判断学号是否存在//该学号存在,用stu[j]=stu[j+1];}if(flag==0)tf("\n\n\tf("\n\n\t\tgetch();getch();if(flag==1){tf("\n\tf("\n\n\n\t\t}save_file(stu,sum);returnsum;//该学号不存在//删除成功,输出//保存//返回删除后存在的学生人数}//显示打印已有学生信息voidshow(structstudentstu[],intsum){inti;system("cls");printf("\n\n\t\t所有学生的信息为:\n");for(i=0;i<sum;i++)//for息{printf(”学号:%s\t",stu[i].num);printf(”姓名:%s\t",stu[i].name);printf("院系:%s\t",stu[i].depar);printf("专业:%s\t",stu[i].zhuanye);printf("班级:%s\t",stu[i].classes);printf("性别:%s\t",stu[i].sex);printf("年龄:%s\t",stu[i].age);printf("出生日期:%s\t",stu[i].birth);printf("民族:%s\t",stu[i].nation);printf("籍贯:%s\n\n",stu[i].add);}printf("按任意键返回");getch();system("cls");}//添加学生信息intinsert(structstudentstu[],intsum){inti,j,flag,m;FILE*sp;system("cls");printf("\tscanf("%d",&m);read_file(stu);w件循环打印信//在添加前读wo{flag=1;i=sum;数组下标,添加学生,保存到当前已有数组的下一个,while(flag){flag=0;printf("\n\n请输入第%d个学生的学号:",i+1);scanf("%s",stu[i].num);for(j=0;j<i;j++)//判断此学号是否存在if(strcmp(stu[i].num,stu[j].num)==0){prin该学号已有,请重新输入!\n");tf("\n\n\nflag=1;/*如果该学号已有则立刻对出该}printf("\n请输入第%dscanf("%s",stu[i].name);printf("\n请输入第%dscanf("%s",stu[i].depar);个学生的姓名:",i+1);个学生的院系:",i+1);printf("\n请输入第%d个学生的专业:",i+1);scanf("%s",stu[i].zhuanye);printf("\n请输入个学生的班级:",i+1);scanf("%s",stu[i].classes);printf("\n请输入第%d个学生的性别:",i+1);scanf("%s",stu[i].sex);printf("\n请输入第%d个学生的年龄:",i+1);scanf("%s",stu[i].age);printf("\n请输入第%d个学生的出生日期:",i+1);scanf("%s",stu[i].birth);printf("\n请输入第%d个学生的民族:",i+1);scanf("%s",stu[i].nation);printf("\n请输入第%d个学生的籍贯:",i+1);scanf("%s",stu[i].add);if(flag==0){}}while(i<sum+m);//当下标i小于sum+m时,循环继续,stu[sum+m]指向添加全部学生后所用数组的下一个单元sum+=m;printf("\n\n\n\n\n\n\n\n\t\t\t\tsave_file(stu,sum);getch();//添加完毕后,学生总人数//保存数}system("cls");returnsum;//返回添加完成后现有的学生人//对学生信息排序voidrank(structstudentstu[],intsum){inti,j;FILE*sp;structstudents1;system("cls");for(i=0;i<sum-1;i++)//对学生信息按照学号用选择排序法进行排序for(j=i+1;j<sum;j++)//小者换if(strcmp(stu[i].num,stu[j//小者换到stu[i]{s1=stu[i];stu[i]=stu[j];stu[j]=s1;}printf("\n\n\t\tfor(i=0;i<sum;i++)的学生信息所有学生的信息为:\n");//打印排好后{printf("学号:%s\t",stu[i].num);printf(”姓名:%s\t",stu[i].name);printf("院系:%s\t",stu[i].depar);printf("专业:%s\t",stu[i].zhuanye);printf("班级:%s\t",stu[i].classes);printf("性别:%s\t",stu[i].sex);printf("年龄:%s\t",stu[i].age);printf("出生日期:%s\t",stu[i].birth);printf("民族:%s\t",stu[i].nation);printf("籍贯:%s\n\n",stu[i].add);}printf("按任意键返回");getch();system("cls");}//对班级的学生人数进行统计voidcount(structstudentstu[],intsum){inti,count=0;chars1[5],s2[5],s3[5];system("cls");printf("\t\t请输入你要统计学生人数的学院:”);scanf("%s",s1);printf("\t\t请输入你要统计学生人数的专业:”);scanf("%s",s2);printf("\t\t请输入你要统计学生人数的班级:”);scanf("%s",s3);for(i=0;i<sum;i++)if(strcmp(s1,stu[i].depar)==0&&strcmp(s2,stu[i].zhuanye)==0&&strcmp(s3,stu[i].classes)==0)count++;为符合条件的学生人数//判断条件//countprintf("%s学院%s专业%s班级的学生人数为:%d人”,s1,s2,s3,count);getch();}//菜单函数voidmenu(){intchoice,sum;structstudentstu[N];sum=read_file(stu);//sum为现已存入文件中学生的人数do{system("cls");printf("\n\n\n");printf("\t\t**********^欢迎进^入**********\n")・tf("\t\t********tf("\t\t\t1.tf("\t\t\t2.tf("\t\t\t3.tf("\t\t\t4.tf("\t\t\t5.tf("\t\t\t6.tf("\t\t\t7.tf("\t\t\t8.tf("\t\t\t9.tf("\t\t\t0.tf("\t\t\t学生学籍管理系统********\n\n\n"创建学生信息\n");修改学生信息\n");查询学生信息\n");删除学生信息\n");添加学生信息\n");保存学生信息\n");显示已录入学生信息\n");对学生信息排序\n");统计学生信息\n");退出程序\n");请选择您要执行的操作(0~9):");scanf("%d",&choice);switch(choice){break;case1:sum=found(stubreak;//sum=创建后所存储的学生人数case2:modify(stu,sum);break;//修改case3:seek(stu,sum);询case4:sum=del(stu,sum);IIsum=删除学生后所存储的学生人数case5:sum=insert(stu,sum);IIsum=添加学生后所存储的学生人数case6:save_file(stu,sum);存文件case7:show(stu,sum);示case8:rank(stu,sum);序case9:count(stu,sum);计某班级学生人数case0:}}while(choice!=0);}break;break;break;break;break;break;break;break;IIIvoidmain(){intflag=0;flag=code();//确认是否新创建密码文件。若没有存放密码的文件,则flag=1,若有,flag=0;if(flag)//判断if条件是否成立code」nput();//当flag=1,即没有存放密码的文件时,进入code_input()函数,创建用户名及密码;当flag=0,则不用新建密码;printf("*******请输入你的用户名及密码*******:\n");//登陆该管理系统前需身份验证scanf("%s%s",sO.name,s0.code);II输入用户的用户名

温馨提示

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

最新文档

评论

0/150

提交评论