当前位置: 代码迷 >> C语言 >> 编写一个学生管理系统
  详细解决方案

编写一个学生管理系统

热度:343   发布时间:2006-01-18 13:32:00.0
编写一个学生管理系统

设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,可以用数组来设计这个程序,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。

A、 设计内容

1、每一条记录包括一个学生的学号、姓名、性别、各门课成绩(上学期的科目)、平均成绩。

2、输入功能:可以一次完成若干条记录的输入。

3、显示功能:完成全部学生记录的显示。

4、查找功能:完成按姓名或学号查找学生记录,并显示。

5、排序功能:按学生平均成绩进行排序。

6、插入功能:按平均成绩高低插入一条学生记录。

7、将学生记录存在文件student.dat中。

8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

B、 设计要求

一、已知有存储本班学生记录(包括学号、姓名、科目成绩、性别、)的文件student.dat,所有学生以学号从小到大排序(该文件自行建立)。要求编程序实现查询、排序、插入、删除诸功能。具体要求如下:

A.要求显示如下界面

****************************************

1--------------查询

2--------------排序

3--------------插入

4--------------删除

****************************************

通过选择1-4来确定要做哪一个操作。

B.若选1,则出现如下界面

****************************************

1.1----------按学号查询

1.2----------按姓名查询

1.3----------按成绩查询

****************************************

通过选择1.1-1.3来确定要做哪一个操作,其中:按姓名查询用顺序法实现;按成绩查询实现查询成绩小于m分的学生;找到该生将学生记录输出到屏幕,若查无此人,输出相关信息。

C.若选2,则按成绩从大到小排序,姓名,学号顺序也随之调整。

D.若选3,将一个新学生记录按学号顺序插入,并把结果保存到文件student.dat中。

E.若选4,删除指定学生的记录,并把结果保存到文件student.dat中。

G.不同的模块都要有出错处理,并能给出出错提示。如输入数据错误,文件操作错误等等

F.以上各个功能均编写成子函数,由主函数调用实现。

G、 利用结构体数组实现学生成绩的数据结构设计;

搜索更多相关的解决方案: 学生  系统  left  align  编写  

----------------解决方案--------------------------------------------------------

你的问题在什么地方,该不会自己懒的做,让论坛的朋友做吧???
我手上有个电话本管理系统,希望对你有借鉴作用,学C语言不能懒#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct telephone
{
char client_name[20];
char client_address[30];
char client_telephone[15];
}message;

void input(); //添加新用户函数
void amend(); //修改用户信息函数
void delete_client(); //删除用户信息函数
void demand_client(); //用户信息查询函数
void collect_telephone(); //用户信息汇总函数
void save_client(); //保存函数
void demand_name(); //按用户名查询
void demand_telephone(); //按电话号码查询
void paixu(); //排序函数

void main()
{
int choice=0;
while(choice!=6)
{
system("cls");
printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("\n -1- 添加新用户信息\n");
printf("\n -2- 修改用户信息\n");
printf("\n -3- 删除用户信息\n");
printf("\n -4- 用户信息查询\n");
printf("\n -5- 用户信息汇总\n");
printf("\n -6- 退出\n");
printf("\n================================\n");
printf("\n请选择:");
scanf(" %d",&choice);
getchar();

if(choice>7||choice<1)
{
printf("请选择1-6之间的数\n按回车继续");
getch();
continue;
}

switch(choice)
{
case 1:
input();
break;
case 2:
amend();
break;
case 3:
delete_client();
break;
case 4:
demand_client();
break;
case 5:
collect_telephone();
break;
case 6:
break;
default:
break;
}
}
system("cls");
printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("欢迎下次继续使用本系统!\n");
}

void input()//添加新用户函数
{
char choice = 'y';

while(choice == 'Y' || choice == 'y')
{
system("cls");

printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("请输入用户姓名:");
gets(message.client_name);
printf("请输入用户电话:");
gets(message.client_telephone);
printf("请输入用户地址:");
gets(message.client_address);

printf("\n是否保存[y/n]:");
scanf(" %c",&choice);
if(choice=='y'||choice=='Y')
{
save_client();
}
printf("\n是否继续添加[y/n]:");
scanf(" %c", &choice);
getchar();
}
printf("按任意键返回……\n");
getch();
}

