学生信息管理系统C语言编程Word文档格式.doc

上传人:wj 文档编号:6976838 上传时间:2023-05-07 格式:DOC 页数:10 大小:45.50KB
下载 相关 举报
学生信息管理系统C语言编程Word文档格式.doc_第1页
第1页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第2页
第2页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第3页
第3页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第4页
第4页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第5页
第5页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第6页
第6页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第7页
第7页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第8页
第8页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第9页
第9页 / 共10页
学生信息管理系统C语言编程Word文档格式.doc_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生信息管理系统C语言编程Word文档格式.doc

《学生信息管理系统C语言编程Word文档格式.doc》由会员分享,可在线阅读,更多相关《学生信息管理系统C语言编程Word文档格式.doc(10页珍藏版)》请在冰点文库上搜索。

学生信息管理系统C语言编程Word文档格式.doc

xxxxx

课程编号:

xxx课程名称:

xxxxx综合成绩:

xxxx实得学分:

xx

……………………

共修:

xx科,实得总学分为:

xxx

(3)删除功能:

提供待删除学生的学号,则在student.txt和score.dat中删除所有与该学生有关的信息。

(4)排序功能:

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

【程序设计的具体说明】

(1)将与两个文件对应的信息分别定义两种结构体类型来表示,也可以用类来定义;

(2)对score.dat文件的写入,从键盘上输入的是前七项,后两项数据项根据计算方法算出后,得到完整的结构体信息,作为一个整体写入(可调用write函数)。

(3)删除功能中可以将删除相关信息后得到的文件生成新文件存储,也可以在原文件的基础上作删除

(4)可以用面向过程方法或是面向对象的方法实现。

(5)主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多次选择执行不同的功能。

#include"

stdio.h"

stdlib.h"

string.h"

#defineN3

typedefstructz1

{

charno[11];

charname[15];

intscore[N];

floatsum;

floataverage;

intorder;

structz1*next;

}STUDENT;

STUDENT*init();

STUDENT*create();

STUDENT*del(STUDENT*h);

voidprint(STUDENT*h);

voidsearch1(STUDENT*h);

voidsearch2(STUDENT*h);

STUDENT*insert(STUDENT*h);

voidsort(STUDENT*h);

voidsave(STUDENT*h);

voidtongji(STUDENT*h);

intmenu_select();

STUDENT*load();

voidinputs(char*prompt,char*s,intcount);

main()

inti;

STUDENT*head;

head=init();

for(;

;

{

switch(menu_select())

{

case0:

head=init();

break;

case1:

head=create();

case2:

head=insert(head);

case3:

save(head);

case4:

print(head);

case5:

search1(head);

case6:

head=del(head);

case7:

sort(head);

case8:

tongji(head);

case9:

search2(head);

case10:

exit(0);

}

}

}

intmenu_select()

char*menu[]={"

************菜单************"

"

0.初始化链表"

1.输入学生成绩"

2.插入学生成绩"

3.保存学生记录"

4.显示学生记录"

5.按学号查找学生信息"

6.删除指定学号的学生信息"

7.按某一门课对学生成绩排序"

8.统计某门课程的学生成绩"

9.按姓名查找学生信息"

10.退出系统"

};

chars[3];

intc,i;

for(i=0;

i<

=11;

i++)

printf("

%s\n"

menu[i]);

do

printf("

\n请选择0~10中的某一个选项\n"

);

scanf("

%s"

s);

c=atoi(s);

}while(c<

0||c>

10);

returnc;

STUDENT*init()

returnNULL;

STUDENT*create()

ints;

STUDENT*h=NULL,*info;

info=(STUDENT*)malloc(sizeof(STUDENT));

if(!

info)

printf("

\n内存不足"

returnNULL;

inputs("

输入学号:

"

info->

no,11);

if(info->

no[0]=='

@'

)break;

输入姓名:

name,15);

开始输入%d门课的成绩\n"

N);

s=0;

for(i=0;

N;

do{

printf("

第%d门分数:

i+1);

scanf("

%d"

&

info->

score[i]);

if(info->

score[i]>

100||info->

score[i]<

0)

输入成绩错误,请重新输入:

\n"

}while(info->

0);

s=s+info->

score[i];

info->

sum=s;

average=(float)s/N;

order=0;

next=h;

h=info;

returnh;

voidinputs(char*prompt,char*s,intcount)

charp[255];

printf(prompt);

p);

if(strlen(p)>

count)

\n太长了!

}while(strlen(p)>

count);

strcpy(s,p);

voidprint(STUDENT*h)

inti=0;

STUDENT*p;

p=h;

\n\n\n***********************学生***********************\n"

|序号|学号|姓名|语文|英语|数学|总分|平均分|名次|\n"

|---|-------|--------|----|----|----|------|------|---|\n"

while(p!

=NULL)

i++;

|%3d|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n"

i,p->

no,p->

name,p->

score[0],p->

score[1],p->

score[2],p->

sum,p->

average,p->

order);

p=p->

next;

***********************end***********************\n"

STUDENT*del(STUDENT*h)

STUDENT*p,*q;

chars[11];

请输入要删除的学生的学号\n"

scanf("

q=p=h;

while(strcmp(p->

no,s)&

&

p!

q=p;

if(p==NULL)

\n链表中没有学号为%s的学生\n"

else

\n\n\n***********************找到了***********************\n"

|学号|姓名|语文|英语|数学|总分|平均分|名次|\n"

|----------|----------|----|----|----|------|------|---|\n"

|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n"

p->

请按任意键删除\n"

getchar();

if(p==h)

h=p->

elseq->

next=p->

free(p);

\n已经删除学号为%s的学生\n"

不要忘了保存数据\n"

voidsearch1(STUDENT*h)

请输入你要查找的同学的学号\n"

p=p->

'

n没有学号为%s的学生\n"

|学号|姓名|语文|英语|数学|总分|平均分|名次|\n"

|----------|-----------|----|----|----|------|------|---|\n"

voidsearch2(STUDENT*h)

请输入你要查找的同学的姓名\n"

name,s)&

\n没有姓名为%s的学生\n"

|学号|姓名|语文|英语|数学|总分|平均分|名次|\n"

STUDENT*insert(STUDENT*h)

STUDENT*p,*q,*info;

ints1,i;

请输入插入点的学生学号\n"

\n请输入新的学生信息\n"

info=(STUDENT*)malloc(sizeof(STUDENT));

if(!

\n内存不足!

returnNULL;

inputs("

请输入%d门课的分数\n"

s1=0;

do{

分数%d"

scanf("

if(info->

输入数据有误,请重新输入\n"

}while(info->

s1=s1+info->

info->

sum=s1;

average=(float)s1/N;

next=NULL;

q=h;

{q=p;

p=p->

h=info;

next=info;

next=p;

q->

\n已经插入了%s这个学生\n"

name);

----不要忘了存盘啊--\n"

return(h);

voidsave(STUDENT*h)

FILE*fp;

charoutfile[10];

请输入保存文件的文件名,例如c:

\\f1\\te.txt:

outfile);

if((fp=fopen(outfile,"

wb"

))==NULL)

不能打开文件\n"

exit

(1);

\n正在保存......\n"

fwrite(p,sizeof(STUDENT),1,fp);

fclose(fp);

------保存成功!

!

------\n"

voidsort(STUDENT*h)

inti=0,j;

STUDENT*p,*q,*t,*h1;

请输入要按哪门课程的编号来排序:

(0.语文1.数学2.英语)\n"

j);

h1=h->

h->

while(h1!

t=h1;

h1=h1->

p=h;

q=h;

while(t->

score[j]<

p->

score[j]&

q=p;

p=p->

if(p==q)

t->

h=t;

else

q->

next=t;

p->

order=i;

print(h);

printf("

排序成功!

voidtongji(STUDENT*h)

inta,b,i;

请输入课程编号\n"

i);

请输入分数段:

%d,%d"

a,&

b);

printf("

if(p->

=a&

=b)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2