| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1058 人关注过本帖
标题:[求助]请大家看看我第一次做的简单系统,谢谢了!
只看楼主 加入收藏
xianen20
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-12-30
收藏
 问题点数:0 回复次数:12 
[求助]请大家看看我第一次做的简单系统,谢谢了!

谢谢各位进来.本人在c++还是很菜.因为老师要求我们做系统程序的.我只好弄了一个这样的(但绝不是乱弄的)想请各位帮帮忙,帮我改一下下面的程序的.小弟真的感激不尽了(长了些,可是应该还比较容易看明白的).真的谢谢了!

题目:
主要功能说明:
1、用口令(密码)形式检验管理员身份(可输入三次),合法者可进入,否则程序结束
2、有关功能参考:
a.建立学生成绩表
输入姓名,学号,班级,课程编号,成绩
b.添加学生记录
在学生成绩表中添加新纪录
c.删除学生记录
在学生成绩表中删除有三门课程不及格的学生
逐条符合条件的学生姓名,成绩,确认后删除
d.修改学生信息
根据学号,在学生成绩表中找出记录后进行修改
f.按姓名和班级查找
输入姓名或班级,显示相应信息
g.信息统计
按班级,课程和个人进行成绩统计
h.退出信息管理系统,返回操作系统
[基本要求]
1、简单的系统与功能分析
2、建立数据结构表(用类结构)
(1)字段名(不少于10个)(2)可采用数组或真实的二维链表结构
3、要建立一个测试的数据表,至少要有10个测试数据
4、使用数组或链表实现实数据的:录入、查询、修改、增加、删除、统计、输出
其它要求]
1、只能使用C++语言,源程序要有适当的注释,使程序容易阅读 2、至少采用文本菜单界面
 
我写的程序在下面.

[此贴子已经被作者于2006-1-11 21:23:16编辑过]

搜索更多相关主题的帖子: 系统 
2006-01-11 03:20
xianen20
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-12-30
收藏
得分:0 

#include "stdafx.h"
#include "iostream.h"
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
const char null='\0';
static char *strsave(char *s) {
char *p;
p=new char[strlen(s)+1];
strcpy(p,s);
return p;
}
class student{ //学生类
public:
char *name;
char *stu_no;
char *sex;
char *banji;

student()
{
name=null;
stu_no=null;
sex=null;
banji=null;
}
student( char *name1,char *stu_no1,char *sex1,char *banji1)
{ name=strsave(name1);
stu_no=strsave(stu_no1);
sex=strsave(sex1);
banji=strsave(banji1);
}
~student()
{ delete []name;
delete []stu_no;
delete []sex;
delete []banji;
}
void print1()
{ cout<<"\n"<<"name:"<<name<<endl;
cout<<"stu_no:"<<stu_no<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"banji:"<<banji<<endl;
}
};
class kc{ //课程类
public:
char *yw_no;
char *yy_no;
char *sx_no;
char *zz_no;

kc(char *yw_no1, char *yy_no1,char *sx_no1,char *zz_no1)
{yw_no=strsave(yw_no1);
yy_no=strsave(yy_no1);
sx_no=strsave(sx_no1);
zz_no=strsave(zz_no1);}
~kc()
{ delete []yw_no;
delete []yy_no;
delete []sx_no;
delete []zz_no;
}
void print2()
{ cout<<"\n"<<"yw_no:"<<yw_no<<endl;
cout<<"yy_no:"<<yy_no<<endl;
cout<<"sx_no:"<<sx_no<<endl;
cout<<"zz_no:"<<sx_no<<endl;}
};
class score: public student, public kc{ // 学生成绩类
public:
int yw_cj;
int yy_cj;
int sx_cj;
int zz_cj;


score( char *name1,char *stu_no1,char *sex1,char *banji1,char*yw_no1,char *yy_no1,char *sx_no1,
char *zz_no1,int yw_cj1,int yy_cj1,int sx_cj1,int zz_cj1):student(name1, stu_no1,sex1,banji1),
kc(yw_no1, yy_no1, sx_no1, zz_no1)
{ yw_cj=yw_cj1;
yy_cj=yy_cj1;
sx_cj=sx_cj1;
zz_cj=zz_cj1;}

void print();
};

void score::print()
{ student::print1();
kc::print2();
cout<<"yw_cj:"<<yw_cj<<endl;
cout<<"yy_cj:"<<yy_cj<<endl;
cout<<"sx_cj:"<<sx_cj<<endl;
cout<<"zz_cj:"<<zz_cj<<endl;
}

