C-语言课程设计学生选课系统(完整版)_第1页
C-语言课程设计学生选课系统(完整版)_第2页
C-语言课程设计学生选课系统(完整版)_第3页
C-语言课程设计学生选课系统(完整版)_第4页
C-语言课程设计学生选课系统(完整版)_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

C_语言课程设计学生选课系统(完整版)(文档可以直接使用,也可根据实际需要修改使用,可编辑欢迎下载)

*******************C_语言课程设计学生选课系统(完整版)(文档可以直接使用,也可根据实际需要修改使用,可编辑欢迎下载)实践教学*******************兰州理工大学计算机与通信学院2021年春季学期C程序设计课程设计题目:学生选课系统专业班级:姓名:学号:指导教师:成绩:摘要学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的决策者、管理者管理、查看课程来说都有至关重要,所以学生选课管理系统应该能够为广大学、师生提供充足的信息和快捷的课程选择过程,有助于学生选好每一门课程,此系统系统选课方便、快捷,用简单的界面来展示学生的选课信息,应用简单明了、存储量大、可靠性高、保密性好、寿命长、成本低等优点,可以极大的提高对学生信息管理的效率。利用C语言开发,实现了简单的学生课程信息的录入、修改、查询、删除等操作,并且能够利用文件系统长久的保留原始数据。目录一、需求分析 1二、总体设计 1三、详细设计 21、数据定义 32、算法流程图 3四、编码 6五、调试 7六、设计总结 10致谢 11参考文献 12附录 13 一、需求分析语言文字描述系统要做什么 数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。二、总体设计系统由哪几个功能模块构成,给出功能模块图。C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下七大模块:选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。菜单选择模块学生选课菜单选择模块学生选课录入课程信息课程管理学生信息管理系统信息查看及储存录入课程信息课程管理学生信息管理系统信息查看及储存退出系统录入学生信息完成选择模块完成选择模块

三、详细设计1根据n的值调用各功能模块函数输入n,判断n是否是1-7显示一系列功能选项.数据定义根据n的值调用各功能模块函数输入n,判断n是否是1-7显示一系列功能选项 2,算法流程图(1)录入课程信息表录入课程信息显示录入成功,转入完成选择菜单保存信息到student.txt输入课程编号录入课程信息显示录入成功,转入完成选择菜单保存信息到student.txt输入课程编号从文件输入从文件输入新增课程(2)课程管理新增课程输入课程信息Y输入课程信息 显示失败显示失败 保存保存(3)录入课程信息录入课程信息录入课程信息输入数据输入数据 Y保存保存(4)学生信息管理新增学生信息新增学生信息或删除学生信息 输入姓名,考号.输入姓名,考号.Y Y保存保存(5)学生选课 学生选课学生选课查询可选课程查询可选课程查询已选课程返回主菜单输入学号输入学号(6)系统信息及查看系统主菜单主菜单系统信息及查看系统系统信息及查看系统查看课程信息查看学生信息存储信息返回主菜单存储课程信息存储学生信息返回主菜单输入路径,保存完成选择菜单模块(7)退出系统完成选择菜单模块退出系统退出系统 四、编码1.structcouse*head1;结构2.voidkeyboardc()//录入课程子函数(从键盘录入)3.voidfilec()//录入键盘子函数(从文件录入)4.voidinputc()//录入课程主函数5.voidinsertc(structcouse*incouse)//课程管理子函数(增加课程)6.voiddelc(intnum1)//课程管理子函数(删除课程)7.voidelect(structstudent*s)//选课8.voidcheak()//学生选课子函数(查询可选课程)9.voidback(structstudent*p)//退课10.voidhcheak()//学生选课子函数(查询已选课程)11.voidelective()//学生选课主函数12.voidlistc()//输出课程信息13.voidlists()//输出学生信息14.voidintoc()//存储课程信息15.voidintos()//存储学生信息16.voidinto()//存储信息17.voidstore()//信息主函数18.intmain()//主函数五、测试1.主菜单2.录入课程信息3,从文件输入4,学生选课菜单5,学生信息管理6,管理员输入课程信息界面:

六、设计总结问题一:无法读取文txt文件。困难就是txt无法读取,输入路径后没有文件显示。解决办法是,向老师求助。最后,在老师细心的指导下,才知道是自己的计算机操作水平缘故,没有很好的了解计算机路径结构,最后做出了一定的修改,才得以实现。问题二:程序错误。这是一个比较典型的错误,通过查阅书本相关资料。才发觉是函数相关问题,没有能够很好的理解函数思想,导致程序运行错误。

致谢在这次c语言课程设计中,首先得感谢周老师给予我们指导与帮助,在她的指导帮助下,才使得我们能够顺利的完成课程设计,更重要的是在这次课程设计中,极大的提高我的c语言设计能力,也让我深刻的了解到自己在这方面的诸多不足,使得我能更清楚的了解自己的水平,加强了我对这门学科的认识。同时也感谢和我一起完成这课设的王云龙同学,我们在互相交流帮助中也相互学习到许多小的应用技巧,解决了一些列问题。还要感谢那些给予我们帮助的同学,也给了我很大的帮助。