void amend()//修改用户信息函数
{
FILE *fp;
char name[20];
char choice = 'y';
char found='y';

while(choice=='y'||choice=='Y')
{
fp=fopen("message.txt","r+w");//打开文件进行读写操作
if(fp!=NULL)
{
system("cls");
printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("请输入用户姓名:");
scanf("%s",name);

while((fread(&message,sizeof(struct telephone),1,fp))==1)//将文件数据进行一一读取,如果找到则退出
{
if(strcmp(name,message.client_name)==0)
{
found='y';
break;
}
}
if(found=='y')//如果找到,输出信息,并输入新信息和保存
{
printf("\n原用户信息\n");
printf("用户姓名:%s\n",message.client_name);
printf("用户电话:%s\n",message.client_telephone);
printf("用户地址:%s\n",message.client_address);
printf("\n用户新信息");
printf("\n请输入用户姓名:");
scanf("%s",message.client_name);
printf("\n请输入用户电话:");
scanf("%s",message.client_telephone);
printf("\n请输入用户地址:");
scanf("%s",message.client_address);

printf("\n\n要保存吗?[y/n]:");
scanf(" %c",&choice);

if(choice=='y'||choice=='Y')
{
fseek(fp,-sizeof(struct telephone),1);
fwrite(&message,sizeof(struct telephone),1,fp);
}
}
else
{
printf("没有此用户信息!\n");
}
}
else
{
printf("\n打开文件错误!\n");
}
fclose(fp);
printf("要继续修改吗?[y/n]");
scanf(" %c",&choice);
}
printf("按任意键返回……");
getchar();

}

void delete_client()//删除用户信息函数
{
FILE *fp;
int i=0,j;
struct telephone diff[500],same;
char name[20],found='n',choice='y';

while(choice=='y'||choice=='Y')
{
fp=fopen("message.txt","rb");//打开文件进行读操作
if(fp!=NULL)
{
system("cls");
printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("请输入用户姓名:");
scanf("%s",name);

while((fread(&message,sizeof(struct telephone),1,fp))==1)//将文件数据进行一一读取,如果找到则退出
{
if(strcmp(name,message.client_name)==0)
{
same=message;
found='y';
}
else
{
diff[i++]=message;
}
}
}
else
{
printf("\n打开文件错误!\n");
}

fclose(fp);

if(found=='y')//如果找到,输出信息,并重新输入新信息和保存
{
printf("\n要删除的用户信息\n");
printf("用户姓名:%s\n",same.client_name);
printf("用户电话:%s\n",same.client_telephone);
printf("用户地址:%s\n",same.client_address);

printf("\n要删除吗?[y/n]:");
scanf(" %c",&choice);

if(choice=='y'||choice=='Y')
{
fp=fopen("message.txt","wb");//打开文件进行写操作
if(fp!=0)
{
rewind(fp);
for(j=0;j<i;j++)
{
fwrite(&diff[j],sizeof(struct telephone),1,fp);
}
}
else
{
printf("\n打开文件错误!\n");
}
}
}
else
{
printf("没有此用户的信息!");
}
fclose(fp);
printf("要继续删除吗?[y/n]");
scanf(" %c",&choice);
}
printf("按任意键返回……");
getchar();
}

void demand_client()//用户信息查询函数
{
int choice=0;
while(choice!=3)
{
system("cls");
printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("\n -1- 按用户姓名查询\n");
printf("\n -2- 按电话号码查询\n");
printf("\n -3- 返回\n");
printf("\n================================\n");
printf("\n请选择:");
scanf(" %d",&choice);
getchar();

if(choice>3||choice<1)
{
printf("请选择1-2之间的数\n按回车继续");
getchar();
continue;
}

switch(choice)
{
case 1:
demand_name();
break;
case 2:
demand_telephone();
break;
default:
break;
}
}

// getchar();
}