int main()
{ char sel;char u[6],p[8];
char uu[6]={"admin"},pp[8]={"123456"};
int n=0;
cout<<"请输入用户名和密码:"<<endl;
cout<<"--------------------"<<endl;
cout<<"user:";
cin>>u;
cout<<"password:";
cin>>p;if(strcmp(uu,u)==0&&strcmp(pp,p)==0)
cout<<"******欢迎进入学生管理系统******"<<endl;
while(strcmp(uu,u)!=0||strcmp(pp,p)!=0)
{
cout<<"输入错误请重新输入"<<endl;
cout<<"请输入用户名和密码:"<<endl;
cout<<"user:";
cin>>u;
cout<<"password:";
cin>>p;
n++;

if(n==2)
{cout<<"对不起您的输入次数已经达到最大!"<<endl;exit(0);}}
cout<<"\n";

score a[10]={score("张三","0321335001","男","信管","001","002","003","004",75,85,65,70),
score("李四","0321335002","男","信管","001","002","003","004",56,85,69,80),
score("李明","0321335003","男","信管","001","002","003","004",68,75,86,83),
score("刘芳","0321335004","女","信管","001","002","003","004",84,65,59,78),
score("王乐","0321335005","女","信管","001","002","003","004",87,65,73,82),
score("高天","0321335010","男","电商","001","002","003","004",54,55,68,53),
score("李山","0321335012","男","电商","001","002","003","004",59,63,85,59),
score("王强","0321335013","男","电商","001","002","003","004",56,55,86,53),
score("刘欣","0321335014","女","电商","001","002","003","004",84,65,59,78),
score("乐乐","0321335015","女","电商","001","002","003","004",87,65,73,82),};

cout<<"*************** 学生管理系统 *************************"<<endl;
cout<<"1: 建立学生成绩表"<<endl;
cout<<"2: 添加一个学生信息"<<endl;
cout<<"3: 删除一个学生信息"<<endl;
cout<<"4: 修改学生信息"<<endl;
cout<<"5: 查找信息"<<endl;
cout<<"6: 信息统计"<<endl;
cout<<"7: 退出系统"<<endl;
cout<<"*******************************************************"<<endl;
cout<<"请输入操作:";
cin>>sel;
switch(sel)
{
case '1':{ cout<<"**********学生成绩表记录如下***********"<<endl;
for(int i=0;i<10;i++)
a[i].print();}; break;

case '2':{cout<<"********请输入要添加学生记录*********"<<endl;
cin>>a[10].name; cin>>a[10].stu_no; cin>>a[10].sex; cin>>a[10].banji;
cin>>a[10].yw_no; cin>>a[10].yy_no; cin>>a[10].sx_no; cin>>a[10].zz_no;
cin>>a[10].yw_cj; cin>>a[10].yy_cj; cin>>a[10].sx_cj; cin>>a[10].zz_cj;};break;

case '3':{cout<<"************进行删除操作************"<<endl;
int n=0;char *p1="王强";
for(int c=0;c<10;c++)
if((a[c].sx_cj<60)&&strcmp(a[c].name,p1)==0)
{ n++;}
cout<<"************修改后的数据*************"<<endl;
if(n>=3)
for(int d=0;d<10;d++)
{if(strcmp(a[d].name,p1)>0||strcmp(a[d].name,p1)<0)
{ a[d].print(); cout<<"------------------------"<<endl;}
}}; break;
case '4':{cout<<"************进行修改操作************"<<endl;
char *pp="321335015";
for(int e=0;e<10;e++)
if(strcmp(a[e].stu_no,pp)==0)
{ cout<<"请输入修改后班级:";
cin>>a[e].banji;
a[e].print();
cout<<"-------------------------"<<endl;}}; break;
case '5':{cout<<"************进行查找操作************"<<endl;
student obj("乐乐","0321335015","女","电商");
cout<<"请输入要查找的人的姓名:"<<endl;
for(int g=0;g<10;g++)
if(strcmp(a[g].name,obj.name)==0)
a[g].print();
else
exit(0);
cout<<endl;
cout<<"请输入要查找的班级名:";
cin>>obj.banji;
for(int h=0;h<15;h++)
{if(strcmp(a[h].banji,obj.banji)==0) a[h].print();}};break;
case '6':{ cout<<"******进行统计操作******"<<endl;
char *p2="信管";char *p3="电商";
char *p4="001";char *p5="002";char *p6="003";char *p7="004"; int sum=0;
cout<<"******按班级统计成绩******"<<endl;
for(int i=0;i<10;i++)
if(strcmp(a[i].banji,p2)==0)
{ sum+=a[i].sx_cj;}
cout<<"信管的总成绩为:"<<sum<<endl;
for(int j=0;j<10;j++)
if(strcmp(a[j].banji,p3)==0)
{ sum+=a[j].yw_cj;}
cout<<"电商的总成绩为:"<<sum<<endl;
cout<<"******按课程统计成绩******"<<endl;
for(int i1=0;i1<10;i++)
if(strcmp(a[i1].yw_no,p4)==0)
{ sum+=a[i1].yw_cj;}
cout<<"语文的总成绩为:"<<sum<<endl;
for(int i2=0;i2<10;i++)
if(strcmp(a[i2].yy_no,p5)==0)
{ sum+=a[i2].yy_cj;}
cout<<"英语总成绩为:"<<sum<<endl;
for(int i3=0;i3<10;i++)
if(strcmp(a[i3].sx_no,p4)==0)
{ sum+=a[i3].sx_cj;}
cout<<"数学的总成绩为:"<<sum<<endl;
for(int i4=0;i4<10;i++)
if(strcmp(a[i4].zz_no,p4)==0)
{ sum+=a[i4].zz_cj;}
cout<<"政治的总成绩为:"<<sum<<endl;};break;

case '7':{exit(0);};break;
}

return 0;
}

