C语言程序报告学生学籍信息管理系统

C语言程序报告学生学籍信息管理系统
C语言程序报告学生学籍信息管理系统

C语言课程设计

院系:工程学院

&

姓名:刘若愚

学号:606

班号:05205235

指导教师:王老师

日期:2007年9月

C语言程序设计报告

第一部分题目要求

程序设计题目:学生学籍信息管理系统设计

【要求】

使用下面的数据,设计一个简单的学籍信息管理系统。

学生基本信息文件及其内容:

学号姓名性别宿舍号码电话号码

01 张成成男501

02 李成华女101

03 王成凤女101

04 张明明男502

>

05 陈东男501

06 李果男502

07 张园园女102

…. ………. ….. ……….

学生成绩基本信息文件及其内容:

学号课程编号课程名称学分平时成绩试验成绩卷面成绩

01 A01 大学物理 3 66 78 82

02 B03 高等数学 4 78 -1 90

01 B03 高等数学 4 45 -1 88

02 C01 VF 3 65 76 66

…. ….. ……….. …. …. …..

功能要求及说明:

数据录入功能:录入每个学生的学号、课程编号、课程名称、学分、平时成绩、试验成绩、卷面成绩共7个数据。综合成绩、实得分根据条件自动运算。

综合成绩的计算:

如果本课程的试验成绩为-1,则表示无试验,综合成绩=平时成绩*30%+卷面成绩*70%;

如果试验成绩不为-1,表示本课程有试验,综合成绩=平时成绩*15%+试验成绩*15%+卷面成绩*70%。

实得学分的计算:采用等级学分制。

综合成绩在90-100之间,应得学分=学分*100%;

综合成绩在80-90之间,应得学分=-学分*80%;

综合成绩在70-80之间,应得学分=学分*75%;

综合成绩在60-70之间,应得学分=学分*60%;

综合成绩在60以下,应得学分=学分*0%。

(2)查询功能;分为学生基本情况查询和成绩查询两种

1》学生基本情况查询:

输入一个学生的学号活姓名,查出此生的基本信息并显示输出。

输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。

成绩查询:

输入一个学号时,查询出此生的所有课程情况,格式如下:学号:姓名;

课程编号:课程名称:综合成绩:实得学分:

课程编号:课程名称: 综合成绩: 实得学分:

课程编号; 课程名称: 综合成绩: 实得学分:…

………………………….. …………

共修:XX科,实得总学分为:XXX

删除功能:当在中删除一个学生时,自动地在中删除此人所有的信息

排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。

第二部分需求分析

|

根据题目要求,由于学生信息是存放在文件中,所以应该提供文件的输入、输出等操作;在程序中要浏览学生的信息,应提供显示、查找、排序等操作;另外还应该提供键盘式选择菜单实现功能选择。

第三部分总体设计

根据上面的需求分析,可以将这个系统的设计分为以下几个模块:

第四部分详细设计

主函数

主函数设计一般要简单,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。

【流程图】

'

[程序]

#include<>

void menu()

{ int n,w;

do{ puts("\t\t**********MENU***********\n\n");

puts("\t ");

puts("\t ");

puts("\t ");

puts("\n\n\t\t*************************\n");

printf("Choice your number(1-7):[ ] \b\b\b\b");

scanf("%d",&n);

if(n<1||n>7) /对选择的数字作判断/

{w=1;getchar();}

else w=0;}

while (w==1);

switch(n)

{

case 1: browse();break; /浏览模块/

case 2: enter();break; /输入模块/

case 3: search();break; /查找模块/

case 4: browse2();break; /浏览模块/

case 5: enter2();break; /输入模块/

case 6: search2();break; /查找模块/

{

case 7: exit(0);break; /退出/

}}

main()

{ menu();}

2》各功能模块设计

输入模块:先采用结构体数组存储数据

'

struct a

{ int xuehao;

char name[15];

char sex[10];

int shushenum;

int telenum;

}a[10];

struct b

~

{

int xuehao;

int kechenghao;

char kechengming[15];

int xuefen;

int pingshichengji;

int shiyanchengji;

int juanmianchengji;

int zonghechengji;

int shidechengji;

}b[10]; a[10].b[10] 中每个数组元素对应一个学生

void jisuan()

{int i, n,n1, n2, n3,n4;

for(i=0;i<10;i++)

{if (b[i].shiyanchengji==-1)

{b[i].zonghechengji=b[i].pingshichengji*+b[i].juanmianchengji*;

break;}

if (b[i].shiyanchengji!=-1)

{b[i].zonghechengji=b[i].pingshichengji*+b[i].juanmianchengji*+b[i].sh iyanchengji*;

break;}

if(b[i].zonghechengji>90&&b[i].zonghechengji<100 )

{n4=b[i].xuefen;

"

b[i].shidechengji=(n4)*(1);

break;}

else if (b[i].zonghechengji>80&&b[i].zonghechengji<90)

{ n3=b[i].xuefen;

b[i].shidechengji=(n3)*;

break;}

else if

(b[i].zonghechengji>70&&b[i].zonghechengji<80) *

{ n2=b[i].xuefen;

b[i].shidechengji=(n2)*;

break;}

else if

(b[i].zonghechengji>60&b[i].zonghechengji<70)

{ n1=b[i].xuefen;

b[i].shidechengji=(n1)*;

break;}

`

else if (b[i].zonghechengji<60)

{n=b[i].xuefen;

b[i].shidechengji=n*0;

break;}

}

} 此简单程序计算综合成绩与实得学分

【程序】

enter()

{ int i,n;

printf("How many chengjijibenxinxi datas(0-%d):",10);

scanf("%d",&n);

printf("\n Enter data now \n\n");

for(i=0;i

{printf("\nInput %dth chengjijibenxinxi record.\n",i+1);

<

input(i);} 调用输入函数

if(i!=0) save(n); 调用保存函数

printf_back(); 一个任务结束时让用户选择是浏览还是返回

}

浏览模块:

browse() 浏览全部模块

{ int i,j,n;

n=load(); 加载记录

printf_face(); 调用显示数据结构项目函数

for(i=0;i

{ if(i%10==0) {printf("\n\nPass any key to contiune..."); 目的是分屏显示

getch(); puts("\n\n");}

printf_one(i);

printf("\n");

} 调用显示一个记录的函数

printf("\tThere are %d record.\n",n);

printf("\nPass any key to back....");

getch(); 按任意键

menu();

}

$

browse2() 该浏览模块的功能是显示所有学生的成绩基本信息

{ int i,j,n;

n=load2();

printf_face2();

for(i=0;i

{ if(i%10==0) {printf("\n\nPass any key to contiune...");

getch(); puts("\n\n");}

printf_one2(i);

,

printf("\n");

}

printf("\tThere are %d record.\n",n);

printf("\nPass any key to back....");

getch();

menu();

}

查找模块;

该模块的功能是根据输入的学生姓名查找对应的记录,找到以后,增加删除功能。

【流程图】

;

【程序】

search() 查找学生基本信息的模块

{ int i,n,k,w1=1,w2,w3,w4;

struct a s;

n=load();

do{

do

>

{ k=-1;

printf("\n\nEnter number that you want to search!

number");

scanf("%d",&; 输入要修改的数据的学号

printf_face(); 调用显示数据结构项目函数

for(i=0;i

if==a[i].xuehao)

{k=i; printf_one(k);break;} 调用显示一个记录的函数

if(k==-1)

;

{printf("\n\nNo exist!please");

printf("\n\nAre you again\n\t 1).Again 2)No and back [ ] \b\b\b ");

scanf("%d",&w1);}保证在第一次找的的基础上再查找找不到时能退出

}while(k==-1&&w1==1); 如果W1不等于1时直返回

search2() 查找学生成绩基本信息的模块

{ int i,n,k,w1=1,w2,w3,w4;

struct a s;

n=load2();

do{

do

{ k=-1;

printf("\n\nEnter number that you want to search! number");

scanf("%d",&;

printf_face2();

for(i=0;i

if==a[i].xuehao)

[

{k=i; printf_one2(k);break;}

if(k==-1)

{printf("\n\nNo exist!please");

printf("\n\nAre you again\n\t 1).Again 2)No and back [ ] \b\b\b ");

scanf("%d",&w1);}

}while(k==-1&&w1==1);

删除模块:

该模块的功能是先显示所有学生的信息,考虑到记录的数据较多,建议采用分屏显示

~

【程序】

Void del()

{

}

排序模块:

该功能模块的功能是要求将学生记录的综合成绩或实得

分升序或降序排序并显示数据。假设这里采用选择法排序。

【流程图】

【程序】

Void order() 排序模块 {int I,j,n;

Struct student s;n=load(); For(i=0;i

,

Save(n);

Puts(“\n\n ”); Printf_back(); }

设计出的程序如下

>

#include<> void menu() { int n,w;

do{ puts("\t\t**********MENU***********\n\n"); puts("\t "); puts("\t "); puts("\t ");

puts("\n\n\t\t*************************\n");

{

printf("Choice your number(1-7):[ ] \b\b\b\b"); scanf("%d",&n); if(n<1||n>7) {w=1;getchar();}

else w=0;}

while (w==1);

switch(n)

{

%

case 1: browse();break;

case 2: enter();break;

case 3: search();break;

case 4: browse2();break;

case 5: enter2();break;

case 6: search2();break;

case 7: exit(0);break;

}}

|

main()

{ menu();}

struct a

{ int xuehao;

char name[15];

char sex[10];

int shushenum;

int telenum;

}a[10];

struct b

{

int xuehao;

int kechenghao;

char kechengming[15];

int xuefen;

int pingshichengji;

int shiyanchengji;

int juanmianchengji;

int zonghechengji;

int shidechengji;

}b[10];

void jisuan()

{int i, n,n1, n2, n3,n4;

for(i=0;i<10;i++)

{if (b[i].shiyanchengji==-1)

{b[i].zonghechengji=b[i].pingshichengji*+b[i].juanmianchengji*;

break;}

if (b[i].shiyanchengji!=-1)

{b[i].zonghechengji=b[i].pingshichengji*+b[i].juanmianchengji*+b[i].sh iyanchengji*;

break;}

if(b[i].zonghechengji>90&&b[i].zonghechengji<100 )

{n4=b[i].xuefen;

b[i].shidechengji=(n4)*(1);

break;}

else if (b[i].zonghechengji>80&&b[i].zonghechengji<90)

{ n3=b[i].xuefen;

b[i].shidechengji=(n3)*;

break;}

else if

(b[i].zonghechengji>70&&b[i].zonghechengji<80) ]

{ n2=b[i].xuefen;

b[i].shidechengji=(n2)*;

break;}

else if

(b[i].zonghechengji>60&b[i].zonghechengji<70)

{ n1=b[i].xuefen;

b[i].shidechengji=(n1)*;

break;}

else if (b[i].zonghechengji<60)

{n=b[i].xuefen;

b[i].shidechengji=n*0;

break;}

}

}

enter()

{ int i,n;

printf("How many chengjijibenxinxi datas(0-%d):",10);

scanf("%d",&n);

printf("\n Enter data now \n\n");

for(i=0;i

{printf("\nInput %dth chengjijibenxinxi record.\n",i+1);

input(i);}

if(i!=0) save(n);

printf_back();

}

browse()

{ int i,j,n;

n=load();

printf_face();

for(i=0;i

{ if(i%10==0) {printf("\n\nPass any key to contiune...");

getch(); puts("\n\n");}

printf_one(i);

printf("\n");

}

printf("\tThere are %d record.\n",n);

printf("\nPass any key to back....");

getch();

menu();

}

search()

{ int i,n,k,w1=1,w2,w3,w4;

struct a s;

n=load();

do{

do

{ k=-1;

printf("\n\nEnter number that you want to search! number");

(

scanf("%d",&;

printf_face();

for(i=0;i

if==a[i].xuehao)

{k=i; printf_one(k);break;}

if(k==-1)

{printf("\n\nNo exist!please");

printf("\n\nAre you again\n\t 1).Again 2)No and back [ ] \b\b\b ");

|

scanf("%d",&w1);}

}while(k==-1&&w1==1);

w4=0;w3=0;

if(k!=-1) {printf("\n\nWhat do you want to do\n\t another menu [ ] \b\b\b");

scanf("%d",&w2);

switch(w2)

{ case 2:w3=modify(k);break;

case 3:{ printf("\nAre you sure\n\t 1).sure 2).No and back [ ] \b\b\b");

scanf("%d",&w4);

if(w4==1)

b[k].xuehao=0;b[k].kechenghao=0;strcpy(b[k].kechengming,"xxxx");b[k].xuefen=0;b[k ].pingshichengji=0;b[k].shiyanchengji=0;b[k].juanmianchengji=0;

b[k].zonghechengji=0;b[k].shidechengji=0;a[i].xuehao=0;strcpy(a[i].name,"xxxx");strc py(a[i].sex,"xxxx")

;a[i].shushenum=0;a[i].telenum=0;

break;}

}

if(w3==1||w4==1)

;

{save(n);

printf("\n\nSuccessful.");

printf("\n\nWhat do you want to do\n\t 1).Search another 2).Back [ ] \b\b\b");

scanf("%d",&w2);}

}

} while(w2==1);

menu();

}

input (int i)

{ scanf("%d%d%s%d%d%d%d%d%d",&b[i].xuehao,&b[i].kechenghao,b[i].kechengmin g,&b[i].xuefen,&b[i].pingshichengji,&b[i].shiyanchengji,&b[i].juanmianchengji);

jisuan();

}

save(int n)

{ FILE *fp;

int i;

if((fp=fopen("","wb"))==NULL)

/

{ printf("\nCannot open file\n");

return NULL;}

for(i=0;i

if(a[i].xuehao!=0)

if(fwrite(&b[i],sizeof(struct b),1,fp)!=1)

printf("file write error\n");

fclose(fp);

}

^

load()

{ FILE *fp;

int i;

if((fp=fopen("","rb"))==NULL)

{printf("\nCannot open file\n");

return NULL;}

for(i=0;!feof(fp);i++)

fread(&b[i],sizeof(struct b),1,fp);

fclose(fp);

return(i-1);

}

printf_face()

{ printf("\n\t xuehao kechenghao kechengming xuefen pingshichengji shiyanchengji juanmianchengji zonghechengji shidechengji "); }

printf_one(int i)

{

printf("%5d%5d%15s%5d%5d%5d%5d%5d%5d",b[i].xuehao,b[i].kechenghao,b[i].kec hengming,b[i].xuefen,b[i].pingshichengji,b[i].shiyanchengji,

&

b[i].juanmianchengji,b[i].zonghechengji,b[i].shidechengji);

}

printf_back()

{ int k,w;

printf("\n\n\tSuccessful.\n\n");

printf("What do you want to do\n\n\t 1).Browse all now 2).Back;[ ] \b\b\b");

scanf("%d",&w);

if(w==1) browse();

~

else menu();

}

modify(int i)

{ int c,w1=2;

do{ puts("\nmodify by=>\n\n");

puts(" 1).xuehao 2).kechenghao 3).kechengming 4).xuefen 5).pingshichengji 6).shiyanchengji 7).juanmianchengji 8)zonghechengji 9)shidechengji 10).all data 11).cancel and back ");

printf("Which you needed:[ ] \b\b\b\b");

scanf("%d",&c);

if(c>11||c<1)

{puts("\nChoice error!Please again!");

getchar();}

}while(c>11||c<1);

do { switch(c)

{case 1:printf("xuehao:");scanf("%d",&b[i].xuehao);break;

case 2:printf("kechenghao:");scanf("%d",&b[i].kechenghao);break;

case

3:printf("kechengming:");scanf("%s",b[i].kechengming);break;

[

case 4:printf("xuefen:");scanf("%d",&b[i].xuefen);break;

case

5:printf("pingshichengji:");scanf("%d",&b[i].pingshichengji);break;

case

6:printf("shiyanchengji:");scanf("%d",&b[i].shiyanchengji);break;

case

7:printf("juanmianchengji:");scanf("%d",&b[i].juanmianchengji);break;

case 8:input(i);break;

case 9:menu();break;}

puts("\nNow:\n");

printf_face();

printf_one(i);

printf("\nAre you sure\n\n\t 1).Sure 2).No and remodify 3).Back without save in this time [ ] \b\b\b");

scanf("%d",&w1);} while(w1==2);

return(w1);

}

enter2()

{ int i,n;

printf("How many xue sheng ji ben xin xi(0-%d):",10);

scanf("%d",&n);

printf("\n Enter data now \n\n");

for(i=0;i

{printf("\nInput %dth xue sheng ji ben xin xi record.\n",i+1);

input2(i);}

if(i!=0) save2(n);

printf_back2();

}

browse2()

{ int i,j,n;

n=load2();

printf_face2();

for(i=0;i

{ if(i%10==0) {printf("\n\nPass any key to contiune...");

getch(); puts("\n\n");}

printf_one2(i);

printf("\n");

}

printf("\tThere are %d record.\n",n);

printf("\nPass any key to back....");

getch();

menu();

}

$

search2()

{ int i,n,k,w1=1,w2,w3,w4;

struct a s;

n=load2();

do{

do

{ k=-1;

printf("\n\nEnter number that you want to search! number");

~

scanf("%d",&;

printf_face2();

for(i=0;i

if==a[i].xuehao)

{k=i; printf_one2(k);break;}

if(k==-1)

{printf("\n\nNo exist!please");

printf("\n\nAre you again\n\t 1).Again 2)No and back [ ] \b\b\b ");

scanf("%d",&w1);}

}while(k==-1&&w1==1);

w4=0;w3=0;

if(k!=-1) {printf("\n\nWhat do you want to do\n\t another menu [ ] \b\b\b");

scanf("%d",&w2);

switch(w2)

{ case 2:w3=modify2(k);break;

}

if(w3==1||w4==1)

{save2(n);

printf("\n\nSuccessful.");

printf("\n\nWhat do you want to do\n\t 1).Search another 2).Back [ ] \b\b\b");

scanf("%d",&w2);}

}

} while(w2==1);

menu();

#

}

input2 (int i)

{ scanf("%d %s %s %d %d",&a[i].xuehao,a[i].name,a[i].sex,&a[i].shushenum,a[i].telen um);

}

save2(int n)

{ FILE *fp;

int i;

if((fp=fopen("","wb"))==NULL)

<

{ printf("\nCannot open file\n");

return NULL;}

for(i=0;i

if(a[i].xuehao!=0)

if(fwrite(&a[i],sizeof(struct a),1,fp)!=1)

printf("file write error\n");

fclose(fp);

}

load2()

{ FILE *fp;

int i;

if((fp=fopen("","rb"))==NULL)

{printf("\nCannot open file\n");

return NULL;}

for(i=0;!feof(fp);i++)

fread(&a[i],sizeof(struct a),1,fp);

fclose(fp);

return(i-1);

}

printf_face2()

{ printf("\n\t xue sheng ji ben xin xi \n");}

printf_one2(int i)

{

printf("%d%s%s%d%d",a[i].xuehao,a[i].name,a[i].sex,a[i].shushenum,a[i].telenum);

}

printf_back2()

{ int k,w;

printf("\n\n\tSuccessful.\n\n");

printf("What do you want to do\n\n\t 1).Browse all now 2).Back;[ ] \b\b\b");

scanf("%d",&w);

if(w==1) browse2();

else menu();

}

modify2(int i)

{ int c,w1=2;

do{ puts("\nmodify by=>\n\n");

puts(" 1).xuehao 2).name 3).sex 4).shushenum 5)telenum 6).all data 7).cancel and back ");

printf("Which you needed:[ ] \b\b\b");

scanf("%d",&c);

if(c>7||c<1)

{puts("\nChoice error!Please again!");

getchar();}

}while(c>7||c<1);

do { switch(c)

{case 1:printf("xuehao:");scanf("%d",&a[i].xuehao);break;

case 2:printf("name:");scanf("%s",a[i].name);break;

case 3:printf("sex:");scanf("%s",a[i].sex);break;

case 4:printf("shushenum:");scanf("%d",&a[i].shushenum);break;

case 5:printf("telenum:");scanf("%d",&a[i].telenum);break;

case 6:input(i);break;

case 7:menu();break;}

puts("\nNow:\n");

printf_face2();

printf_one2(i);

printf("\nAre you sure\n\n\t 1).Sure 2).No and remodify 3).Back without save in this time [ ] \b\b\b");

scanf("%d",&w1);} while(w1==2);

return(w1);

}

insert2()

{

int c,i;

struct a s;

相关主题
相关文档
最新文档