1:第一步:设计数据库,一般像这种小型宿舍管理系统,选用mysql作为数据库,然后就是设计表,包括表中的字段名,字段的大小以及表之间的关系
2:第二布:确认使用的技术,作为java,你可以选用Springmvc作为mvc框架,毕竟它比较灵活和简单,然后Spring是必须的,用来管理事务,Hibernate作为后台数据库管理框架,jsp作为页面表现层。这样的程序比较健壮,扩展起来比较方便
3:在第二步的基础上,接下来就是建立Bean类,比如学生类、宿舍类等等,映射数据库表的字段,然后就是编写Service层、Dao层,等等建立数据处理逻辑
4:实现表现层,写jsp页面,你想在前台展示的内容就可以写在jsp里面,这里可以选用的技术有juqery,js。如果为了考虑用户体验,可以用ajax,实现异步无刷新交互。
5:前后台相互通信,用juint进行集成测试,看看数据是否按照逻辑准确的显示出来。后期测试等等
当然如果嫌麻烦,可以不采用ssh框架,可以直接用jsp+servlet写,这样比较简单,原理大概也差不多。只不过分层没这么清晰和明确了。
给你个学生成绩管理的,你改一下变量名就好了#include
#include
#define LEN sizeof(struct student)
#define N 35
#include
#define NULL 0
int n=0
char m[8]={'0','1','2','3','4','5','6','7'}
int ichar c[10]char d[10]
char fname[20],fname0[20],fname6[20]={"shanchu"}
struct student
{long num
char name[10]
int eng
int math
int comp
int ave
int all
}p
void shuru()
{FILE *fp
printf("\n\n\t请输入存储学生数据的文件名:")
scanf("%s",fname)
fp=fopen(fname,"w")
printf("\t输入的数据之间请用跳格键(Tab)隔开\n\t每输入完一个学生的信按回车键(Enter)\n")
printf("\t结束输入学生数据时,请输入一个学生的学号为0并按回车键\n")
printf("\t学号 姓名 英语 数学 计算机\n")
do{ printf("\t")
scanf("%ld",&p.num)
if(p.num==0) break
scanf("\t%s\t%d\t%d\t%d",p.name,&p.eng,&p.math,&p.comp)
p.all=(p.eng+p.math+p.comp)
p.ave=(p.all/3)
fwrite(&p,LEN,1,fp)
n++
}while(1)
fclose(fp)
}
void chazhao()
{char fname1[20]
FILE *fp
do{printf("\n\n\t请输入查找学生数据的文件名:")
scanf("%s",fname1)
if(strcmp(fname1,fname)==0){fp=fopen(fname,"r")break}
else printf("\t你输入的文件不存在\n")}while(1)
long number
do
{ printf("\t请输入要查找的学生的学号按回键(Enter):")
scanf("%ld",&number)rewind(fp)
for(i=0i { fread(&p,LEN,1,fp)
if(number==p.num) { printf("\t学号 姓名 英语 数学 计算机 平均分 总? \n")
printf("\t%ld\t%s\t%d\t%d\t%d\t%d\t%d\n",p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all)
}
}
printf("\t你还要查找吗?如果继续请输y'加回车键,否'n'加回车键:")
scanf("%s",c)}while(c[0]=='y')
fclose(fp)
}
void paixu()
{FILE *fpchar fname3[20]struct student k[N]
do{printf("\n\n\t请输入你要排序的学生数据的文件名:")
scanf("%s",fname3)
if(strcmp(fname3,fname)==0)
{fp=fopen(fname,"r")break}
else printf("\t你输入的文件不存在\n")}while(1)
rewind(fp)
for(i=0i fread(&k[i],LEN,1,fp)
int w,q,j,g,t,t2,t3,t4,t5char z[10]long t1
for(q=0q {g=q
for(j=q+1j if(k[j].ave t=k[g].avek[g].ave=k[q].avek[q].ave=t
t1=k[g].numk[g].num=k[q].numk[q].num=t1
t2=k[g].engk[g].eng=k[q].engk[q].eng=t2
t3=k[g].mathk[g].math=k[q].mathk[q].math=t3
t4=k[g].compk[g].comp=k[q].compk[q].comp=t4
t5=k[g].allk[g].all=k[q].allk[q].all=t5
for(w=0w<10w++)
{z[w]=k[g].name[w]k[g].name[w]=k[q].name[w]k[q].name[w]=z[w]}
}
fclose(fp)
printf("\n\n\t请输入存储排完序的数据的文件名\n\t注意此文件名和存储原始数据的文件名不相同\n")
printf("\t")
scanf("%s",fname0)
fp=fopen(fname0,"w")
for(i=0i fclose(fp)
}
void shuchu()
{FILE *fpchar fname2[20]
do{printf("\n\n\t请输入你要输出学生数据的文件名:")
scanf("%s",fname2)
if(strcmp(fname2,fname)==0){fp=fopen(fname,"r")break}
else if(strcmp(fname2,fname0)==0){fp=fopen(fname0,"r")break}
else if(strcmp(fname2,fname6)==0){fp=fopen(fname6,"r")break}
else printf("\t你输入的文件不存在\n")}while(1)
rewind(fp)
printf("\t学号 姓名 英语 数学 计算机 平均分 总分\n")
printf("\t==============================================================\n")
for(i=0i {fread(&p,LEN,1,fp)
printf("\t%ld\t%s\t%d\t%d\t%d\t%d\t%d\n",p.num,p.name,p.eng,p.math,p.comp,p.ave,p.all)
}
printf("\t==============================================================\n")
fclose(fp)}
void tongji()
{FILE *fpchar fname4[20]int e1=0,e2=0,e3=0,e4=0,e5=0
do{printf("\n\n\t请输入你要统计的学生数据的文件名:")
scanf("%s",fname4)
if(strcmp(fname4,fname)==0)
{fp=fopen(fname,"r")break}
else printf("\t你输入的文件不存在\n")}while(1)
rewind(fp)
for(i=0i {fread(&p,LEN,1,fp)
if(p.ave<=59&&p.ave>=0)e1=e1+1
if(p.ave<=69&&p.ave>=60)e2=e2+1
if(p.ave<=79&&p.ave>=70)e3=e3+1
if(p.ave<=89&&p.ave>=80)e4=e4+1
if(p.ave<=100&&p.ave>=90)e5=e5+1
}
fclose(fp)
printf("\t按平均分统计各分数段的学生人数 \n")
printf("\t==============================================================\n")
printf("\t分数段\t0--59\t60--69\t70--79\t80--89\t90--100\n")
printf("\t人 数 \t %d\t %d\t %d\t %d\t %d\n",e1,e2,e3,e4,e5)
printf("\t==============================================================\n")
}
void shanchu()
{FILE *fp,*fp1char fname5[20]long numberstruct student M[N]
printf("\n\t")
do{printf("\n\t请输入你要删除学生数据的文件名:")
scanf("%s",fname5)
if(strcmp(fname5,fname)==0)
{fp=fopen(fname,"r")break}
else printf("\n\t你输入的文件不存在 \n")}while(1)
rewind(fp)
fp1=fopen(fname6,"w")
do{printf("\t请输入要删除数据的学生的学号并按回车键:")
scanf("%ld",&number)
for(i=0i {fread(&M[i],LEN,1,fp)
if(M[i].num!=number)fwrite(&M[i],LEN,1,fp1)
}
n--
fcloseall()
fp1=fopen(fname6,"r")fp=fopen(fname,"w")
for(i=0i {fread(&M[i],LEN,1,fp1)fwrite(&M[i],LEN,1,fp)}
fcloseall()
printf("\t你还要删除吗?如果继续请输入'y'加回车键,否则'n'加回车键:")
scanf("%s",c)
}while(c[0]=='y')
}
void charu()
{FILE *fpchar fname7[20]
do{printf("\t请输入你要插入学生数据的文件名:")
scanf("%s",fname7)
if(strcmp(fname7,fname)==0){fp=fopen(fname,"r+")break}
else printf("\t你输入的文件不存在 ")}while(1)
printf("\t请输入你要插入的数据\n\t输入的数据之间请用跳格键(Tab)隔开\n\t每输入完一个学生的数据按回车键(Enter) \n")
printf("\t结束插入学生数据时,请输入一个学生的学号为0并按回车键\n")
printf("\t学号\t姓名\t英语\t数学\t计算机 \n")
do{fseek(fp,n*LEN,0)printf("\t")
scanf("\t%ld",&p.num)
if(p.num==0) break
scanf("\t%s\t%d\t%d\t%d",p.name,&p.eng,&p.math,&p.comp)
p.all=(p.eng+p.math+p.comp)
p.ave=(p.all/3)
fwrite(&p,LEN,1,fp)
n++}while(1)
fclose(fp)
}
void zhujiemian()
{
printf("\n\t 主菜单 \n")
printf("\n")
printf("\t============================================================== \n")
printf("\n")
printf("\t 1.数据输入 2.数据输出 \n")
printf("\n")
printf("\t 3.数据排序(按平均分) 4.数据查找(按学号) \n")
printf("\n")
printf("\t 5.数据的插入 6.数据的删除(按学号) \n")
printf("\n")
printf("\t 7.数据的统计(按平均分)? 0.退出 \n")
printf("\n")
printf("\t============================================================== \n")
printf("\t请输入你的选择(0---7)并按回车键:")
scanf("%s",d)
}
void main()
{do
{
zhujiemian()
if(d[0]==m[0])break
else if(d[0]==m[1]){shuru()printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")}
else if(d[0]==m[2]){shuchu()}
else if(d[0]==m[3]){paixu()}
else if(d[0]==m[4]){chazhao()}
else if(d[0]==m[5]){charu()}
else if(d[0]==m[6]){shanchu()}
else if(d[0]==m[7]){tongji()}
else {printf("\t你的选择不正确!请重新选择! \n")
}
}while(1)
printf("\n\t\n\t\n\t\n\t\n\t\n\t\n\t")
printf("\t\t谢谢你的使用!!! ")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)