这是我重新写的,可是有的地方显示不出数据来,请各位告诉我一下为什么?怎么修改?谢谢各位了!

[此贴子已经被作者于2006-1-13 13:21:43编辑过]

2006-01-11 03:32
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

我粗略分析了一下,发现这个程序有非常严重的知识性错误.
1.用了关键字做自己的变量名.(程序中以class,delete做变量名与函数名)
2.分不清结构与类的差别.(以象结构的方式来初始化类.在main()函数中)
3.指针理解得不够深入.(指针用"."来调用)
4.在类的继承关系上有错.你用关键字friend,
显然你还没有了解friend的真正用法(它提供一种安全的访问机制).
下面是我的程序,第一个是多重继承;第二个是用friend:
#include "iostream.h"
class a
{
public:
int x;
a()
{
x=20;
}
};
class b:public a
{
public:
int y;
b():a()
{
y=10;
}
void print()
{
cout<<x<<endl;
}
};
class c:public b
{
public:

void print2()
{
cout<<y<<endl;
cout<<x<<endl;
}
};
void main()
{
c obj;
obj.print2();
}

这是第二个:

#include "iostream.h"
class c;

class a
{
public:
int x;
a()
{
x=20;
}
};
class b:public a
{
protected: //看到个关键字吗.
friend c;
int y;
b():a()
{
y=10;
}
void print()
{
cout<<x<<endl;
}
};
class c
{
public:
b obj; //最后还是要一个对象.这在你的程序中被认为与多重继承一样.
void print2()
{
cout<<obj.y<<endl; //用了friend后,不用继承也可调用b类的保护成员y.
cout<<obj.x<<endl;
}
};
void main()
{
c obj;
obj.print2();
}


=×&D o I p R e E n C g T l X&×=
2006-01-11 14:49
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
也问一下,这题的数据类型如何建立比较好?

2006-01-11 15:41
xianen20
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-12-30
收藏
得分:0 

感谢楼上的指点,我去掉一个类了.
2.分不清结构与类的差别.(以象结构的方式来初始化类.在main()函数中)
3.指针理解得不够深入.(指针用"."来调用)
请问这两个该怎么改?我该如何在定义函数中进行对象的引用

请问直接数组对象进行调用,我上面那种可以吗?

[此贴子已经被作者于2006-1-11 22:35:59编辑过]

2006-01-11 22:16
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

这个题目 只要建立一个类即可

首先建立student的数据结构

struct student{

char name[10];---不要用 char *name;
int stu_no;
char sex[2];
char banji[10];

student *next;--应为规定用链表实现

};


class xxxxx

{private;

student *head;

public:
xxxxx(....);

int creat(....);

int modify(....);

int insert(.....);

... find(...) ;可以重载两个函数,按姓名和班级

.... tongji(...);

~xxxx(....);

int delete(......);
};


2006-01-12 20:03
xianen20
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-12-30
收藏
得分:0 

谢谢楼上的指点.可是我因为不知道这样用指针才这样的.麻烦你能否说清楚些?

2006-01-12 21:27
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

楼上的, 想问什么呢??

不会是让我教你 怎么用指针吧, 书上 很多的啊~~


如果lz 真的不会用指针, 那可以用数组来实现的
道理是一样 的

const int MAX=100;

struct student{

char name[10];---不要用 char *name;
int stu_no;
char sex[2];
char banji[10];

};


class xxxxx

{private;

student scor[MAX];

int index;--做为数组下标标记

public:
xxxxx(....);

int creat(....);

int modify(....);

int insert(.....);

... find(...) ;可以重载两个函数,按姓名和班级

.... tongji(...);

~xxxx(....);

int delete(......);
};

[此贴子已经被作者于2006-1-13 10:12:16编辑过]


2006-01-13 10:06
xianen20
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-12-30
收藏
得分:0 
呵呵.那倒不必了,楼上的建议真的很不错.不过因为现在没时间了,我是一边准备考试一边弄这题目的,太谢谢你了!能否看看我重新编译过的程序.运行可以通过的.请帮我下.指正一下其中的错误.(错误应该都在主函数那快)先谢谢你了哦!
2006-01-13 13:26
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

在哪啊??


2006-01-13 16:25
快速回复:[求助]请大家看看我第一次做的简单系统,谢谢了!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.104689 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved