安徽工业大学计算机学院程序的设计综合实习报告范本.docx
- 文档编号:30216506
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:35
- 大小:469.19KB
安徽工业大学计算机学院程序的设计综合实习报告范本.docx
《安徽工业大学计算机学院程序的设计综合实习报告范本.docx》由会员分享,可在线阅读,更多相关《安徽工业大学计算机学院程序的设计综合实习报告范本.docx(35页珍藏版)》请在冰豆网上搜索。
安徽工业大学计算机学院程序的设计综合实习报告范本
工业大学计算机学院程序设计综合实习报告
题目:
现代教学管理系统
:
忻
学号:
129074228
学院:
计算机学院
班级:
软件123班
指导老师:
王森玉
完成日期:
2013/5/22
题目:
现代化成绩管理系统
课程设计容简介:
高校中对于学生的考核主要通过考试来进行,传统不通过计算机网络发放考试的成绩容易出现发错,漏发等问题,使用计算机来解决这个问题是十分必要的。
程序可以在登陆时选择登陆身份,并给予不同权限对成绩系统进行访问,以达到教师可修改,可查询,可记录;学生可查询的目的。
设计者名称:
忻
指导教师意见:
指导教师签名:
一、
问题定义:
现代化的校园对学生进行考核的主要方式是通过考试,而传统的发布成绩方式存在着不同的问题,通过计算机网络可对这些问题进行解决,包括登陆时选择登陆身份,并给予不同权限对成绩系统进行访问,以达到教师可修改,可查询,可记录;学生可查询的目的。
二、可行性研究:
I、项目的由来:
某高校教师需要对学生的成绩进行管理,包括学生信息的录入,学生成绩的录入,成绩的修改以及学生的成绩查询并保存。
学生需要对成绩进行查询。
II、可选方案:
一、可选用人工进行学生的基本信息的管理,进行平时成绩,期末成绩以及总评成绩的计算,再人工将成绩发放到学生的手中。
二、可选用直接从文件进行成绩的导入,直接得到学生的基本信息及考试成绩、总评成绩,或者通过人手工录入学生的基本信息及考试成绩、总评成绩。
学生也可对其进行查找。
III、可行性:
1、技术可行性:
学校每一门学科的考试人数都很多,若每场考试的成绩都需要老师人工计算并发布成绩,任务量大且出错率高。
使用计算机自动计算学生考试成绩的方式大大降低了出错率,而且使用计算机省时省力,方便进行成绩的管理及查询。
2、经济可行性:
利用计算机技术,开发学生成绩管理系统,可以重复使用,对学生的管理很有用,有必要开发。
3、操作可行性:
操作计算机简单易行,并且不需要花费太多的人力。
4、法律可行性:
开发学生成绩管理系统有利于学校对学生的管理,不违反法律及相关法规。
IV、结论:
面对高校学生成绩管理的巨大工作量,采用计算机的管理是极其必要的,若采用方案2的方法不单单可以减少很多的人力使用,使教师的工作量得到大量减少,而且出现错误的机率更低,更能够直接对学生的成绩进行管理,方便教师和学生的成绩的查询。
三、需求规格说明
I、目标:
登陆身份选择
教师
学生
登陆身份验证
系统对请求进行处理
教师输入学生的信息。
或从文件导入成绩。
学生系统
学生学号,姓名,编号
平时、期末成绩比例
平时成绩
期末成绩
系统对数据进行记录以及处理,并将数据记录在链表中
可以对储存在链表中的成绩进行访问查询
教师
对储存在链表中的数据进行修改
教师可以选择成绩的保存路径
II、数据需求:
1、数据量:
教师的登陆账户及密码,学生学号,,平时成绩,期末成绩,总评成绩。
2、数据定义和结构
:
教师的登陆用=teacher,密码=0000;
:
学号=学生在校自动分配的学号;
平时成绩=教师给学生所打的平时分数;
期末成绩=学生期末考试的成绩;
总评成绩=平时成绩×平时成绩所占的比例+期末成绩×期末成绩所占的比例;
III、功能需求:
性能:
能快速响应,界面颜色多元化,清晰,数据对应整齐。
在使用过程中容易操作,错误操作的次数少。
功能:
(IPO)
处理
输出
输入
登录身份
根据身份信息给予相应的权限
输入相应的操作,包括学生信息、成绩
将成绩输入链表中,并自动计算成绩
学生的基本信息和总评成绩
权限记录
响应要求
四、总体设计:
I、软件的结构(HIPO图):
五、各模块详细设计
I、编译预处理模块
II、主函数模块
III、browse()函数模块
i=0,p=head->next
while(p!
=NULL)
输出链表中全部的学生信息及成绩
p=p->next
IV、insert()函数模块
V、deletel()函数模块
while(p->next!
=NULL&&i p=p->next i,xz,n,c,xm[9],xh[10],st*p,*q p=head if(p->next! =NULL) T F 值2 值3 其他 输入xzswitch(xz) 值1: 输入学号 while(p->next! =NULL&&strcmp(xh,p->next->num)! =0) p=p->next 输入姓名 while(p->next! =NULL&&strcmp(xm,p->next->name)! =0) p=p->next 输入序号 输出错误 q=p->next if(q==NULL) T F 输出未找到数据 确认是否删除数据,p->next=q->next,free(q) VI、scorein()函数模块 VII、change()函数模块 VIII、load()函数模块 *fpfn[12]*head,*p,*q 从文件中进行导入 if((fp=fopen(fn,"rb"))==NULL) T F 输出打开文件时发生错误并退出 while(! feof(fp)) if(fread(p,sizeof(stud),1,fp)==1) T F p->next=q->nextq->next=p;q=p IX、save()函数模块 X、mima()函数模块 inname[8]name1[21]password1[21]flag1flag2,输入用户名,密码 for(i=0;i<20;) *(password1+i)=getch() if(*(password1+i)=='\b') T F if(i>0) T F i--输出“退格” 输出“空格退格” continue if(*(password1+i)=='\r') T F break i++printf("*") *(password1+i)='\0'flag2=strcmp(password,password1) if(flag1==0&&flag2==0) T F 登陆成功 登陆失败 六、程序源代码 #include #include #include #include #include typedefstructst { charnum[10],name[9],bclass[11];//学号、、班级 floatscore1,score2,score;//平时成绩、期末成绩、总评成绩 structst*next; }stud; intxuanze();//选择学生或教师 charmenu1();//教师选单 charmenu2();//学生选单 voidmima();//密码函数 stud*load();//导入 stud*search(stud*,int*);//查询 voidsave(stud*);//导出 voidscorein(stud*);//成绩录入 voidinsert(stud*);//插入 voiddeletel(stud*);//删除 voidchange(stud*);//修改 voidbrowse(stud*);//浏览 //************************************** intmain(void) { charchoice1,choice,c; inti; stud*head,*p; head=(stud*)malloc(sizeof(stud));//准备好表头 head->next=NULL; loop: choice1=xuanze();//进入选择系统 if(choice1==1) { mima();//密码函数 while (1) { choice=menu1();//教师系统的表头 switch(choice) { case'1': system("cls"); printf("浏览成绩情况。 \n"); browse(head); getchar(); break; case'2': system("cls"); printf("插入学生成绩。 \n"); insert(head); break; case'3': system("cls"); printf("查询学生成绩。 \n"); p=search(head,&i); if(p! =NULL)//输出数据 {printf("%2d%10s%8s%10s",i,p->num,p->name,p->bclass); printf("%5.1f%5.1f%5.1f",p->score1,p->score2,p->score); } elseprintf("未找到! "); break; case'4': system("cls"); printf("删除学生记录。 \n"); deletel(head);break; case'5': system("cls"); printf("学生成绩录入。 \n"); scorein(head);break; case'6': system("cls"); printf("修改学生记录。 \n"); change(head);break; case'7': system("cls"); printf("从文件中将成绩情况导入链表。 \n"); head=load();break; case'8': system("cls"); printf("将链表中成绩情况保存到文件。 \n"); save(head);break; case'9': system("cls"); printf("系统初始化。 \n"); head=(stud*)malloc(sizeof(stud)); head->next=NULL; printf("%d%d\n",head,head->next); break; case'0': system("cls"); printf("返回上一级\n"); printf("是否保存当前数据到文件? (Y/N): "); c=toupper(getchar());getchar(); if(c=='Y') save(head); else { system("cls"); gotoloop; } break; default: printf("输入错误! "); } if(choice=='0')break; printf("\n按任意键继续......! "); getchar(); } } if(choice1==2)//学生系统的表头 { while (1) { choice=menu2(); switch(choice) { case'1': system("cls"); printf("浏览成绩情况。 \n"); browse(head); getchar(); break; case'2': system("cls"); printf("查询学生成绩。 \n"); p=search(head,&i); if(p! =NULL)//输出数据 {printf("%2d%10s%8s%10s",i,p->num,p->name,p->bclass); printf("%5.1f%5.1f%5.1f",p->score1,p->score2,p->score); } elseprintf("未找到! "); break; case'3': system("cls"); gotoloop; default: printf("输入错误! "); } if(choice=='3')break; printf("\n按任意键继续......! "); getchar(); } } if(choice1==3) printf("Goodbay! "); exit(0); } //*********************************************** intxuanze() { intchoice; system("color21"); printf("你好! 请选择入口: \n"); printf("1.老师入口\n2.学生入口\n3.退出系统\n请选择: "); scanf("%d",&choice); fflush(stdin); returnchoice; } charmenu1()//教师表头 { charc; system("cls"); system("color31"); printf("\n\n\n\n\n\n=======成绩管理系统========\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("8.将链表中成绩情况导出到文件\n"); printf("9.系统初始化\n"); printf("0.返回上一级\n"); printf("\n\n请选择。 。 。 。 。 。 。 \n\n\n\n"); c=getchar();getchar(); returnc; } charmenu2()//学生表头 { charc; system("cls"); system("color34"); printf("\n\n\n\n\n\n=======成绩管理系统========\n"); printf("--------------\n"); printf("1.浏览成绩情况\n"); printf("2.查询学生成绩\n"); printf("3.返回上一级\n"); printf("\n\n请选择。 。 。 。 。 。 。 \n\n\n\n"); c=getchar();getchar(); returnc; } voidbrowse(stud*head) { //将链表中各个结点数据依次输出 inti=0; stud*p;//工作指针 p=head->next;//指向首结点 printf("序号学号班级平时成绩期末成绩总评成绩\n"); while(p! =NULL)//指针不空 { printf("%2d%-10s%-8s%-10s",++i,p->num,p->name,p->bclass); printf("%5.1f%5.1f%5.1f\n",p->score1,p->score2,p->score); p=p->next;//工作指针p移动 } } //***************************** voidinsert(stud*head) { //插入新结点,并使链表各结点按学号升序排列 charan,xh[10],xm[9],bc[11]; stud*p,*q; do { p=head; printf("请输入学生的学号、、班级: \n"); gets(xh); gets(xm); gets(bc);//输入数据 if(! strcmp(xh,"0000")) return;//以“0000“作为结束标记 while((p->next! =NULL)&&(strcmp(xh,p->next->num)>=0)) p=p->next;//查找新结点的插入位置 q=(stud*)malloc(sizeof(stud));//生成新结点由q指向 strcpy(q->num,xh);//把数据送入新结点 strcpy(q->name,xm); strcpy(q->bclass,bc); q->next=p->next;p->next=q;//吧新结点插入链表 printf("继续吗? "); an=toupper(getchar()); getchar(); } while(an=='Y'); } //**************************** stud*search(stud*head,int*i) {//在链表中按或学号进行查找 intxz; charxh[10],xm[9]; stud*p;//工作指针 p=head->next; *i=1; //指向首结点 printf("1.按查找0.按学号查找\n"); scanf("%d",&xz); getchar(); if(xz) { printf("请输入学生: \n"); gets(xm);//输入 while(p! =NULL&&strcmp(xm,p->name)! =0)//按查找 { p->next; (*i)++; } } else { printf("请输入学生: \n"); gets(xh);//输入学号 while(p! =NULL&&strcmp(xh,p->num)! =0)//按学号查找 {p=p->next;(*i)++;} } returnp; } //******************************* voiddeletel(structst*head) {//删除结点 inti,xz,n; charc,xm[9],xh[10]; structst*p,*q;//工作指针 p=head;//指针p指向头结点 if(p->next! =NULL) {printf("1.按学号删除2.按删除3.按序号删除\n"); scanf("%d",&xz); switch(xz) { case1: printf("请输入学生学号: \n"); getchar(); gets(xh);//输入学号 while(p->next! =NULL&&strcmp(xh,p->next->num)! =0) //按学号查找 p=p->next; break; case2: printf("请输入学生: \n"); getchar(); gets(xm);//输入 while(p->next! =NULL&&strcmp(xm,p->next->name)! =0)//按学号查找 p=p->next; break; case3: printf("请输入序号: \n");i=1; scanf("%d",&n); getchar();//输入序号 while(p->next! =NULL&&i { p=p->next; i++; } break; default: printf("选择错误! \n"); return; } q=p->next;//指针q指向p的直接后继 if(q==NULL) { printf("未找到指定结点,没有执行删除! \n"); return; } printf("%-10s%-8s请确认(Y/N)",q->num,q->name); c=getchar(); getchar(); if(tolower(c)=='y') { p->next=q->next;//把结点从链表中删除 free(q); return;//释放q所指的结点 } } printf("无结点可删除! \n"); } //*********************************** voidscorein(stud*head) {//依次给链表中各结点的数据录入成绩 inti=0; intps,qm; stud*p;//工作指针 p=head->next;//指向首结点 printf("请输入平时成绩在总评成绩中所占的百分比: \n"); scanf("%d",&ps); qm=100-ps; while(p! =NULL) { printf("%2d%10s%8s%10s\n",++i,p->num,p->name,p->bclass); printf("平时成绩期末成绩: "); scanf("%f%f",&p->score1,&p->score2);//录入平时成绩和期末成绩 p->score=p->score1*ps/100+p->score2*qm/100;//计算出总评成绩 printf("%5.1f\t%5.1f\t%5.1f\n",p->score1,p->score2,p->score); p=p->next;//工作指针p移动 } getchar(); } //********************************* voidchange(stud*head) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安徽 工业大学 计算机 学院 程序 设计 综合 实习 报告 范本
![提示](https://static.bdocx.com/images/bang_tan.gif)