学生成绩管理系统c
悬赏分:20 - 提问时间2009-6-23 17:06
题目:学生成绩管理系统
功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3门课程成绩。系统
要求实现以下功能:
1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等); 2、信息查询:输入学号,查询学生各门课程的成绩,并显示。 3、排序:按各门课程的成绩平均分进行排序,并显示。
4、信息删除与修改——输入学号,删除该学生的成绩信息。 分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。 2、建立一个文件,将每位学生的信息写入文件中并能显示于屏幕上。 3、完成上述信息查询(学生学号、姓名等)、排序、信息删除与修改功能。 要求:1、用C语言实现程序设计;
2、利用结构体数组实现学生信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
课程设计实验报告要求:
1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分 。
2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、
小结等。
#include \#include
char number[21]; char shuming[30]; int shuliang; int jiage;
char zhuanye[20]; char zuozhe[26]; char chubanshe[20]; char beizhu[100]; struct book *next; };
struct book *creat() /*创建链表*/ {
struct book *p,*head,*end;
head=end=p=(struct book *)malloc(sizeof(struct book));
printf(\输入教材编号为0结束输入,每项信息都必须输入内容。\\n\ do
{
printf(\教材编号:\ gets(p->number);
if(strcmp(p->number,\ end=p;
printf(\教材名称:\ gets(p->shuming); printf(\教材数量:\ scanf(\ printf(\教材价格:\ scanf(\ getchar();
printf(\教材专业:\ gets(p->zhuanye); printf(\教材作者:\ gets(p->zuozhe);
printf(\教材出版社:\ gets(p->chubanshe); printf(\备注:\ gets(p->beizhu);
p=(struct book *)malloc(sizeof(struct book)); end->next=p; }while(1); }
void save(struct book *head) /*保存链表*/ {FILE *fp; struct book *p;
char filename[30];
int ch;
printf(\请输入“文件名.后缀”:\ scanf(\
if((fp=fopen(filename,\ {
printf(\该文件已存在,是否覆盖?1,是 2,否\ scanf(\ if(ch!=1) return; }
if((fp=fopen(filename,\文件保存失败\ p=head; do{
fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ fprintf(fp,\ p=p->next; }while(p!=NULL); fprintf(fp,\ over\ printf(\成功保存\ getchar(); getchar(); fclose(fp); }
void print(struct book *head) /*输出链表*/ {
struct book *p; p=head;
if(p==NULL) { printf(\未打开任何文件,无法显示\ do{
printf(\教材编号:%s\ printf(\教材名称:%s\ printf(\数量:%d\ printf(\价格:%d\ printf(\专业:%s\
printf(\作者:%s\ printf(\出版社:%s\ printf(\备注:%s\ p=p->next; }while(p!=NULL); }
struct book *openfile() /*打开文件*/ {struct book *p,*f,*head; FILE *fp;
char filename[20];
printf(\请输入路径,文件名,和后缀):\
scanf(\
if((fp=fopen(filename,\文件找不到,请检查是否有该文件和路径是否正确\
head=f=p=(struct book *)malloc(sizeof(struct book));
fscanf(fp,\zhuanye,p->zuozhe,p->chubanshe,p->beizhu); while(!feof(fp))
{ p=(struct book *)malloc(sizeof(struct book)); f->next=p;
fscanf(fp,\zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
if(strcmp(p->number,\ printf(\文件打开成功,可以显示此信息\ return head; } f=p; }
return head; }
void namesort(struct book *head) /*按教材名称排序*/ { struct book *p,*t,*f,*h; char ch[20]; int i;
h=t=f=p=head;
if(head==NULL) {printf(\未打开任何文件\ f=p->next;
for(p=head;p->next!=NULL;p=p->next) {
for(t=head,f=t->next;t->next!=NULL;f=f->next,t=t->next) {
if(strcmp(t->shuming,f->shuming)>0) {
strcpy(ch,t->number ); strcpy(t->number,f->number); strcpy(f->number,ch);
strcpy(ch,t->shuming ); strcpy(t->shuming,f->shuming); strcpy(f->shuming,ch); i=t->shuliang ;
t->shuliang=f->shuliang; f->shuliang=i;
i=t->jiage ; t->jiage=f->jiage; f->jiage=i;
strcpy(ch,t->zhuanye); strcpy(t->zhuanye,f->zhuanye); strcpy(f->zhuanye,ch);
strcpy(ch,t->zuozhe); strcpy(t->zuozhe,f->zuozhe); strcpy(f->zuozhe,ch);
strcpy(ch,t->chubanshe);
strcpy(t->chubanshe,f->chubanshe); strcpy(f->chubanshe,ch);
strcpy(ch,t->beizhu); strcpy(t->beizhu,f->beizhu); strcpy(f->beizhu,ch);