void collect_telephone()//用户信息汇总函数
{
FILE *fp;
int i;

paixu();
fp=fopen("message.txt","rb");//打开文件进行读操作
if (fp!=NULL)
{
system("cls");

printf("\n 电话号码管理系统 \n");
printf("\n================================\n");

for(i=0;(fread(&message,sizeof(struct telephone),1,fp))==1;i++)
{
printf("记录%d:\n",i+1);
printf("\t姓名:\t%s\n",message.client_name);
printf("\t电话:\t%s\n",message.client_telephone);
printf("\t地址:\t%s\n",message.client_address);
printf("================================\n");
}
printf("\n\t\t\t\t\t\t\t共%d条记录\n",i);
}
else
{
printf("打开文件时出现错误\n");
}
fclose(fp);
printf("按任意键返回主菜单……");
getchar();


}

void paixu()//排序
{
FILE *fp;
int i,j,k;
struct telephone temp[500],change;

fp=fopen("message.txt","rb");//打开文件进行读操作
if (fp!=NULL)
{
system("cls");

for(i=0;(fread(&message,sizeof(struct telephone),1,fp))==1;i++)
{
temp[i]=message;
}

for(j=1;j<=i-1;j++)
{
for(k=0;k<i-j;k++)
{
if(strcmp(temp[k].client_name,temp[k+1].client_name)>0)
{
change=temp[k];
temp[k]=temp[k+1];
temp[k+1]=change;
}
}
}

}
else
{
return;
}
fclose(fp);

fp=fopen("message.txt","wb");//写方式打开文件进行操作
for(j=0;j<i;j++)
{
fwrite(&temp[j],sizeof(struct telephone),1,fp);//进行写操作
}
fclose(fp);
}

void save_client()//保存函数
{
FILE *fp;

fp=fopen("message.txt","a+b");//追加方式打开文件进行操作
if (fp!=NULL)
{
fwrite(&message,sizeof(struct telephone),1,fp);//进行写操作
}
else
{
return;
}
fclose(fp);
}
void demand_name() //按用户名查询
{
FILE *fp;
char name[20];
char choice = 'y';
int i=0;

while(choice=='y'||choice=='Y')
{
fp=fopen("message.txt","rb");//打开文件进行读写操作
if(fp!=NULL)
{
system("cls");
printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("请输入用户姓名:");
scanf("%s",name);

while((fread(&message,sizeof(struct telephone),1,fp))==1)//将文件数据进行一一读取,如果找到则退出
{
if(strcmp(name,message.client_name)==0)
{
i++;
printf("\n用户姓名:%s\n",message.client_name);
printf("用户电话:%s\n",message.client_telephone);
printf("用户地址:%s\n",message.client_address);
}

}
if(i==0)
{
printf("\n没有此用户信息!\n");
}
}
else
{
printf("\n打开文件错误!\n");
}
fclose(fp);
printf("\n要继续按本方式查询吗?[y/n]");
scanf(" %c",&choice);
}
printf("按任意键返回……");
getchar();
}
void demand_telephone() //按电话号码查询
{
FILE *fp;
char number[15];
char choice = 'y';
int i=0;

while(choice=='y'||choice=='Y')
{
fp=fopen("message.txt","rb");//打开文件进行读写操作
if(fp!=NULL)
{
system("cls");
printf("\n 电话号码管理系统 \n");
printf("\n================================\n");
printf("请输入电话号码:");
scanf("%s",number);

while((fread(&message,sizeof(struct telephone),1,fp))==1)//将文件数据进行一一读取,如果找到则退出
{
if(strcmp(number,message.client_telephone)==0)
{
i++;
printf("\n用户姓名:%s\n",message.client_name);
printf("用户电话:%s\n",message.client_telephone);
printf("用户地址:%s\n",message.client_address);
}

}
if(i==0)
{
printf("\n没有此用户信息!\n");
}
}
else
{
printf("\n打开文件错误!\n");
}
fclose(fp);
printf("\n要继续按本方式查询吗?[y/n]");
scanf(" %c",&choice);
}
printf("按任意键返回……");
getchar();
}


----------------解决方案--------------------------------------------------------
顶2楼的了   
就怕自己没耐心啊 .....

----------------解决方案--------------------------------------------------------
  相关解决方案