2 u013004671 u013004671 于 2013.12.09 10:48 提问

关于实训的C语言程序设计

1、实现学生成绩管理系统:(也可以选择类似的学籍管理系统)
系统要求如下
a、实现学生成绩管理系统b、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息.
c、新生插入 :按照该生的学号,将此生的信息保存进文件。

d、可以把各科的平均成绩,最高和最低分分别全部输出。
e、输出全部学生信息和全部学生成绩。
f、退出系统。

3个回答

mevip
mevip   2013.12.09 12:19

对学生来说是一个很好的练习题目,因为对需求比较了解!
可以按照下面的步骤进行:
1、分析出需要记录哪些信息,设计出数据库结构(或数据文件格式);
2、实现增加学生功能;
3、实现课程录入和成绩录入功能(貌似题目里没要求,如果不要求则跳过);
4、实现查询功能;
5、实现统计功能。

qiaolin19890323
qiaolin19890323   2013.12.10 15:47

如果是C的实训题的话,肯定是要考你链表和文件操作的。下面给你提供一个类似的实训项目核心功能源代码,希望帮助到你。我提供的的这个源代码实现的是银行账户的管理,你只需要按理论换成学生就ok了。洗完够可以帮助到你。
#include "account.h"
//create head
NODE create_head()
{
NODE *phead=(NODE *)malloc(sizeof(NODE));
if(!phead)
{
printf("malloc error!");
exit(1);
}
phead->next=NULL;
return phead;
}
//open an account
int *open(NODE *phead,char *a,char *b,double c)
{
NODE *newnode=(NODE *)malloc(sizeof(NODE));
strcpy(newnode->data.cid,a);
strcpy(newnode->data.name,b);
newnode->data.balance=c;
newnode->next=phead->next;
phead->next=newnode;
}
//selecti all
void chaxun(NODE *p)
{
while(p!=NULL)
{
printf("cid:%s\nname:%s\nbalance:%lf\n",p->data.cid,p->data.name,p->data.balance);
p=p->next;
printf("-----------------\n");
}
}
//select by cid
void chaxun_bycid(NODE *p,char *id)
{
int flge=0;
while(p!=NULL)
{
if(!strcmp(id,p->data.cid))
{
printf("cid:%s\nname:%s\nbalance:%lf\n",p->data.cid,p->data.name,p->data.balance);
flge=1;
}
p=p->next;
}
if(flge==0)
{
printf("not account by %s\n",id);
}
}
//deposit by cid
void deposit(NODE *p,char *id,double count)
{
int flge=0;
while(p!=NULL)
{
if(!strcmp(id,p->data.cid))
{
(p->data.balance)+=count;
flge=1;
}
p=p->next;
}
if(flge)
{
printf("deposit succeed!\n");
}
else
{
printf("deposit fail!\n");
}
}
//withdrawl deposit by cid
void withdrawl_deposit(NODE *p,char *id,double count)
{
int flge=0;
while(p!=NULL)
{
if(!strcmp(id,p->data.cid))
{
(p->data.balance)-=count;
flge=1;
}
p=p->next;
}
if(flge)
{
printf("withdrawl deposit succeed!\n");
}
else
{
printf("withdrawl deposit fail!\n");
}
}
//transfer accounts by id1 to id2;
void transfer_accounts(NODE *p,char *id1,char *id2,double count)
{
withdrawl_deposit(p,id1,count);
deposit(p,id2,count);
}
void winmain(NODE *head)
{
//NODE *const head=create_head();
int nn;
printf("
***************************************\n");
printf("* account \n");
printf("
1.open account \n");
printf("
2.query all \n");
printf("
3.query by cid \n");
printf("
4.deposit \n");
printf("
5.withdrawl deposit \n");
printf("
6.transfer accounts \n");
printf("
7.quit \n");
printf("
***************************************\n");
printf("please input num:(1-7)");
scanf("%d",&nn);
if(nn>7||nn<1)
{
printf("input error!\n");
winmain(head);
}
else
{
switch(nn)
{
case 1:
open(head,"888881","join",10.00);
open(head,"888882","lili",10.00);
open(head,"888883","yaoming",10.00);
winmain(head);break;
case 2:
chaxun(head);
winmain(head);break;
case 3:
chaxun_bycid(head,"888881");
winmain(head);break;
case 4:
deposit(head,"888880",22.9);
deposit(head,"888883",27.9);
winmain(head);break;
case 5:
withdrawl_deposit(head,"888883",10);
winmain(head);break;
case 6:
transfer_accounts(head,"888883","888881",5);
printf("withdrawl deposit succeed!\n");
winmain(head);break;
case 7:free(head);break;
}
}
}

u013089194
u013089194   2013.12.09 11:10

这个是高校学生成绩查询的,vs2010和SQl结合吧!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!