当前位置:文档之家› c语言大作业学生管理系统

c语言大作业学生管理系统

c语言大作业学生管理系统
c语言大作业学生管理系统

#include "stdafx.h"

#include

#include

#include

#include

#define N 100

struct student

{

char name[10];

int num;

char sex[10];

float math;

float yingyu;

float zhengzhi;

float ywen;

float aver;

float sum;

}stu;

void menu()

{

system("cls");

printf(" * 欢迎使用学生成绩管理系统* \n");

printf(" * ======================= * \n"); printf(" * 请选择相应的功能: * \n");

printf(" * 1.成绩录入* \n");

printf(" * 2.查询成绩* \n");

printf(" * 3.修改成绩* \n");

printf(" * 4.插入成绩* \n");

printf(" * 5.报表输出* \n");

printf(" * 6.删除操作* \n");

printf(" * 0.退出系统* \n" );

printf(" * ======================= * \n"); printf(" \n\n\n\n\n\n\n\n\n * * * * \n"); }

//成绩录入

void input()

{

system("cls");

FILE *fp;

student xs; /*定义一个结构体变量来装从文件中读出来的数据*/

int c=1;

if((fp=fopen("student.dat","ab"))==NULL)

{

printf("can't open file!\n");exit(0);}

printf("\n 成绩录入");

printf("\n****************************************************");

while(c++) /*中间加油break,可使循环中断*/

{printf("\n 请输入您的姓名(姓名为end结束):");

scanf("%s",https://www.doczj.com/doc/c817553947.html,);

if(strcmp(https://www.doczj.com/doc/c817553947.html,,"end")==0) break;/*判断姓名是否为end,用字符串判断*/

printf("\n 请输入学号:");

scanf("%d",&xs.num);

printf("\n 性别:");

scanf("%s",&xs.sex);

printf("\n 请输入数学的成绩:");

scanf("%f",&xs.math);

printf("\n 请输入英语的成绩:");

scanf("%f",&xs.yingyu);

printf("\n 请输入政治的成绩:");

scanf("%f",&xs.zhengzhi);

printf("\n 请输入语文的成绩:");

scanf("%f",&xs.ywen);

xs.aver=0;/*给平均分变量赋初值*/

xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4;

xs.sum=0;

xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen;

fwrite(&xs,sizeof(stu),1,fp); //将成绩信息写入文件

system("cls");

}

fclose(fp);

}

void xingming()

{

FILE *fp;

student xs;

char name[10];

printf("\n 输入要查学生的姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb"))==NULL)

{printf("can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(strcmp(https://www.doczj.com/doc/c817553947.html,,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/

{

printf("\n 学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex, xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

break;

}

}

if(feof(fp))

printf("\n 查找失败!!!"); /*学生不存在*/

fclose(fp);

}

void xuehao()

{

FILE *fp;

student xs;

int num;

printf("\n 输入要查学生的学号: ");scanf("%d",&num);

if((fp=fopen("student.dat","rb"))==NULL)

{printf("can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/

{

printf("\n 学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex,xs .math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

break;

}

}

if(feof(fp)) printf("\n 查找失败!!!");

fclose(fp);

}

//查询

void search()

{

char ch1;

system("cls");

printf(" 请输入按何种方式查询:\n");

printf("\n 1-姓名,2-学号:");

ch1=getchar();/*用字符接收*/

switch(ch1)/*判断*/

case '1':xingming();break;

case '2':xuehao();break;

}

printf("\n 按任意键返回主菜单");

getch();/*让屏幕停留同时按任意键返回*/

}

//修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;

void modi()

{

student xs;

FILE *fp;

char name[10];

system("cls");

printf("\n 输入要修改的学生的姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf("can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(strcmp(https://www.doczj.com/doc/c817553947.html,,name)==0)/*判断输入要修改的姓名是否存在*/

{

printf(" 修改前学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

printf("\n 请输入该生的数学成绩:");scanf("%f",&xs.math);

printf("\n 英语成绩:");scanf("%f",&xs.yingyu);

printf("\n 政治成绩:");scanf("%f",&xs.zhengzhi);

printf("\n 语文成绩:");scanf("%f",&xs.ywen);

xs.aver=(xs.math +xs.yingyu +xs.zhengzhi +xs.ywen)/4;

xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen;

break;

}

}

if(!feof(fp))

{

printf(" \n 修改后的学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/

fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/

}

else

printf("\n 学生不存在,修改失败!!");

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

//插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。

void insert()

{

int i=0,j,k,lenth;

FILE *fp;

student s,xs[N];

system("cls");

printf("\n 请输入插入的学生的姓名:");scanf("%s",&https://www.doczj.com/doc/c817553947.html,);

printf("\n 学生的学号:");scanf("%d",&s.num);

printf("\n 学生的性别:");scanf("%s",&s.sex);

printf("\n 数学成绩:");scanf("%f",&s.math);

printf("\n 英语成绩:");scanf("%f",&s.yingyu);

printf("\n 政治成绩:");scanf("%f",&s.zhengzhi);

printf("\n 语文成绩:");scanf("%f",&s.ywen);

s.aver=(s.math+s.yingyu+s.zhengzhi+s.ywen)/4;

s.sum= s.math+s.yingyu+s.zhengzhi+s.ywen;

printf("\n 插入位置:");scanf("%d",&k);

// i=0;

if((fp=fopen("student.dat","rb"))==NULL)

{

printf(" can't open file!\n");exit(0);

}

while(!feof(fp))

{

fread(&xs[i],sizeof(stu),1,fp);/*把数据读入到结构体数组中*/

if(feof(fp)) break;

i++;

}

fclose(fp);

lenth=i;

if(k=0)/*k的位置要位于数组范围之内*/

{//插入

for(j=lenth-1;j>=k;j--)

xs[j+1]=xs[j];/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/

/*循环是只循环这一句的*/

xs[k]=s;/*将输入的学生信息加入这个k位置*/

lenth++;/*长度+1*/

//写回

if((fp=fopen("student.dat","wb"))==NULL)

{

printf(" 不能建立文件!!\n");exit(0);

}

for(i=0;i

fwrite(&xs[i],sizeof(stu),1,fp);

}

else/*不再数组范围之内*/

{

if((fp=fopen("student.dat","ab"))==NULL)

{

printf(" 不能建立文件!!\n");exit(0);

}

fwrite(&s,sizeof(stu),1,fp);

}

printf("\n 按任意键返回主菜单");

fclose(fp);

}

//显示

void print()

{

FILE *fp;

student s;

system("cls");

if((fp=fopen("student.dat","rb"))==NULL)

{

printf(" can't open file!\n");exit(0);

}

printf(" 学生成绩表");

printf("\n *****************************************************");

printf("\n %10s %10s%6s %6s %6s %6s %6s %6s %6s \n","姓名","学号","性别","数学","英语"," 政治"," 语文"," 平均成绩","总成绩");

while(!feof(fp))

{

fread(&s,sizeof(stu),1,fp);//从文件中读取成绩信息

if(feof(fp)) break;//判断是否文件尾

printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,s.num ,s.sex,s.math,s.yingyu,s.zhengzhi,s.ywen,s.aver,s.sum);

}

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

//统计

void tongji()

{

int i=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u;

FILE *fp;

student s[N], *p1[N],*p2[N],*p3[N],*p4[N];/*用指针数组*/

system("cls");

if((fp=fopen("student.dat","rb"))==NULL) {printf("cant't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&s[i++],sizeof(stu),1,fp);/*读入数据*/

if(feof(fp)) break;

}

t=i;i=0;

for(u=0;u

{

if(s[i].aver<60) {p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/

if(s[i].aver>=60&&s[i].aver<80) {p2[k++]=&s[i++];continue;}

if(s[i].aver>=80&&s[i].aver<90) {p3[l++]=&s[i++];continue;}

if(s[i].aver>=90) {p4[m++]=&s[i++];continue;}

}

printf(" 学生成绩单");

printf("\n 90以上的人有:姓名学号平均分\n");

for(r=0;r

{

printf("\n %10s %6d %6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver);

}

printf("\n 80-89分的人有:姓名学号平均分\n");

for(q=0;q

{

printf("\n %10s %6d %6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver);

}

printf("\n 60-79分的人有:姓名学号平均分\n");

for(p=0;p

{

printf("\n %10s %6d %6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver); }

printf("\n 不及格的人有:姓名学号平均分\n");

for(n=0;n

{

printf("\n %10s %6d %6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver); }

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

// if(s[i].aver<60) {p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/ if(s[i].aver>=60&&s[i].aver<80) {p2[k++]=&s[i++];continue;}

if(s[i].aver>=80&&s[i].aver<90) {p3[l++]=&s[i++];continue;}

if(s[i].aver>=90) {p4[m++]=&s[i++];continue;}

}

printf(" 学生成绩单");

printf("\n 90以上的人有:姓名学号平均分\n");

for(r=0;r

{

printf("\n %10s %6d %6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver); }

printf("\n 80-89分的人有:姓名学号平均分\n");

for(q=0;q

{

printf("\n %10s %6d %6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver); }

printf("\n 60-79分的人有:姓名学号平均分\n");

for(p=0;p

{

printf("\n %10s %6d %6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver); }

printf("\n 不及格的人有:姓名学号平均分\n");

for(n=0;n

{

printf("\n %10s %6d %6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver); }

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

//删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息void dele()

{

student xs[N];

FILE *fp;

char name[10];

int i=0,len,k=-1/*k<0是为后面if判断用的*/;

system("cls");

printf("\n 输入要删除的学生姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf(" can't open file!\n");exit(0);}

while(!feof(fp))

{

删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息void dele()

{

student xs[N];

FILE *fp;

char name[10];

int i=0,len,k=-1/*k<0是为后面if判断用的*/;

system("cls");

printf("\n 输入要删除的学生姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf(" can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs[i],sizeof(stu),1,fp);

if(feof(fp)) break;

if(strcmp(xs[i].name,name)==0) k=i;

i++;

}

fclose(fp);

//以下是删除后重新写文件

len=i;/*结构体数组上限*/

if(k>=0)/*k>0说明找到删除学生位置*/

{

if((fp=fopen("student.dat","wb+"))==NULL)

{printf(" can't open file!\n");exit(0);}

for(i=0;i

{

if(i==k) continue;/*从这个位置开始写入*/

fwrite(&xs[i],sizeof(stu),1,fp);

}

fclose(fp);

}

else {printf("\n 删除失败!!!\n");getch();} /*失败后重新返回菜单*/ printf("\n 按任意键返回主菜单");

print();

}

//菜单选择

void main()

{

char ch;

system("color 3f");

while(1)

{

menu();// 显示菜单

ch=getch();//选择菜单

if(ch=='0') break;

switch(ch)//判断功能项

{

case'1':input();break;

case '2':search();break;

case '3':modi();break;

case '4':insert();break;

case '5':print( );break;

case '6':tongji();break;

case '7':dele();break;

}

}

}

#include "stdafx.h"

#include

#include

#include

#include

#define N 100

struct student

{

char name[10];

int num;

char sex[10];

float math;

float yingyu;

float zhengzhi;

float ywen;

float aver;

float sum;

}stu;

void menu()

{

system("cls");

printf(" * 欢迎使用学生成绩管理系统* \n");

printf(" * ======================= * \n"); printf(" * 请选择相应的功能: * \n");

printf(" * 1.成绩录入* \n");

printf(" * 2.查询成绩* \n");

printf(" * 3.修改成绩* \n");

printf(" * 4.插入成绩* \n");

printf(" * 5.报表输出* \n");

printf(" * 6.删除操作* \n");

printf(" * 0.退出系统* \n" );

printf(" * ======================= * \n"); printf(" \n\n\n\n\n\n\n\n\n * * * * \n"); }

//成绩录入

void input()

{

system("cls");

FILE *fp;

student xs; /*定义一个结构体变量来装从文件中读出来的数据*/

int c=1;

if((fp=fopen("student.dat","ab"))==NULL)

{

printf("can't open file!\n");exit(0);}

printf("\n 成绩录入");

printf("\n****************************************************");

while(c++) /*中间加油break,可使循环中断*/

{printf("\n 请输入您的姓名(姓名为end结束):");

scanf("%s",https://www.doczj.com/doc/c817553947.html,);

if(strcmp(https://www.doczj.com/doc/c817553947.html,,"end")==0) break;/*判断姓名是否为end,用字符串判断*/

printf("\n 请输入学号:");

scanf("%d",&xs.num);

printf("\n 性别:");

scanf("%s",&xs.sex);

printf("\n 请输入数学的成绩:");

scanf("%f",&xs.math);

printf("\n 请输入英语的成绩:");

scanf("%f",&xs.yingyu);

printf("\n 请输入政治的成绩:");

scanf("%f",&xs.zhengzhi);

printf("\n 请输入语文的成绩:");

scanf("%f",&xs.ywen);

xs.aver=0;/*给平均分变量赋初值*/

xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4;

xs.sum=0;

xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen;

fwrite(&xs,sizeof(stu),1,fp); //将成绩信息写入文件

system("cls");

}

fclose(fp);

}

void xingming()

{

FILE *fp;

student xs;

char name[10];

printf("\n 输入要查学生的姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb"))==NULL)

{printf("can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(strcmp(https://www.doczj.com/doc/c817553947.html,,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/

{

printf("\n 学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex, xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

break;

}

}

if(feof(fp))

printf("\n 查找失败!!!"); /*学生不存在*/

fclose(fp);

}

void xuehao()

{

FILE *fp;

student xs;

int num;

printf("\n 输入要查学生的学号: ");scanf("%d",&num);

if((fp=fopen("student.dat","rb"))==NULL)

{printf("can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/

{

printf("\n 学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex,xs .math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

break;

}

}

if(feof(fp)) printf("\n 查找失败!!!");

fclose(fp);

}

//查询

void search()

{

char ch1;

system("cls");

printf(" 请输入按何种方式查询:\n");

printf("\n 1-姓名,2-学号:");

ch1=getchar();/*用字符接收*/

switch(ch1)/*判断*/

{

case '1':xingming();break;

case '2':xuehao();break;

}

printf("\n 按任意键返回主菜单");

getch();/*让屏幕停留同时按任意键返回*/

}

//修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;

void modi()

{

student xs;

FILE *fp;

char name[10];

system("cls");

printf("\n 输入要修改的学生的姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf("can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs,sizeof(stu),1,fp);

if(strcmp(https://www.doczj.com/doc/c817553947.html,,name)==0)/*判断输入要修改的姓名是否存在*/

{

printf(" 修改前学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

printf("\n 请输入该生的数学成绩:");scanf("%f",&xs.math);

printf("\n 英语成绩:");scanf("%f",&xs.yingyu);

printf("\n 政治成绩:");scanf("%f",&xs.zhengzhi);

printf("\n 语文成绩:");scanf("%f",&xs.ywen);

xs.aver=(xs.math +xs.yingyu +xs.zhengzhi +xs.ywen)/4;

xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen;

break;

}

}

if(!feof(fp))

{

printf(" \n 修改后的学生的信息如下:\n");

printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");

printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);

fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/

fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/

}

else

printf("\n 学生不存在,修改失败!!");

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

//插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。

void insert()

{

int i=0,j,k,lenth;

FILE *fp;

student s,xs[N];

system("cls");

printf("\n 请输入插入的学生的姓名:");scanf("%s",&https://www.doczj.com/doc/c817553947.html,);

printf("\n 学生的学号:");scanf("%d",&s.num);

printf("\n 学生的性别:");scanf("%s",&s.sex);

printf("\n 数学成绩:");scanf("%f",&s.math);

printf("\n 英语成绩:");scanf("%f",&s.yingyu);

printf("\n 政治成绩:");scanf("%f",&s.zhengzhi);

printf("\n 语文成绩:");scanf("%f",&s.ywen);

s.aver=(s.math+s.yingyu+s.zhengzhi+s.ywen)/4;

s.sum= s.math+s.yingyu+s.zhengzhi+s.ywen;

printf("\n 插入位置:");scanf("%d",&k);

// i=0;

if((fp=fopen("student.dat","rb"))==NULL)

{

printf(" can't open file!\n");exit(0);

}

while(!feof(fp))

{

fread(&xs[i],sizeof(stu),1,fp);/*把数据读入到结构体数组中*/

if(feof(fp)) break;

i++;

}

fclose(fp);

lenth=i;

if(k=0)/*k的位置要位于数组范围之内*/

{//插入

for(j=lenth-1;j>=k;j--)

xs[j+1]=xs[j];/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/

/*循环是只循环这一句的*/

xs[k]=s;/*将输入的学生信息加入这个k位置*/

lenth++;/*长度+1*/

//写回

if((fp=fopen("student.dat","wb"))==NULL)

{

printf(" 不能建立文件!!\n");exit(0);

}

for(i=0;i

fwrite(&xs[i],sizeof(stu),1,fp);

}

else/*不再数组范围之内*/

{

if((fp=fopen("student.dat","ab"))==NULL)

{

printf(" 不能建立文件!!\n");exit(0);

}

fwrite(&s,sizeof(stu),1,fp);

}

printf("\n 按任意键返回主菜单");

fclose(fp);

}

//显示

void print()

{

FILE *fp;

student s;

system("cls");

if((fp=fopen("student.dat","rb"))==NULL)

{

printf(" can't open file!\n");exit(0);

}

printf(" 学生成绩表");

printf("\n *****************************************************");

printf("\n %10s %10s%6s %6s %6s %6s %6s %6s %6s \n","姓名","学号","性别","数学","英语"," 政治"," 语文"," 平均成绩","总成绩");

while(!feof(fp))

{

fread(&s,sizeof(stu),1,fp);//从文件中读取成绩信息

if(feof(fp)) break;//判断是否文件尾

printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",https://www.doczj.com/doc/c817553947.html,,s.num ,s.sex,s.math,s.yingyu,s.zhengzhi,s.ywen,s.aver,s.sum);

}

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

//统计

void tongji()

{

int i=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u;

FILE *fp;

student s[N], *p1[N],*p2[N],*p3[N],*p4[N];/*用指针数组*/

system("cls");

if((fp=fopen("student.dat","rb"))==NULL) {printf("cant't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&s[i++],sizeof(stu),1,fp);/*读入数据*/

if(feof(fp)) break;

}

t=i;i=0;

for(u=0;u

{

if(s[i].aver<60) {p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/ if(s[i].aver>=60&&s[i].aver<80) {p2[k++]=&s[i++];continue;}

if(s[i].aver>=80&&s[i].aver<90) {p3[l++]=&s[i++];continue;}

if(s[i].aver>=90) {p4[m++]=&s[i++];continue;}

}

printf(" 学生成绩单");

printf("\n 90以上的人有:姓名学号平均分\n");

for(r=0;r

{

printf("\n %10s %6d %6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver); }

printf("\n 80-89分的人有:姓名学号平均分\n");

for(q=0;q

{

printf("\n %10s %6d %6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver); }

printf("\n 60-79分的人有:姓名学号平均分\n");

for(p=0;p

{

printf("\n %10s %6d %6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver); }

printf("\n 不及格的人有:姓名学号平均分\n");

for(n=0;n

{

printf("\n %10s %6d %6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver); }

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

// if(s[i].aver<60) {p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/

if(s[i].aver>=60&&s[i].aver<80) {p2[k++]=&s[i++];continue;}

if(s[i].aver>=80&&s[i].aver<90) {p3[l++]=&s[i++];continue;}

if(s[i].aver>=90) {p4[m++]=&s[i++];continue;}

}

printf(" 学生成绩单");

printf("\n 90以上的人有:姓名学号平均分\n");

for(r=0;r

{

printf("\n %10s %6d %6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver); }

printf("\n 80-89分的人有:姓名学号平均分\n");

for(q=0;q

{

printf("\n %10s %6d %6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver); }

printf("\n 60-79分的人有:姓名学号平均分\n");

for(p=0;p

{

printf("\n %10s %6d %6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver); }

printf("\n 不及格的人有:姓名学号平均分\n");

for(n=0;n

{

printf("\n %10s %6d %6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver); }

fclose(fp);

printf("\n 按任意键返回主菜单");

getch();

}

//删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息void dele()

{

student xs[N];

FILE *fp;

char name[10];

int i=0,len,k=-1/*k<0是为后面if判断用的*/;

system("cls");

printf("\n 输入要删除的学生姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf(" can't open file!\n");exit(0);}

while(!feof(fp))

{

删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息void dele()

{

student xs[N];

FILE *fp;

char name[10];

int i=0,len,k=-1/*k<0是为后面if判断用的*/;

system("cls");

printf("\n 输入要删除的学生姓名: ");scanf("%s",name);

if((fp=fopen("student.dat","rb+"))==NULL)

{printf(" can't open file!\n");exit(0);}

while(!feof(fp))

{

fread(&xs[i],sizeof(stu),1,fp);

if(feof(fp)) break;

if(strcmp(xs[i].name,name)==0) k=i;

i++;

}

fclose(fp);

//以下是删除后重新写文件

len=i;/*结构体数组上限*/

if(k>=0)/*k>0说明找到删除学生位置*/

{

if((fp=fopen("student.dat","wb+"))==NULL)

{printf(" can't open file!\n");exit(0);}

for(i=0;i

{

if(i==k) continue;/*从这个位置开始写入*/

fwrite(&xs[i],sizeof(stu),1,fp);

}

fclose(fp);

}

else {printf("\n 删除失败!!!\n");getch();} /*失败后重新返回菜单*/

printf("\n 按任意键返回主菜单");

print();

}

//菜单选择

void main()

{

char ch;

system("color 3f");

while(1)

{

menu();// 显示菜单

ch=getch();//选择菜单if(ch=='0') break; switch(ch)//判断功能项{

case'1':input();break; case '2':search();break; case '3':modi();break; case '4':insert();break; case '5':print( );break; case '6':tongji();break; case '7':dele();break;

}

}

}

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

c语言第1章练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言 D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。

学生管理系统 C语言

C/C++程序设计 课程设计报告 专业: 班级: 学号: 姓名: 版本号: 时间:

目录 1 概述 (2) 1.1目的 (2) 1.2计划 (2) 2 课程设计过程及结果 (3) 2.1编程环境及工具 (3) 2.2排序与简单分析 (3) 2.3综合设计 (3) 2.3.1 功能实现 (3) 2.3.2 程序异常处理 (5) 2.3.3 特色功能 (5) 3 课程设计总结 (6) 3.1课程设计计划执行情况 (6) 3.2我理解的C++ (6) 3.3改进设想 (6) 附录关键代码 (6)

原创声明:本课程设计报告及相应的软件程序的全部内容均为本人独立完成,如有抄袭,愿承担相应后果。 声明人___________________ 学号:__________________

1概述 1.1 目的 1、熟悉c语言的编译环境 2、掌握c语言的基本操作 3、回顾并加深对C/C++程序设计相关知识的理解,能够用C/C++独立完成简单数据管 理软件的编写 4、锻炼同学思维强度与能力 5、培养同学认真态度和刻苦的精神 1.2 计划 用Microsoft Visual C++ 6.0进行编译,利用之前学过的课程知识和查询资料等方法完成题目的设计,用Debug进行调试。 1.回顾c语言编程基本内容,了解各种数据类型及掌握各种语句的结构类型。 2.完成一个简单任务:排序与简单分析把一个完全由小写字母组成字符串按照每个字母的出现次数从低到高重新排序。出现次数相同的按照字母顺序排列,(a最前,z最后)。 输入:任意一个字符串(小写,长度小于255) 输出:重新排序后的结果 例如,输入:aassdfkjiowea回车 则输出为:defijkowssaaa 3.综合设计:设计实现学生成绩管理软件。 参考下面的数据,用C/C++设计一个简单的学生成绩管理软件,实现基本的功能。 学生信息文件(A.TXT)及其内容(示意): 学号姓名性别班级 200800800901 张三男电子0801 200800820902 李四女通信0801 200800800903 王五女电子0802 200800820904 赵六男通信0801 …… 课程信息(B.TXT)及其内容(示意): 课程编号课程名称学分 C01 大学英语 4 C02 高等数学 4 C03 C++程序设计 3 …… 学生成绩信息文件(C.TXT)及其内容(示意,成绩保存使用浮点数): 学号课程成绩 200800800901 C01 89 200800800902 C01 68.5 200800800901 C02 45.5 200800800903 C02 78 实现数据录入显示功能查询功能数据删除、整理功能排序功能。

C语言函数习题及答案

第6章函数习题 一、选择题 1. 一个完整的C源程序是【】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主函数和零个以上的非主函数构成 C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成 2. 以下关于函数的叙述中正确的是【】。 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以定义任意一个函数 3. 以下关于函数的叙述中不正确的是【】。 A)C程序是函数的集合,包括标准库函数和用户自定义函数 B)在C语言程序中,被调用的函数必须在main函数中定义 C)在C语言程序中,函数的定义不能嵌套 D)在C语言程序中,函数的调用可以嵌套 4. 在一个C程序中,【】。 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 5. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【】 A)float B)long C)int D)double 6. 以下关于函数叙述中,错误的是【】。 A)函数未被调用时,系统将不为形参分配内存单元 B)实参与形参的个数应相等,且实参与形参的类型必须对应一致 C)当形参是变量时,实参可以是常量、变量或表达式 D)形参可以是常量、变量或表达式 7. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是 【】。 A)参数的形实(哑实)结合 B)函数返回值 C)全局变量 D)同名的局部变量 8. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】。 A)实参与其对应的形参共占存储单元 B)只有当实参与其对应的形参同名时才共占存储单元 C)实参与对应的形参分别占用不同的存储单元

最新学生信息管理系统C语言编程

学生信息管理系统C语言编程 【问题描述】 学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。【基本要求】 (1)学生信息包括: 学生基本信息文件(student.txt)(注:该文件不需要编程录入数据,可用文本编辑工具直接生成)的内容如下: (2)学生成绩基本信息文件(score.dat)及其内容如下:((注:该文件内容需要编程录入数据,具体做法见下面的要求) 学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分(3)需要实现的功能 1)数据录入和计算功能:对score.dat进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,综合成绩、实得学分由程序根据条件自动运算。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 。 实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 ,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下 ,应得学分=学分*0%。 2)查询功能:分为学生基本情况查询和成绩查询两种 (1)学生基本情况查询: ①、输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出,格式如下: ②、输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。(格式如上所示) (2)成绩查询: ①、输入一个学号时,查询出此生的所有课程情况,格式如下: 学号:xx 姓名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx …………………… 共修:xx科,实得总学分为: xxx (3)删除功能: 提供待删除学生的学号,则在student.txt和score.dat中删除所有与该学生有关的信息。(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。 【程序设计的具体说明】 (1)将与两个文件对应的信息分别定义两种结构体类型来表示,也可以用类来定义;(2)对score.dat文件的写入,从键盘上输入的是前七项,后两项数据项根据计算方法算出后,得到完整的结构体信息,作为一个整体写入(可调用write函数)。

C语言上机作业题及答案

实验一: 1、已知华氏温度,根据转换公式计算相应的摄氏温度。 摄氏温度= 5*(华氏温度-32)/9 2.任意输入一个有五位数字的正整数,逆序输出每一数位上的数字。 如: 输入 12345 输出 5 4 3 2 1 #include"stdio.h" main() { double t,T; printf ("已知华氏温度,根据转换公式计算相应的摄氏温度"); scanf ("%lf",&t); T=(5*(t-32)/9); printf ("摄氏温度=%lf",T); } #include"stdio.h" main() { int value,a,b,c,d,e,m,n,h; printf ("任意输入一个有五位数字的正整数,逆序输出每一数位上的数字"); scanf ("%d",&value); a=value/10000; m=value%10000; b=m/1000; n=m%1000; c=n/100; h=n%100; d=h/10; e=h%10; printf ("%d%d%d%d%d",e,d,c,b,a); } 实验二: 1.一个成年人的身高与其父母的身高密切相关,根据以下人体标准身高预测公式计算自己或某个同学的身高,并跟实际身高比较,给出结论是否符合该公式(误

差在3厘米范围内即视为相符)。 男性身高=(父亲身高+母亲身高)×1.08÷2(厘米) 女性身高=(父亲身高×0.923+母亲身高)÷2(厘米) 2.从键盘上输入税前收入,根据以下公式及规则,计算个人所得税税额并输出。应纳个人所得税税额=(税前收入—起征点额度)*适用税率—速算扣除数 其中,起征点额度是3500元,其他如下: 应纳税所得额税率速算扣除数 不超过1500元的部分 3% 0 超过1500元至4500元的部分 10% 105 超过4500元至9000元的部分 20% 555 超过9000元至35000元的部分 25% 1005 超过35000元至55000元的部分 30% 2755 超过55000元至80000元的部分 35% 5505 超过80000的部分 45% 13505 如:某人月收入5000元,则应纳个人所得税税额为(5000-3500)* 10% - 105 = 45元。 #include #include main() { float A,a,H,h,b; printf("父亲身高(厘米)\n"); scanf("%f",&A); printf("母亲身高(厘米)\n"); scanf("%f",&a); printf("孩子实际身高(厘米)\n"); scanf("%f",&H); printf("请选择孩子性别:女=0,男=1\n"); scanf("%f",&b); if(b) h=(A+a)*1.08/2; else h=(A*0.923+a)/2; if(fabs(H-h)<=3) printf("实际身高符合该公式\n"); else

c语言第1、2章练习题答案

第1、2章练习题 1.以下叙述正确的是()。B A)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如fun(fun(x)) C)C语言函数不可以单独编译D)C语言除了main函数外,其他函数不可以作为单独文件形式存在 2.以下叙述正确的是()。C A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句 C)简单的C语句必须以分号结束D)C语句必须在一行内写完 3.以下叙述中正确的是()。C A)C程序中的注释只能出现在程序的开始位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一条语句 C)C程序书写格式自由,一条语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 4.下列叙述中错误的是()。A A)一个C语言程序只能实现一种算法B)C语言程序可以由多个程序文件组成 C)C语言程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在5.以下叙述中正确的是()。C 页脚内容1

A)C语言程序将从源程序中的第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主函数 6.对于一个正常运行的C程序,以下叙述正确的是()。A A)程序的执行总是从main函数开始,在main函数中结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束 D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束7.下列叙述正确的是()。D A)每个C语言程序文件中都必须有一个main( )函数 B)在C语言程序中main( )函数的位置是固定的 C)C语言程序中所有函数之间都可以相互调用,与函数所在的位置无关 D)在C语言程序的函数中不能定义另一个函数 8.下列叙述中错误的是()。B A)C程序在运行过程中所有计算机都以二进制方式进行 B)C程序在运行过程中所有计算机都以十进制方式进行 页脚内容2

简单的学生信息管理系统C语言

#include #include //输入函数getch的头文件,不能用getchar,具体请查看两者的区别 #include //申请空间的函数malloc的头文件 typedef struct { //定义结构体类型,包含四项内容,可以自由添加 int num; char name[10]; int age; char sex[5]; }st; typedef struct node //构造结点(也是结构体变量) { st data; //数据域 struct node *next; //指针域(指向结构体,也就是自身) }list; list *create() //建立一个单链表 { list *p,*r,*head; //定义结构体指针变量 int i,n; head = (list *)malloc(sizeof(list)); //申请头结点 r = head; head->next = NULL; //头结点的指针域先定义为空 printf("请输入学生人数:\n"); scanf("%d",&n); printf("请输入学生个人信息:\n\n学号,姓名,年龄,性别\n"); for(i=1;i<=n;i++) { p = (list *)malloc(sizeof(list)); //申请一个结点 scanf("%d%s%d%s",&p->data.num,&p->https://www.doczj.com/doc/c817553947.html,,&p->data.age,&p->data.sex); //向结点的数据域输入学生信息 p->next = NULL; r->next = p; //将头结点指向第一个结点,以此类推。 r = r->next; } return (head); //返回头结点的地址 } void output(list *h) // 输出链表中的学生信息 { list *p; p = h->next; //使p指向第一个结点 if(p == NULL)

学生信息管理系统C语言课程设计报告

通信工程C语言强化训练实验报告 评语: 教师签字: 东北大学秦皇岛分校

学生信息管理系统 强化训练目的 C语言基本知识的巩固和综合运用。基本数据类型、基本控制结构、数组、指针、函数、结构体和共用体。 C语言高级编程。链表基本操作、文件的基本操作、图形和声音制作。 程序的结构化设计。 编辑、设置、编译、调试、执行。 C语言结合实际问题的综合设计。 设计题目功能 通过计算机对数据文件的存储和读取,对学生信息进行管理,能够完成学生信息的增、删、改、查找等功能。 设计题目要求 名片信息至少包括学号、姓名、性别、出生日期、宿舍号等基本信息。 具体要求包括: 1有主界面和主菜单

2以班级为单位用链表存放学生信息 3可以实现按学号、姓名、宿舍号查询和统计并在屏幕上输出查询结果 4友好的界面和操作提示 [A]信息录入 [D]信息删除 [F]信息查询 [Q]退出 4、程序流程图 总体设计 详细设计 【程序】主函数 void main() /*主函数即用户的操作界面*/ { system("color 1E"); /*设计文本颜色*/ int b,flag=0; /*声明局部变量*/ while(1) /*循环输出以下信息*/ { printf("\n\t\t\t欢迎来到学生成绩管理系统!\n"); printf("\n\t\t\t\t ###制作\n"); printf("\t\t\t-------------------------------\n");

printf("\t\t\t1.键入学生的信息\n\n"); /*键入学生的信息*/ printf("\t\t\t2.查看录入的学生信息\n\n"); /*查看录入的学生信息*/ printf("\t\t\t3.按姓名查看学生的信息\n\n"); /*按姓名查看学生的信息*/ printf("\t\t\t4.按学号查看学生的信息\n\n"); /*按学号查看学生的信息*/ printf("\t\t\t5.按宿舍号查看学生的信息\n\n"); /*按宿舍号查看学生的信息*/ printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/ printf("\t\t\t7.保存学生信息\n\n"); /*保存*/ printf("\t\t\t8.打开文件\n\n"); /*打开文件*/ printf("\t\t\t9.我的个人信息\n\n"); /*我的个人信息*/ printf("\t\t\t0.退出\n\n"); /*退出*/ printf("\t\t\t请输入你的选择:"); scanf("%d",&b); switch(b) { case 1:type();break; /*调用键入学生信息函数*/ case 2:look();break; /*调用查看函数*/ case 3:search_name();break; /*调用姓名查看函数*/ case 4:search_number();break; /*调用学号查看函数*/ case 5: search_dorm();break; /*调用宿舍号查看函数*/ case 6:del();break;/*调用删除函数*/ case 7:save();break;/*调用保存函数*/ case 8:see();break;/*调用打开文件函数*/ case 9:welcome();break;/*调用我的个人信息函数*/ case 0:flag=1;break;/*退出SWITCH语句*/ default :printf("错误!"); } if(flag) break; /*如果选择0就退出循环*/ } } 5、程序设计源代码 #include"stdio.h" #include"conio.h" #include"string.h" #include"stdlib.h" void look(); /*声明查看函数*/ void save(); /*声明保存函数*/ void search_name(); /*声明按姓名查看函数*/ void search_number(); /*声明按学号查看函数*/ void search_dorm(); /*声明按宿舍号查看函数*/ void del(); /*声明删除函数*/ int openl(); /*声明打开函数*/ void welcome(); /*声明我的个人信息函数*/ void type(); /*声明输入函数*/

C语言练习作业和答案

习题一 1、C语言源程序最多可能由____ABCD____________部分组成? A) 预处理部分B)变量说明部分 C) 函数原型声明部分D)函数定义部分 2、一个完整的C语言源程序最少必须有___C____。 A)若干个主函数B)若干个函数 C)且只能有一个主函数D)一个函数 3、C语言以函数为源程序的基本单位最主要有利于__B_____。 A)程序设计结构化B)程序设计模块化 C)程序设计简单化D提高程序设计有效性 4、要使得C语言编写的程序能够在计算机上运行并得出正确结果,必须要先经过______________B_______________________。 A)编辑和链接B)编译和链接 C)修改和运行D运行并输入数据 5、一个C程序的执行是从______A______。 A)本程序的main函数开始,到main函数结束。 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 6、以下叙述正确的是__A______。 A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句 D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 7、以下叙述不正确的是___D_____。 A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面 8、C语言规定:在一个源程序中,main函数的位置是___A_____。 A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后 习题二 一、程序题 1、阅读程序写运行结果 (1)#include int main()

c学生信息管理系统

洛阳理工学院 课程设计报告课程名称高级语言C#课程设计 设计题目学生信息管理系统 专业计算机科学与技术 班级 B130506 学号 姓名张葵 完成日期 课程设计任务书 设计题目:学生信息管理系统 教务员可以输入学生、教师、班级、课程信息,一个班级只属于一个专业,一个学生只属于一个班级。教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师。一个教师可以教授多个班的多门课程。 教师可以查看学习该课程的学生名单。课程结束后,教师可以录入课程成绩。 课程分两类,必修课和选修课。学生可以选修课程,每学期几门。学生可以查看自己各门课程的成绩。学生还可以进行评教,给老师打分。 系统管理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。

指导教师:张文学 2015 年 12 月 27 日 课程设计评语成绩: 指导教师:_______________ 2015 年 12 月 31 日

目录

第 1 章需求和可行性分析 需求分析 学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。学校的管理人员可以通过电脑对学生信息进行有效的管理,避免了以往人工管理的复杂和耗时费力的劳动,也大大的能够减少管理人员的工作量,可以有效的节约学校的开支。

功能需求 作为一个学生的信息管理系统,必须要有管理人员能够进行对学生的信息进 行有效的管理,因此,系统必须预留一个管理员的登录窗口和登录之后所能进行的操作,在学生信息管理系统中,管理员具有最高的权限,可以对学生、老师、班级、专业等等进行添加、删除、修改个查询。除了拥有管理员之外,还应该拥有教务处对学生进行管理,例如:对学生课程,成绩等等具有一定的权限。此外,还应该有老师的一个权限,老师在带完一门课之后可以对学生进行一个成绩录入和平时布置作业的功能。最后是学生自己拥有的功能,学生在考试结束后可以利用系统登录自己的账户对成绩进行查询。 在学生信息管理系统中,要明确各类用户所能拥有的最高权限,如果一旦权限的问题搞错以后,整个系统就会变得没有价值。例如:学生只有对成绩的查询功能,而不能对成绩拥有修改和删除以及插入的功能。老师只能够对学生进行成绩的录入和平时布置作业,而不能删除学生的个人信息等权限。 要设立不同的异常机制,这样不会因为用户的错误的操作而使得系统瞬时奔溃。我们要在代码中设置不同的异常抛出机制,这样就可以使得用户在进行了错误的或者违反规则的操作之后,系统不会出现突然的停止运转。 可行性分析 随着计算机语言和数据服务的不断发展,使得许多的现实问题都可以利用计算机来帮助人类实现轻巧,方便的管理。在教育上,学生是一个庞大的群体,因此技术人员早早就开始想办法解决这个问题,因此,目前对于学生信息的管理各种语言都能够编写出一套完整的、可用的学生信息管理系统。 技术可行性 在这套系统的开发中,采用的是开发语言是C#,软件是Visio Studio2010,C#是微软对问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft?平台的应用程序,Microsoft .NET提供

C语言练习题 带答案

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

学生管理系统c

实验 一、设计思路和主要步骤 思路主要是设计一个单文档用来实现主界面,然后在菜单栏添加一个菜单项,下面包含录入学生基本信息,查询学生基本信息,和修改学生基本信息等多项子菜单,每项子菜单都对应一个对话框对数据进行处理。在主对话框中添加列表控件用来显示学生的基本信息,以方便学生信息的修改,具体修改哪一项。对于学生信息的录入,查询,修改,删除都用按钮控件,并为每个按.钮添加消息响应函数用来处理学生的信息操作。 接下来就是要把学生的基本信息能够保存下来,因此要用到文件的操作,fstream 二、可以满足要求。 三、各功能模块和流程图 1.功能模块 对话框

四、代码 1.主体 Int CMainFrame::0nCreate(LPCREATESTRUCT IpCreateStruct) { if(CFr ameWnd::0nCreate(lpCreateStruct)==-1) return-1; if(!m_ wndToolBar .CreateEx(this, TBSTYLE_ FLAT,WS__CHILD|

WS_VISIBLE|CBRS_T0Pl CBRS_GRIPPERI CBRS_T00L TIPS CBRS_FLYBY]CBRS_SIZE_ DYNAMIC)[!m_ wndT oolBar.LoadToolB ar(ID R_MAINFRAME)) { TRACEO("Failed to create toolbarln"); return -1; // fail to create } If(!m_wndStatusBar.Create( this)/l!m_wndS tatusBar.SetIndicat ors(indicators,sizeof(indicators)/ sizeof(UINT))) { TRACEO("Failed to create status barln"); return -1; //fail to create } m_wndToolBar EnableDocking(CBRS_ALIGN__ANY);EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return O; { void CMainFrame::OnMenuitemadd() { CMyDlgAdd dlg1; dlg1.DoModal0; } void CMainFrame::OnMenuitemmodify() { CMyDlgModify dlg2; } dlg2.DoModal(); void CMainFrame::OnMenuitemseek() {

C语言学生信息管理系统 (2)

C语言课程设计 题目名称:学生信息管理系统 姓名XXX 学号XXXXXXXX 专业网络工程 班级一班 指导教师XXX 编写日期2011/6/6 目 录 查询函数.............................................................................................................................

1、序言 随着学校的规模不断过大,学生数量急剧增加,有关学生的各种信息量也成倍增加。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范化管理、科学性统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。 2、需求分析 本系统主要需要解决的任务是实现学生信息关系的系统化、规范化和自动化,其主要目的是计算学生各种信息进行日常管理,如查询、修改、增加删除学生信息等。在实现程序功能的同时应该做到界面简单易懂,容易操作,方便使用的要求。并且程序需要有一定的纠错能力。 .具体目标 本系统主要应用于学生学籍管理、信息查询等部分,具有不同的操作功能。具体功能如下: 2.1.1 有关学生信息的录入,学生信息包括输入学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等(学生信息用文件保存)。 2.1.2. 学生信息的浏览功能。 2.1. 3.学生信息的查询功能,其中实现按学号和姓名二种方式查询。 2.1.4.学生信息的修改功能,包括增加、删除等。 3、总体设计 .算法分析 首先,考虑信息的录入,一个学生包括这么多的属性,应该考虑定义一个结

c语言练习题带详解答案

一、编程题 1.输入2个整数,求两数的平方和并输出。 #include int main(void) { intt a ,b,s; printf("please input a,b:\n"); scanf("%d%d”,&a,&b); s=a*a+b*b; printf("the result is %d\n",s); return 0; } 2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。 #include #define PI 3.14 int main(void)

{ double r ,area , girth; printf("please input r:\n"); scanf("%lf",&r); if (r>=0) { area =PI*r*r; girth =2*PI*r ; printf("the area is %.2f\n", area); printf("the girth is %.2f\n", girth);} else printf("Input error!\n"); return 0; } 3、已知函数y=f(x),编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0)

2x-1 (x>0) #include void main() { int x,y; scanf(“%d”,&x); if(x<0) y=2*x+1; else if(x>0) y=2*x-1; else y=0; printf(“%d”,y); } 4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 #include void main(){ int data;

学生信息管理系统c语言

学生信息管理系统 1 课程设计目的与要求 1.1课程设计目的 本课程设计是在学习C语言基本理论之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过课程设计在下述各方面得到锻炼: 1.能根据实际问题的具体情况,结合C语言的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。 2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。 1.2课程设计要求 通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用。具体如下: (1)数据组织方面尽量使用到:数组、链表、结构体、文件; (2)程序结构方面做到函数调用,尽量采用指针运算; (3)代码编写规范,形成良好的编程习惯; (4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。 (5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面: ●程序的总体设计和算法分析。 ●程序流程图、函数说明

●源程序代码清单 ●测试数据和测试过程记录 ●遇到的问题及解决方法分析 ●课程设计小结 1.3课程设计的评价 通过此次课程设计,我的知识面得到了扩展,发现课本上的东西是远远不够的,需要上网找资料寻找补充,而且小组合作的形式可以互相交流知识,弥补自己的不足。通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。提高程序开发能力。 1

学生学籍信息管理系统C

一、学生学籍信息管理系统设计 1、需求分析 学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计 整个系统可以设计为数据录入模块、数据修改模块、数据查询模块、数据删除模块和数据排序模块。 成绩包括数学、英语、程序设计基础三门课成绩 基本信息存放在一个文件,成绩信息存放在另一个文件。 (1)数据录入模块 学生基本信息文件可以在磁盘建立,采用写文件方式录入学生基本信息、各门课程的成绩单。综合成绩通过平时成绩和卷面成绩获得计算得到(平时30%,卷面70%)。(2)数据修改模块 采用读文件方式读入学生成绩基本信息,进行修改后,以写文件方式写回原文件中。修改时,首先询问要修改信息学生的姓名或学号,然后选择要修改的内容,并输入新的数据进行修改。

(3)查询模块 通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,然后把查找结果输出。若选择后者,则先查找学号对应的姓名,再查找该学生的课程情况,并统计科目和实得总学分,输出结果。 (3)删除模块 通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在两个文件中查找该生信息,删除之。 (4)排序模块 通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果,排序标准包括总分、某课成绩、某课卷面成绩等。 (5)追加模块 追加学生信息 #include #include #include #include #include

C语言之学生管理系统

流程图: 运行结果:

程序源码: #include #include #include #include #include #define LEN sizeof(struct student)//求字节数运算符

struct student { char name[20]; long intnum; char sex[4]; int age; char address[30]; float score; struct student *next;//链表 };//定义一个结构题 int TOTAL_NUM = 0;//学生总数 struct student *head = NULL; void mainmenu ();//主界面 void record (); //记录数据 void insert(struct student *stu); //插入数据 void display(struct student *stu); //显示一个学生的信息void displayAll (); //显示所有学生的信息 void query(); //查询学生信息 void query_by_num(); //按学号查询学生信息 void query_by_name(); void readData (); //读取文件里学生的信息

void writeData (); //向文件写入学生信息 void freeAll (); //清空链表内容 void del (); //删除学生信息 void change (); //更改学生信息 void sort();//排序 void devise (struct student *p); //选择更改内容 int main (void) { mainmenu (); return 0; } //系统主菜单 void mainmenu () { int choice; choice = -1; readData (); printf ("\t\t\t----------------------------------------------------\n"); printf ("\t\t\t| 欢迎使用通信工程专业学生信息管理系统|\n"); printf ("\t\t\t----------------------------------------------------\n"); printf ("\t\t\t本程序需要在当前目录下建立student.txt才可正常运行\n"); do

相关主题
文本预览
相关文档 最新文档