用C程序设计学生成绩管理系统时会遇见哪些问题

 我来答
strionws
2011-09-17 · TA获得超过1644个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:376万
展开全部
会遇到很多很多问题,其中,你这个问题就是一个大问题。
不过我还是说几个,不知道是不是你想了解的内容。
----人机交互部分----
c程序写学生管理系统,一般是没有窗口界面的。
一般输入数据只能用键盘,不能用鼠标。
----程序编写部分----
使用链表作为存储结构的程序,动态分配内存的时候容易写错
(struct A*)malloc(sizeof(struct A))注意前面的地址符,很容易忘写。
程序输入输出的时候,格式符号容易出错“%d”,“%s”,“%f”,“%x”等别搞混。
字符处理的时候,‘/t’,'/n','/0'等转义符容易用错。
数组下标越界。
文件存储读取模式错误“w”,“r”,“b”,“r+”,“w+”等文件打开方式要分清。
等于号和复制符号要分清,[==]才是等于号,[=]是赋值符号,经常有这么写的if(a=b)a++;
删除链表的时候,记得要free,然后在清空指针。
作为暂时变量的结构体,程序结束时也一定要free掉。
暂时就想到这么多。
【纷享销客】—连接型CRM
2021-12-31 广告
好用的CRM客户信息管理系统就选纷享销客CRM,可以满足大中小不同规模企业的CRM需求,实现从线索获取、销售管理、商机管理到订单回款等销售全流程数字化管理,实时追踪,智能分析销售行为,优化销售流程,缩短销售周期,提升客户服务满意度,助力销售... 点击进入详情页
本回答由【纷享销客】—连接型CRM提供
宅在家里的2362
2011-09-16 · TA获得超过1717个赞
知道小有建树答主
回答量:701
采纳率:0%
帮助的人:392万
展开全部
程序需要关闭,这么牛啊,呵呵 不过我也不知道问题出在哪里,不过推荐一下自己的程序,你可以按照自己想要的改一下啊,学生成绩管理系统:
#i nclude<iostream.h>
#i nclude<stdlib.h>
struct student
{
int num;
char name[20];
int foxscore;
int cscore;
int englishscore;
struct student *next;
};

void menu()
{
cout<<" welecome to my student grade management system"<<endl;
cout<<" please follow everyone step in the menu"<<endl;
cout<<" 1.input information"<<endl;
cout<<" 2.total scores"<<endl;
cout<<" 3.sort"<<endl;
cout<<" 4.query"<<endl;
cout<<" ***************************************************"<<endl;
}

struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针
{
struct student *p1,*p2;
p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点
cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore; // 输入节点的值
p1-> next = NULL; // 将新节点的指针置为空
for(int i=1;i<=4;i++)
{
if (head==NULL) head=p1; //空表,接入表头
else p2->next=p1; // 非空表,接到表尾
p2 = p1;
p1=(struct student *)malloc(sizeof(struct student)); //申请下一个新节点
if(i<=3)
{
cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore;
}
//输入节点的值
}
return head; //返回链表的头指针
}

void count(struct student *head)
{
struct student *temp;
temp=head; //取得链表的头指针
for(int i=1;i<=4;i++)
{
int m;
m=temp->foxscore+temp->cscore+temp->englishscore;
cout<<m<<endl;//输出链表节点的值
temp=temp->next; //跟踪链表增长
}

}
void sort(struct student *head)
{
struct student *tp;
tp=head;
int a[4];//定义总分数组
int i,j,k;
a[1]=tp->foxscore+tp->cscore+tp->englishscore;
tp=tp->next;
a[2]=tp->foxscore+tp->cscore+tp->englishscore;
tp=tp->next;
a[3]=tp->foxscore+tp->cscore+tp->englishscore;
tp=tp->next;
a[4]=tp->foxscore+tp->cscore+tp->englishscore;
for(j=1;j<=3;j++)//冒泡法排序
for(k=1;k<=4-j;k++)
if(a[k]<a[k+1])
{
int t=a[k];a[k]=a[k+1];a[k+1]=t;
}
for(i=1;i<5;i++)
cout<<a[i]<<endl;

}
void query(struct student *head)
{
struct student *temper;
temper=head;
int number;
cin>>number;
for(int i=1;i<=4;i++)
{
if(number==temper->num)
{
cout<<" name is:"<<temper->name<<endl;
cout<<" fox score is:"<<temper->foxscore<<endl;
cout<<" c score is:"<<temper->cscore<<endl;
cout<<" English score is:"<<temper->englishscore<<endl;
cout<<" congratulation,syetem have found what you want to search"<<endl;
}
temper=temper->next;
}
}
void main()
{
menu();
cout<<" firstly,please input information:"<<endl;
struct student *head;
head=NULL; /* 建一个空表*/
head=creat(head); /* 创建单链表*/
cout<<" secondly,count the total score each student:"<<endl;
count(head);
cout<<" thirdly,sorting the total score:"<<endl;
sort(head);
cout<<" enter num that you can search each shtudent's information"<<endl;
query(head);
cout<<" thanks you for use my student grade management system"<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CharleyBao
2011-09-16 · 超过16用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:43.6万
展开全部
基本输入输出你都应该会吧,主要就是存文件还有读取文件,你要想好每个学生成绩的结构体的组成成分,好好看看文件那块,应该没问题,挺简单的,我本科的时候用c++做过...
祝你学习进步!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zsvvlove
2011-09-16 · TA获得超过414个赞
知道答主
回答量:99
采纳率:0%
帮助的人:49.1万
展开全部
没有头,也没有尾的问题!让人如何回答您的问题!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式