安徽工业大学计算机学院程序的设计综合实习报告范本.docx

上传人:b****8 文档编号:30216506 上传时间:2023-08-07 格式:DOCX 页数:35 大小:469.19KB
下载 相关 举报
安徽工业大学计算机学院程序的设计综合实习报告范本.docx_第1页
第1页 / 共35页
安徽工业大学计算机学院程序的设计综合实习报告范本.docx_第2页
第2页 / 共35页
安徽工业大学计算机学院程序的设计综合实习报告范本.docx_第3页
第3页 / 共35页
安徽工业大学计算机学院程序的设计综合实习报告范本.docx_第4页
第4页 / 共35页
安徽工业大学计算机学院程序的设计综合实习报告范本.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

安徽工业大学计算机学院程序的设计综合实习报告范本.docx

《安徽工业大学计算机学院程序的设计综合实习报告范本.docx》由会员分享,可在线阅读,更多相关《安徽工业大学计算机学院程序的设计综合实习报告范本.docx(35页珍藏版)》请在冰豆网上搜索。

安徽工业大学计算机学院程序的设计综合实习报告范本.docx

安徽工业大学计算机学院程序的设计综合实习报告范本

工业大学计算机学院程序设计综合实习报告

 

 

题目:

现代教学管理系统

学号:

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)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1