参考文献1.姜灵芝,余健.C语言课程设计案例精编.北京:清华大学出版社,20212.王新,孙雷.C语言课程设计.北京:清华大学出版社,20213.游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:清华大学出版社,20214.王连相.C/C++程序设计上机指导与测试.北京:中国铁道出版社,20065.C语言函数手册,机械工业出版社,1999附录#include<stdio.h>#include<stdlib.h>intN1,N2,kk1,kk2,kk3;structcouse*head1;structstudent*head2;structcouse//课程信息结构体{intnum1;//课程编号 charname1[20];//课程名称 charxinzhi[30];//课程性质i intztime;//课程总学时 intstime;//授课学时 intshiyan;//实验学时 intscore;//学分 longintdate;//开学学期intnelepeo;//课程已选人数intMelepeo;//课程人数上限structcouse*next;};structstudent//学生信息结构体{intnum2;charname2[20];intnelenum[50];//已选课程编号intnelen;//已选课程数量structstudent*next;};voidMs(){for(kk1=0;kk1<1100;kk1++)for(kk2=0;kk2<1200;kk2++)for(kk3=0;kk3<1200;kk3++);}voidkeyboardc()//录入课程子函数(从键盘录入){structcouse*p1,*p2;N1=0;p1=p2=(structcouse*)malloc(sizeof(structcouse));printf("课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限\n");scanf("%d%s%s%d%d%d%d%d",&p1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);p1->nelepeo=0;head1=NULL;while(p1->num1!=0){N1=N1+1;if(N1==1)head1=p1;elsep2->next=p1;p2=p1;p1=(structcouse*)malloc(sizeof(structcouse));scanf("%d%s%s%d%d%d%d%d",&p1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);p1->nelepeo=0;}p2->next=NULL;}voidfilec()//录入键盘子函数(从文件录入){FILE*fp;charfilepath[20];structcouse*p1,*p2;N1=0;printf("输入要读入的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("找不到%s文件!\n",filepath);exit(0);}p1=p2=(structcouse*)malloc(sizeof(structcouse));fscanf(fp,"%d%s%s%d%d%d%d%d",&p1->num1,&p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo); printf("课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限\n"); fprintf(stdout,"%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p1->num1,p1->name1,p1->xinzhi,p1->ztime,p1->stime,p1->shiyan,p1->score,p1->date,p1->Melepeo);head1=NULL;while(!feof(fp)){N1=N1+1;if(N1==1)head1=p1;elsep2->next=p1;p2=p1;p1=(structcouse*)malloc(sizeof(structcouse));fscanf(fp,"%d%s%s%d%d%d%d%d",&p1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo); fprintf(stdout,"%d%s%s%d%d%d%d%d%d\n",p1->num1,p1->name1,p1->xinzhi,p1->ztime,p1->stime,p1->shiyan,p1->score,p1->date,p1->Melepeo);}p2->next=NULL;}voidinputc()//录入课程主函数{inti;printf("\t\t\t录入课程信息\n");printf("\n1.从键盘录入\n");printf("2.从文件录入\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):keyboardc();break;case(2):filec();break;case(3):break;}}voidinsertc(structcouse*incouse)//课程管理子函数(增加课程){structcouse*p0,*p1,*p2;p1=head1;p0=incouse;if(head1==NULL){head1=p0;p0->next=NULL;}else{while((p0->num1>p1->num1)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num1<=p1->num1){if(head1==p1)head1=p0;elsep2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N1=N1+1;}voiddelc(intnum1)//课程管理子函数(删除课程){structcouse*p1,*p2;if(head1==NULL){printf("\n没有课程,无法删除!\n");gotoend;}p1=head1;while(num1!=p1->num1&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num1==p1->num1){if(p1==head1)head1=p1->next;elsep2->next=p1->next;printf("已删除该编号课程!\n");N1=N1-1;}elseprintf("无该编号的课程!\n");end:;}voidmanagementc()//课程管理主函数{structcouse*incouse;inti,num1;printf("\t\t\t课程管理\n");printf("1.新增课程\n");printf("2.删除课程\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(structcouse*)malloc(sizeof(structcouse));printf("课程编号课程名称课程性质总学时授课学时实验学时学分开课学期人数上限\n");scanf("%d\n%s\n%s\n%d\n%d\n%d\n%d\n%d\n%d\n",&incouse->num1,&incouse->name1,&incouse->xinzhi,&incouse->ztime,&incouse->stime,&incouse->score,&incouse->date,&incouse->Melepeo);incouse->nelepeo=0;insertc(incouse);break;}case(2):{printf("请输入要删除课程的编号:\n");scanf("%d",&num1);delc(num1);break;}case(3):break;}}voidkeyboards()//录入学生信息子函数(从键盘录入){inti;structstudent*p1,*p2;N2=0;p1=p2=(structstudent*)malloc(sizeof(structstudent));printf("学生学号\t学生姓名\n");scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++)p1->nelenum[i]=0;head2=NULL;while(p1->num2!=0){N2=N2+1;if(N2==1)head2=p1;elsep2->next=p1;p2=p1;p1=(structstudent*)malloc(sizeof(structstudent));scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++)p1->nelenum[i]=0;}p2->next=NULL;}voidfiles()//录入学生信息子函数(从文件录入){inti=0;FILE*fp;charfilepath[20];structstudent*p1,*p2;N2=0;printf("输入要读入的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("找不到%s文件!\n",filepath);exit(0);}p1=p2=(structstudent*)malloc(sizeof(structstudent));fread(p1,sizeof(structstudent),1,fp);head2=NULL;while(!feof(fp)){i=0;N2=N2+1;if(N2==1)head2=p1;elsep2->next=p1;p2=p1;p1=(structstudent*)malloc(sizeof(structstudent));fread(p1,sizeof(structstudent),1,fp);}p2->next=NULL;}voidinputs()//录入学生信息主函数{inti;printf("\t\t\t录入学生信息\n");printf("\n1.从键盘录入\n");printf("2.从文件录入\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):keyboards();break;case(2):files();break;case(3):break;}}voidinserts(structstudent*incouse)//学生信息管理子函数(填加学生信息){structstudent*p0,*p1,*p2;p1=head2;p0=incouse;if(head2==NULL){head2=p0;p0->next=NULL;}else{while((p0->num2>p1->num2)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num2<=p1->num2){if(head2==p1)head2=p0;elsep2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N2=N2+1;}voiddels(intnum2)//学生信息管理子函数(删除学生信息){structstudent*p1,*p2;if(head2==NULL){printf("\n没有该学生信息,无法删除!\n");gotoend;}p1=head2;while(num2!=p1->num2&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num2==p1->num2){if(p1==head2)head2=p1->next;elsep2->next=p1->next;printf("已删除该学生信息!\n");N2=N2-1;}elseprintf("无该学号的学生!\n");end:;}voidmanagements()//学生信息管理主函数{structstudent*incouse;inti,num2;printf("\t\t\t学生信息管理\n");printf("1.新增学生信息\n");printf("2.删除学生信息\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(structstudent*)malloc(sizeof(structstudent));incouse->nelen=0;incouse->nelenum[0]=0;printf("学生学号\t学生姓名\n");scanf("%d%s",&incouse->num2,incouse->name2);inserts(incouse);break;}case(2):{printf("请输入要删除学生的学号:\n");scanf("%d",&num2);dels(num2);break;}case(3):break;}}voidelect(structstudent*s)//选课{structcouse*p;intnum1,i;printf("请输入要选课的编号:\n");scanf("%d",&num1);for(i=0;s->nelenum[i]!=0;i++);s->nelenum[i]=num1;(s->nelen)++;p=head1;while(p->num1!=num1)p=p->next;(p->nelepeo)++;}voidcheak()//学生选课子函数(查询可选课程){chare;structcouse*c;structstudent*s;intnum2,i,j=0,t=0;printf("请输入你的学号:");scanf("%d",&num2);s=head2;while(s->num2!=num2&&s->next!=NULL)s=s->next;if(s->num2!=num2){printf("不存在你的信息,请进入主菜单录入你的信息!\n");gotoend;}c=head1;printf("你的可选课程编号:\n");while(c!=NULL){for(t=0,i=0;s->nelenum[i]!=0;i++){if(c->num1==s->nelenum[i])t=1;}if(t==0&&(c->nelepeo!=c->Melepeo)){printf("%d\n",c->num1);j++;}c=c->next;}if(j==0){printf("你已选完所有课程,无法再多选!\n");gotoend;}printf("选课(y/n)?:\n");getchar();e=getchar();i=0;while(e=='y'){elect(s);printf("继续选课(y/n)?:\n");getchar();e=getchar();}end:;}voidback(structstudent*p)//退课{structcouse*p1;intnum1,i,j;printf("请输入你要退掉的课程编号:\n");scanf("%d",&num1);p1=head1;while(p1->num1!=num1)p1=p1->next;for(i=0;p->nelenum[i]!=num1;i++);for(j=i;p->nelenum[j]!=0;j++)p->nelenum[j]=p->nelenum[j+1];p->nelenum[--j]=0;(p1->nelepeo)--;printf("退课成功!\n");}voidhcheak()//学生选课子函数(查询已选课程){charc;structcouse*p0;structstudent*p;intnum2,i,f=0;printf("请输入学号:\n");scanf("%d",&num2);p=head2;while(p->num2!=num2&&p!=NULL)p=p->next;if(p==NULL){printf("不存在你的信息,请回主菜单录入信息:\n");gotoend;}printf("已选课程编号:\n");if(p->nelenum[0]==0){printf("你还没选课!\n");gotoend;}for(i=0;p->nelenum[i]!=0;i++){printf("%d\n",p->nelenum[i]);p0=head1;while(p0->num1!=p->nelenum[i])p0=p0->next;f=f+p0->score;}printf("总学分:%d\n",f);printf("是否进行退课(y/n)?");getchar();c=getchar();while(c=='y'){back(p);printf("继续退课(y/n)?");getchar();c=getchar();(p->nelen)--;}end:;}voidelective()//学生选课主函数{inti;printf("\t\t\t学生选课\n");printf("1.查询可选课程\n");printf("2.查询已选课程\n");printf("3.返回主菜单\n");printf("请输入(1~3):\n");scanf("%d",&i);switch(i){case(1):cheak();break;case(2):hcheak();break;case(3):break;}}voidlistc()//输出课程信息{structcouse*p;p=head1;printf("课程编号名称性质总学时授课学时实验学时学分开课学期已选人数人数上限\n");while(p!=NULL){printf("%d%s%s%d%d%d%d%d%d%d\n",p->num1,p->name1,p->xinzhi,p->ztime,p->stime,p->shiyan,p->score,p->date,p->nelepeo,p->Melepeo);p=p->next;}}voidlists()//输出学生信息{structstudent*p;p=head2;printf("学生学号学生姓名已选课程数量\n");while(p!=NULL){printf("%-4d%10s%6d\n",p->num2,p->name2,p->nelen);p=p->next;}}voidintoc()//存储课程信息{FILE*fp;structcouse*p;charfilepath[30];printf("输入课程信息要保存的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"w"))==NULL){printf("\n保存失败!");exit(0);}p=head1;while(p!=NULL){fprintf(fp,"%d%s%s%d%d%d%d%d%d%d\n",p->num1,p->name1,p->xinzhi,p->ztime,p->stime,p->shiyan,p->score,p->date,p->nelepeo,p->Melepeo);p=p->next;}fclose(fp);printf("课程信息已保存在%s中!\n",filepath);}voidintos()//存储学生信息{FILE*fp;structstudent*p;charfilepath[30];printf("输入学生信息要保存的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"w"))==NULL){printf("\n保存失败!");exit(0);}p=head2;while(p!=NULL){fwrite(p,sizeof(structstudent),1,fp);p=p->next;}fclose(fp);printf("学生信息已保存在%s中!\n",filepath);}voidinto()//存储信息{inti;printf("1.存储课程信息\n");printf("2.存储学生信息\n");printf("3.返回主菜单\n");printf("请输入(1~3)\n");scanf("%d",&i);switch(i){case(1):intoc();break;case(2):intos();break;case(3):break;}}voidstore()//信息主函数{inti;printf("\t\t系统信息查看及存储\n");printf("1.查看课程信息\n");printf("2.查看学生信息\n");printf("3.存储信息\n");printf("4.返回主菜单\n");printf("请输入(1~4):\n");scanf("%d",&i);switch(i){case(1):listc();break;case(2):lists();break;case(3):into();break;case(4):break;}}intmain()//主函数{inti;start:printf("\n\t\t\t欢迎使用学生选课系统!\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("\n请输入菜单选项(1~7):\n");scanf("%d",&i);if(i<1||i>7){printf("输入错误,请重输:\n");gotostart;}switch(i){case(1):{system("cls");inputc();gotostart;break;}case(2):{system("cls");managementc();gotostart;break;}case(3):{system("cls");inputs();gotostart;break;}case(4):{system("cls");managements();gotostart;break;}case(5):{system("cls");elective();gotostart;break;}case(6):{system("cls");store();gotostart;break;}case(7):{system("cls");printf("感谢使用本系统!\n\n再见!\n");}}return(0);}天津职业技术师范大学软件工程课程设计学生公寓管理系统院、系:信息技术工程学院专业:计算机科学与技术班级: 计科0612组长: 学号:同组成员:指导教师:起止日期:2021年12月20日目录1学生宿舍管理系统课程设计概述(完成人:×××)51.1课程设计的目的51.2课程设计的任务51.3课程设计采取的基本原理和主要技术方法51.4开发阶段任务及角色分工52可行性研究(完成人:×××)62.1编写目的6目的6预期的读者62.2问题定义6开展该工程的原因6该工程的基本目标6经济目标62.3可行性研究的方法及评价度6可行性研究所采用的方法6评价尺度62.4工作产品7设计目标7设计及约束条件7产品工作原理7产品系统流程图7数据流图8数据词典8产品的功能10技术方面的可行性102.5可选方案102.6投资及收益分析10市场分析10投资估计112.7社会因素方面的可行性11技术11使用方面的可行性112.8产品可检测性11检测标准11检测的方法112.9产品的可生产性112.10可行性综合分析112.11可行性结论123需求分析(完成人:×××)133.1任务概述13目标13运行环境13条件和限制13数据库描述133.2二层的细化数据流图和数据字典14系统管理数据流图15公寓管理数据流图16学生管理数据流图18出入登记管理数据流图193.3功能需求19系统功能设计19系统管理功能19公寓管理功能20信息查询功能20出入登记功能20信息修改功能203.4性能需求203.5数据描述21E-R图21静态数据描述23动态数据243.6小结244概要设计(完成人:×××)254.1系统结构25系统管理模块26公寓管理模块26信息查询模块26出入登记模块26信息修改模块27关于模块274.2数据库表27数据库表说明294.3个人总结305详细设计(完成人:×××)315.1系统管理员登录模块的设计315.2超级管理员管理模块的设计315.3管理员管理模块的实现32公寓管理模块的设计32信息查询模块模块的设计33出入登记模块的设计33信息修改模块的设计355.4个人小结356单元测试(完成人:×××)366.1测试方案366.2测试项目36系统管理测试36公寓管理测试387小组总结41参考资料42附录431学生宿舍管理系统课程设计概述(完成人:×××)1.1课程设计的目的把软件工程中规范化的软件开发方法应用到本次学生公寓管理系统的开发过程中,以经济地开发出高质量的软件并有效地维护它。1.2课程设计的任务根据软件开发工程的过程,分析设计一个学生公寓管理系统。1.3课程设计采取的基本原理和主要技术方法本系统专门针对学校的公寓管理而开发的一个功能齐全、操作简单的学生公寓管理系统。适合学校的宿舍管理人员使用。本系统实现以下基本功能:管理员可以对公寓进行全程管理,不仅可以管理学生,还可以管理寝室人员及外来人员及出入物品,也能方便的进行统计和更改。本系统使用的是VC6.0来开发的,采用SQLServer2000的数据库管理系统,由于VC良好的面向对象功能,真正实现了面向对象的设计。1.4开发阶段任务及角色分工组长:×××(学号:)主要任务:分析系统开发的可行性并确定设计的主要目标,总结各组员收集的信息,为各组员分配任务,协调组员之间的关系。完成概要分析和可行性设计工作。辅助程序员:×××(学号:)主要任务:主要负责系统的需求分析,完成E-R图等具体设计。辅助程序员:×××(学号:)主要任务:主要负责系统的总体设计,完成总体设计阶段的模块划分。辅助程序员:×××(学号:)主要任务:主要负责系统的详细设计,完成详细设计阶段的具化模块实现,模块的协调及需求分析的数据字典等工作。辅助程序员:×××(学号:)主要任务:主要负责系统的模块测试等工作。文档管理员:×××(学号:)主要任务:负责文档的管理和整理,协调各组员的工作,完成实现部分的工作。2可行性研究(完成人:×××)2.1编写目的目的这份可行性研究报告是对公寓管理系统作的可行性研究分析及指出存在的必要性。预期的读者软件管理人员,开发人员,维护人员。2.2问题定义开展该工程的原因由于现今的学生公寓管理非常繁琐,通常为手工操作,行政人员付出大量的工作时间,得到的效率很低。因此为提高工作效率,减轻校方人员的工作负担,决定开发学生公寓管理系统软件。该工程的基本目标开发此学生公寓系统管理软件,以供教学人员及操作者进行学生宿舍管理,方便操作者随时添加、查询、修改等。为了我们提高软件开发的能力,提高工作设计思想,通过本次的工程开发及与辅助老师交流,使小组成员从中学习知识吸取经验。为今后高层次的软件开发准备知识。经济目标由于本学生宿舍开发系统的主要背景(为课程设计)在经济上不注重直接的经济收益,而是注重小组成员整体水平的提高。2.3可行性研究的方法及评价度可行性研究所采用的方法根据调查,本小组成员多数有多年VC编程经验,也有两个具备SQLSERVER2000的使用经验,因而开发此学生公寓管理系统采用VC结合SQLSERVER2000的数据库系统开发。评价尺度此软件暂时只是一个初级产品,实现的功能也只能完成初步的工作。2.4工作产品设计目标本工程的设计目标就为学校学生公寓管理提供快捷方法,省去大量诸如手工登记的操作,对学生公寓情况进行及时跟踪管理,提高管理学生公寓的效率,推动使学校公寓管理自动化。设计及约束条件a.软件系统的界面要美观,布局要合理,窗口的内容尽量简明的提供信息,语言要通俗易懂,有层次感,分类清晰明了。b.根据现有条件和知识我们还得在技术方面,进行学习和提高。产品工作原理a.先建立数据库且追建数据库的驱动程序。b.在使用时,由管理员输入需要了解的关键字的信息,然后通过公寓管理事务管理中心选择相应公寓管理的事务。c.公寓管理的事务将根据所提供的信息在数据库中查找相应的记录。d.返回相应的记录给管理员。e.允许管理员在相应权限下对数据进行修改。f.通过终端把得到的内容显示到相应的界面上。产品系统流程图管理员提出事务管理员提出事务公寓事务处理中心产生报表程序公寓数据库信息输出图2.1系统流程图数据流图出入信息出入信息物品信息外来人员信息学生信息学生信息学生基本情况公寓信息员工信息寝室信息员工表楼房表公寓事务管理员信息系统事务事务管理员1.0接收事务1.1系统管理用户表管理员1.2公寓管理寝室表楼房信息1.3学生管理学生事务1.4出入登记出入事务物品出入楼表外来人员表图2.2学生宿舍管理系统(第1层)数据流图系统信息数据词典数据字典是关于数据的信息的集合,也就是对数据中包含的所有元素的定义的集合,它为软件开发人员提供数据库设计的参考,并为用户了解系统时作为一个必有工具。本数据字典主要定义数据字典5个主要字段内容,具体说明如下:1、名字:数据元素的名字,作为在数据流图中的标识符,显示数据流的内容。2、别名:数据元素的另一个名字,其作用是对于a.对于同样的数据,不同的用户使用了不同的名字;b.小组开发人员可能对同一数据使用了不同的名字;c.小组不同的开人员对同一数据流使用了不同的名字;3、描述:是对这个名字代表的数据流进行简要的描述,以加深理解;4、定义:对这个名字代表数据流的详细定义其组成部分;5、位置:表示这个数据流的来源;以下是图2.2的数据流图中部分的数据信息的数据字典*******************************************名字:管理员别名:系统管理员描述:对公寓系统进行操作的人员定义:管理员=[普通用户|超级用户]位置:用户表*******************************************名字:事务别名:描述:代表要办理的一个具体事件定义:事务=[系统事务|公寓事务|学生事务|出入事务]位置:系统登陆*******************************************名字:接收事务别名:接受事务描述:接受管理员要办理的一个具体事件定义:接收事务=事务命令+事务位置:接收事务*******************************************名字:系统事务别名:系统事件描述:系统管理员进行系统管理的特定事件定义:系统事务=[修改密码|用户管理]位置:系统管理*******************************************名字:公寓事务别名:公寓事件描述:系统管理员进行公寓管理的特定事件定义:公寓事件=[楼房管理|员工管理|宿舍管理]位置:公寓管理*******************************************名字:学生事务别名:学生事件描述:系统管理员进行公寓学生管理的特定事件定义:学生事务=[学生信息查询|公寓信息查询]位置:学生管理*******************************************名字:出入事务别名:出入事件描述:系统管理员对外来人员及公寓学生物品出入管理的特定事件定义:出入事务=[外来人员登记|物品出入登计]位置:出入登计管理*******************************************产品的功能a.用户可以用该软件对系统进行管理,比如管理员的添加;b.用户可以用该软件对公寓进行管理,比如公寓员工管理;c.用户可以用该软件对公寓学生进行管理,比如学生调换寝室管理;d.用户可以使用该软件对进出外来人员进行管理;技术方面的可行性根据小组成员拥有良好的VC编程能力及拥有SQLSERVER2000的使用经验,再根据上述分析情况,利用现有人力和物力是具备开发此系统能力的。加之学校老师指导及其它资源丰富情况,学生宿舍管理系统在技术上是完全可行的。2.5可选方案签于当前用户要求系统具有高安全性,在数据库使用上都要求具有完善的管理功能且日后数据库升级方便,因而本次使用主要根据数据库的易用性及易升级性提供两种方案。a.采用Oracle数据库设计,这一数据库系统现在已成为主流的数据库管理系统,且易操作,易升级,因此提出这一方案。b.采用SQLSERVER2000的数据库管理系统实现。根据小组成员的技术,目前尚只有具备使用SQLSERVER2000数据环境开发的能力,且当前校园大多使用SQLSERVER2000作为数据库管理系统,因而第二种方案作为本次系统开发的方案。2.6投资及收益分析市场分析学生宿舍管理系统主要是为了解决学校的学生管理问题,并且减轻行政人员的工作负担。特别是当前学校管理学生公寓的相关软件尚不多,且功能少,不完善,升级困难,操作不方便。本系统是针对广大学校公寓管理情况开发的公寓管理系统,适合广大学校需求,它追求的是简单、易学、易懂、易用,易升级,能够更有利的解决行政人员的负担,因而市场是相当光明的。投资估计按本软件学生宿舍管理系统开发方案,对于本系统软件投资方向,体现于软件开发、软件生产及软件测试。本系统完全按开发计划进行估算,估计上网,打印需一些费用。本系统大约总体耗费主要为时间,精力。本系统本非收益性质开发,重要是为解决学校现行公寓管理的需要。2.7社会因素方面的可行性技术本系统与校方紧密结合。使用方面的可行性学校行政人员对该产品的应用是可行的。2.8产品可检测性检测标准软件标准:软件规模、复杂程度、安全性、可操作性、可观察性、可控制性、冗余的大小。检测的方法通过软件测试:黑盒测试:主要在软件界面上进行的测试。白盒测试:在重要逻辑路径进行测试,检测重要数据结构的有效性。2.9产品的可生产性正确性:程序是否按程序流程图及数据字典完成程度。可靠性:安全运行时间越长越好。可用性:是否能够解决实际的存在问题。完整性:对未授权的人员访问此系统软件可控性强。灵活性:修改一个程序的工作量。2.10可行性综合分析本工程产品开发周期为2周。要求所有数据信息的储存都由数据库来完成。学时间虽然紧,但由于老师的大力支持,对我们工程的进程非常有利。2.11可行性结论综上所述,本工程的技术成熟、完备,测试手段可靠,具有良好的市场拓展,因此本工程可立即开始。3需求分析(完成人:×××)目前,我们学校的宿舍管理采用的还是人工来进行管理的,面对目前学校发展的实际状况,我们通过实地调研之后,对宿舍管理系统的设计开发做了一个详细的概述。3.1任务概述目标本设计要实现的是高校学生宿舍管理系统,在设计该系统时,应尽可能的贴近学生,便于用户操作。系统在实现上应该具有如下功能:1.系统要求用户必须输入正确的用户名和密码才能进入系统。2.系统应该提供学生住宿情况的基本登记。3.系统应提供人员来访登记及结束访问的详细登记。4.系统应提供学生在校期间物品出入宿舍楼的详细情况登记。5.系统应提供查询功能,以方便用户对学生基本信息的查询(要实现按多种条件的查询)及楼房信息的查询。6.系统应提供增加、删除、修改用户帐户的功能。运行环境CPUPentiumⅣ1.8Ghz内存512MB硬盘空间50.0MB以上硬盘剩余空间输入设备键盘/鼠标操作系统Windows2000Server数据库MicrosoftSQLServer2000开发环境MicrosoftVisualStudio.NET2003条件和限制一个更为完善的学生宿舍管理系统,应提供更为便捷与强大的信息查询功能,如相应的网络操作及服务,由于开发时间和计算机数量有限,该系统并未提供这一功能。对信息的保护手段仅限于设置用户级别,以及提供数据文件的备份,比较简单,不能防止恶意的破坏,安全性能有待进一步完善。数据库描述数据库是数据管理的最新技术,是计算机科学的重要分支。十年来,数据库管理系统已从专用的应用程序包发展成为通用系统软件。由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。由于用到的数据表格多,另外考虑到实际情况,学生基本信息的变动,还有员工信息的多少的变化,我们选用SQLServer作为数据库开发,而不用Access,主要是因为Access存放的记录,在实际运用中不适合此系统;而SQLServer是一种常用的关系数据库,能存放和读取大量的数据,管理众多并发的用户,故选用SQLServer数据库。3.3二层的细化数据流图和数据字典表符号说明:T1:用户表 T5:员工表T2:学生基本情况表 T6:人员来访表T3:学生住宿表 T7:物品出入表T4:寝室表 T8:楼房表系统管理数据流图超级用户信息超级用户信息新用户信息修改返回信息密码信息密码信息超级用户信息新用户信息系统管理事务系统管理超级用户登录普通用户登录T1新用户注册修改密码管理员T1超级用户信息超级用户信息密码信息普通用户信息普通用户信息普通用户信息图3.1数据流图中1.1的细化数据流图公寓管理数据流图员工信息员工信息员工信息寝室信息寝室信息公寓管理事务事务分类楼房管理寝室管理员工管理管理员T8T4T5楼房信息楼房信息楼房信息寝室信息员工信息图3.2数据流图中1.2的细化数据流图数据字典是关于数据的信息的集合,也就是对数据中包含的所有元素的定义的集合,它为软件开发人员提供数据库设计的参考,并为用户了解系统时作为一个必有工具。以下是部分数据字典的内容:*******************************************名字:员工信息别名:描述:每栋公寓聘请的员工定义:员工信息=员工号+姓名+年龄+性别+楼房号+职位+家庭住址+联系方式+备注员工号=3{字符}11姓名=6{字符}11年龄=2{数字}3性别=[F|M]楼房号=2{数字}3职位=4{字符}20家庭住址=8{字符}100联系方式=11{数字}11备注=0{字符}256位置:员工表*******************************************名字:寝室信息别名:描述:寝室对应的属性定义:寝室信息=寝室号+居住性别+应住人数+实住人数+住宿费用++备注寝室号=10{字符}10居住性别=[F|M]应住人数=2{数字}2实住人数=2{数字}2住宿费用=4{数字}4=11{数字}11备注=0{字符}256位置:寝室表*******************************************名字:楼房信息别名:描述:楼房对应的属性定义:楼房信息=楼房号+房间数+楼层数+应住人数楼房号=10{字符}10房间数=3{数字}10楼层数=2{数字}2应住人数=4{数字}4位置:楼房表*******************************************学生管理数据流图住宿信息住宿信息寝室号班级姓名学号学生管理信息管理员信息分类信息录入信息修改信息查询T2按寝室查询按学号查询按姓名查询按班级查询按住宿情况查询T2T3T4T2T3T4T2T3T4学生基本信息学生基本信息学生基本信息学生基本信息查询信息住宿情况住宿信息住宿信息图3.3数据流图中1.3的细化数据流图出入登记管理数据流图物品物品信息物品信息物品进楼信息结束信息离开信息离开信息事务分类出入事务人员来访访问结束物品进楼物品出楼T6人员来访信息管理员人员来访信息人员来访信息T7物品出楼信息物品信息物品信息图3.4数据流图中1.4的细化数据流图3.3功能需求系统功能设计在整体设计中,我们将宿舍管理系统分为六个大的功能:系统管理功能、公寓管理功能、信息查询功能、出入登记功能、信息修改功能。下面将具体进行介绍每个功能。系统管理功能系统管理功能包括:超级用户登录、普通用户登录、用户密码修改、用户管理、退出系统五个部分。公寓管理功能公寓管理功能包括:楼房管理、宿舍管理、员工管理三个大的部分。信息查询功能信息查询功能基本上包括:按学号进行查询、按姓名进行查询、按班级查询、按寝室号查询、每栋楼房住宿情况查询五个部分。出入登记功能出入登记功能包括:进楼物品登记、出楼物品登记、人员来访登记、结束访问登记四个功能部分。信息修改功能信息修改功能包括:学生基本信息修改、员工基本信息修改等。3.4性能需求学生宿舍管理系统中管理权限上应当进行严格控制,具体思想如下:1.要想对该学生宿舍管理系统进行操作就应当具有某些操作权限。没有权限的用户将不能通过任何渠道来登录该系统,查看该系统的任何信息和数据,以确保系统的严密性和安全性。2.在上述要求基础上可以为该系统设定多种登录方式,程序开始运行所有功能将是不可使用的,只有系统管理员登录和普通用户登录两个窗口可以使用,没有系统管理员或者普通用户的用户名和密码任何人都不能登录该系统。3.在具体实现时还应为系统管理员和普通用户设定不同的权限,系统管理员应当可以使用系统的所有模块,普通用户对于用户管理模块是无权使用的。3.5数据描述E-R图员工员工管理楼房包含寝室学生入住来访出入来访人员出入楼物品N1NNNN1111图3.5系统E-R图寝室寝室寝室号住宿费用应住人数实住人数居住性别图3.9寝室属性来访人员来访人员来访人姓名被访人姓名离开时间所属关系宿舍号来访日期来访时间证件名称值班人备注图3.10来访人员属性出入楼物品出入楼物品备注时间值班人出楼物品进楼物品学生名物品图3.11出入楼物品属性静态数据描述学生寝室管理系统的静态数据包括:用户(LoginIn):UserName用户名UserId用户密码UserPower用户权限学生(Student):Stu_Key学号Stu_Name姓名Stu_Sex性别Stu_Enr入学日期Stu_Birth出生日期Stu_College学院Stu_Major专业Stu_Polit政治面貌Stu_Address家庭住址Stu_Tel联系方式寝室(Dorm):Dor_Id寝室号Dor_Sex居住性别Dor_Num应住人数Dor_Fact实住人数Dor_Price住宿费用Dor_TelDor_Des备注员工(Employee):Emp_Id员工号Emp_Name姓名Emp_Age年龄Emp_Sex性别Hou_Id楼房号Emp_Job职位Emp_Add家庭住址Emp_Tel联系方式Emp_Des备注动态数据输入数据:鼠标对按钮的点击查询方式、查询关键字;新建管理员、录入学生信息项;受限操作所需的密码;新聘员工信息录入;人员来访、物品出入楼;输出数据:查询关键字确定的数据库记录的子集;统计结果及其格式化文件;密码修改成功;信息录入、删改结果(成功或失败);访问完毕、物品出入楼完毕;内部数据:查询操作建立的索引;3.6小结通过这次课程设计,我拓宽了知识面,锻炼了能力,对软件工程的重要性有了更深的体会。在这次课程设计当中我负责的是需求分析这一部分,在开始阶段遇到了相当大的困难,比如对目标系统的需求定义的不够完整,清晰,给后续工作带来相当的困难。后来经过小组成员沟通,共同调查研究才得以完成,这里向他们表示感谢。4概要设计(完成人:×××)4.1系统结构系统的大致结构如下:在C/S结构下的该寝室管理系统大致可以划分为以下模块:学生宿舍管理系统出入登记学生宿舍管理系统出入登记信息查询信息修改关于系统管理超级用户登录密码修改增加用户普通用户登录公寓管理楼房管理宿舍管理员工管理住宿情况查询按寝室查询按班级查询按姓名查询按学号查询访问结束登记物品进楼登记物品出楼登记来访人员登记员工信息修改学生基本信息修改图4.1学生宿舍管理系统功能模块图在整体设计中,我们将宿舍管理系统分为六个大的模块:系统管理模块、公寓管理模块、信息查询模块、出入登记模块、信息修改模块、关于模块。每个模块将实现不同的功能。下面将具体进行介绍。系统管理模块系统管理模块包括:超级用户登录、普通用户登录、用户密码修改、用户管理、退出系统五个部分。1.超级用户登录:实现系统管理人员登录。2.普通用户登录:实现一般管理人员登录。3.用户管理:实现系统管理人员授予或取消一般用户登录该系统的用户名和密码。4.密码修改:实现所用用户的密码更改功能。5.退出系统:实现正常退出宿舍管理系统。公寓管理模块公寓管理模块包括:楼房管理、宿舍管理、员工管理三个大的部分。1.楼房管理:登记学校所有住宿楼情况。2.宿舍管理:登记学校所有宿舍的情况。3.员工原理:实现楼房管理人员的添加功能。信息查询模块信息查询模块基本上包括:按学号进行查询、按姓名进行查询、按班级查询、按寝室号查询、每栋楼房住宿情况查询五个部分。1.按学号进行查询:实现每个学生基本信息情况的查询功能。2.按姓名查询:通过学生姓名查询学生基本信息情况。3.按班级查询:通过班级查询某班级学

温馨提示

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

评论

0/150

提交评论