| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4044 人关注过本帖
标题:[求助]C语学生管理系统设计
只看楼主 加入收藏
hyfuwei
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-3
收藏
 问题点数:0 回复次数:18 
[求助]C语学生管理系统设计

这是我一个程课设计的题目,,,望C语言高手帮帮忙,,,小弟在这里谢谢了...

课程设计的内容

有N(N >= 10)个学生的数据信息,每个包含:

学号 — num [10](字符串)、

姓名(拼音)— name[25](字符串)、

性别 — sex(字符,M或F)、

年龄 — age(整型)、

三门课程成绩(高数、英语、计算机)— score [3 ](单精度)。

设计一个系统,完成下列功能:

1. 定义及输出。用结构体类型数据及其赋初值的方法把学生的数据送到结构体数组中(第一个数据用自己的真实数据,其它数据自定,但注意要是合法数据),然后把它们输出显示。

2. 计算并排序。计算每个学生三门课程的总分(sum,单精度)及平均分(aver,单精度,输出一位小数),将包括所有数据的结构体数组元素按总分从大到小的顺序排序打印出来。

3. 查找。任意输入一位学生的姓名,打印出他的所有数据。要求能多次查找。

二、课程设计的要求与数据

1. 编程时,设计函数来完成每个功能,通过main 函数调用各函数。

2. 程序中的输入输出要加提示说明。

3. 打印出的程序清单,在各行后用中文加以说明。

4. 输出的结果要准确、清晰、美观。

[此贴子已经被作者于2007-6-4 21:08:10编辑过]

搜索更多相关主题的帖子: 系统设计 学生 管理 
2007-06-03 22:19
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
简单的学生管理系统,论坛上讨论过好几次了.
LZ自己搜一下,我记得我以前上传过一个.

倚天照海花无数,流水高山心自知。
2007-06-03 22:23
hyfuwei
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-3
收藏
得分:0 
但是不知道那个管理系统去哪里了... 太多了... 你可以再写一个吗.... 谢谢,,,
2007-06-03 22:33
hyfuwei
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-3
收藏
得分:0 
前面还好写一点... 就是打印的这方面我忘了.....还有查找的..
3. 查找。任意输入一位学生的姓名,打印出他的所有数据。要求能多次查找。
2007-06-03 22:36
saiya_ma
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-4-10
收藏
得分:0 

老是让人家写也不是办法啊,自己试着写写,遇到问题了再来求助这样比较好......

2007-06-03 22:36
saiya_ma
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-4-10
收藏
得分:0 
你把自己写的,贴上来吧
2007-06-03 22:37
hyfuwei
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-3
收藏
得分:0 

#include <stdio.h>
#define N 3
#define M 50

struct student
{
int num;
char name[25];
float score[N],avr;
}s1[M];

struct student input();
void main()
{
int i=0;
char ch='y';
while(ch=='y'||ch=='Y')
{
stu[i] = input();
i++;
printf("是否继续输入:(y or n)");
fflush(stdin);
ch = getchar();
}
}
struct student input()
{
struct student s1;

printf("请输入学员信息:");
printf("学号:");
scanf("%d",&s1.num);
fflush(stdin);
printf("姓名:");
gets(s1.name);
printf("成绩:\n");
for(int i=0;i<N;i++)
{
printf("第%d门成绩:",i+1);
scanf("%f",&s1.score[i]);
}
s1.avr = (s1.score[0]+s1.score[1]+s1.score[2])/3;

return s1;
}


望指点指点...

2007-06-03 22:50
hyfuwei
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-3
收藏
得分:0 
我C语言是大学的时候学的了... 现在都几年了... 忘了好多了..
2007-06-03 22:53
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
LS正解,把自己写的发上先.

倚天照海花无数,流水高山心自知。
2007-06-03 22:53
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

如下是引用 gdzhan 的:
这是目前看过比较完善的了
自学了两个月,,刚学结构体,写了个这种程序,呵呵,,还有很多错的地方还请各位看过的帮我指点一下错误,
,,,,,,自学真痛苦阿,,,,,,

/*****************************************************************/
// 学生学籍管理系统v1.0测试版.
// 开发者:☆ゞ天涯☆ゞ。
// 开发时间:2007-05-15
// 系统登陆密码:521314
// QQ: 214880229
/*****************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>

#define NAME 20
#define SEX 10
#define BIRTH 20
#define ADDDR 30
#define POTO 12
#define DAK 10
#define SCHOOL 30
#define SORC 6
#define STUDENTMAX 1000 //学生最大人数
#define PASSWORD "521314" //系统登陆密码

/************************学生信息结构体**********************/
struct studentinfo //学生个人信息结构
{
char name [NAME]; //学生姓名
char sex [SEX]; //学生性别
char birth [BIRTH]; //出生日期
char adddr [ADDDR]; //学生地址
char poto [POTO]; //联系电话
char dak [DAK]; //邮证编码
char school[SCHOOL]; //所在学校
};
struct studentsorc //学生成绩结构
{
char name[NAME]; //学生姓名
int ID; //学生学号
float sorc[6]; //记录学生成绩
float aver; //平均分
float sum; //总分
};
struct allstudentinfo //学生全部结构
{
struct studentinfo student;
struct studentsorc student1;
};

FILE *infofile=NULL; //存学生个人信息数据文件
FILE *sorcfile=NULL; //存学生成绩数据文件
char filename[]="c:\\学生个人信息登记.dat"; //记录个人信息登记
char filename1[]="c:\\学生成绩.dat"; //记录学生成绩

/************************函数块声明****************************/

void password(); //密码验证
int showmeun(); //系统主菜单显示
int submeun(); //子菜单显示
void sorcmeun(struct allstudentinfo *); //成绩管理子菜单
void submain(struct allstudentinfo *); //子系统
void inputinfo(struct allstudentinfo *); //输入学生个人信息
void modinfo(struct allstudentinfo *); //修改个人信息
void aboutinfo(struct allstudentinfo *); //查询个人信息
void allabout(struct allstudentinfo *); //查询所有信息
void delinfo(struct allstudentinfo *); //删除个人信息
void mofname(struct allstudentinfo *); //修改姓名
void mofsex(struct allstudentinfo *); //修改性别
void mofbirth(struct allstudentinfo *); //修改出生日期
void mofadddr(struct allstudentinfo *); //修改家庭住址
void mofpoto(struct allstudentinfo *); //修改电话号码
void mofdak(struct allstudentinfo *); //修改邮证编码
void mofschool(struct allstudentinfo *); //修改所在院校
int datfile(struct allstudentinfo *); //处理修改个人信息的文件
void inputsorc(struct allstudentinfo *); //个人成绩录入
void mofsorc (struct allstudentinfo *); //修改成绩
void seasorc (struct allstudentinfo *); //查找个人成绩
void seaallsorc(struct allstudentinfo *); //浏览所有成绩
void delsorc (struct allstudentinfo *); //删除成绩
int sorcdatfile(struct allstudentinfo *); //成绩数据文件
void systemhelp(); //系统帮助信息

int main(void)
{
struct allstudentinfo studentmax[STUDENTMAX]; //最大学生人数
struct allstudentinfo *p_student; //指向结构指针
int in;
time_t start,end;

p_student=studentmax; //指向结构体
password(); //获取用户密码验证

do
{
system("cls");
in=showmeun(); //系统主菜单显示
switch(in)
{
case 1 : submain(p_student);
break;
case 2 : sorcmeun(p_student);
break;
case 3 : systemhelp();
break;
case 4 : break;

default: printf("没有此选项,请按任意键返回重新选择!");
getch();
system("cls");
break;
}
}while(in!=4);
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t");
printf("谢 谢 使 用 本 系 统 !");
start=time(NULL);
end=time(NULL);
while(end-start<1.5)
end=time(NULL);
return 0;
}

/************************子系统*******************************/
void submain(struct allstudentinfo *p_student)
{
int in;

do
{
system("cls");
in=submeun(); //子菜单显示
switch(in)
{
case 1 : inputinfo(p_student); //输入个人信息
break;
case 2 : modinfo(p_student); //修改个人信息
break;
case 3 : aboutinfo(p_student); //查询个人信息
break;
case 4 : allabout(p_student); //查询所有信息
break;
case 5 : delinfo(p_student); //删除个人信息
break;
case 6 : break;

default: printf("没有此选项。请您重新输入(1-5)");
getch();
system("cls");
break;
}
}while(in!=6);
system("cls");
return ;
}

/************************密码验证*****************************/
void password()
{
char *pass=NULL; //初始化指针
int count;
time_t start,end; //时间函数

pass=(char *)malloc(255*sizeof(char)); //分配内存
while(1)
{
count=0;
printf("\n\n\n\n\n\t\t 学生信息管理系统Ver1.0测试版 \n");
printf("\n\t\t 用户名:TIANYA \n");
printf("\n\t\t 密 码:");
while((count>=0)&&(pass[count++]=getch())!=13) //密码输入
{
if(pass[0]=='\b')
{
count=0;
continue;
}
else if(pass[count-1]=='\b')
{
printf("%c%c%c",'\b','\0','\b');
count-=2;
}
else
putchar('*');
}
pass[--count]='\0';
if(!strcmp(pass,PASSWORD)) //开始验证
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\t\t\t");
printf(" 欢 迎 登 陆 学 生 信 息 管 理 系 统 !");
start=time(NULL);
end=time(NULL);
while(end-start<1) //延时1秒执行以下程序
{
end=time(NULL);
}
system("cls");
free(pass); //释放储存密码的内存
return ;
}
free(pass); //释放密码错误的那块内存
pass=(char *)malloc(255*sizeof(char)); //重新分配储存密码内存
system("cls");
printf("\a\n\n\n\n\n\n\n\n\t\t\t\t密 码 错 误 !");
getch();
system("cls");
}
}

/***********************系统主菜单************************/
int showmeun()
{
int in;
char ch;

printf("\n\n\n\n");
printf("\t ╭────────────────────────────╮\n");
printf("\t ∣ 学生个人信息管理系统v1.0测试版 ∣\n");
printf("\t |————————————————————————————|\n");
printf("\t | \t    1. 学生个人信息管理            |\n");
printf("\t |                            |\n");
printf("\t | \t    2. 学生个人成绩管理            |\n");
printf("\t |                            |\n");
printf("\t | \t    3. 关于本系统帮助             |\n");
printf("\t |                            |\n");
printf("\t | \t    4. 退 出 系 统             |\n");
printf("\t |                            |\n");
printf("\t ╰────────────────────────────╯\n");
printf("\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
return in;
}
fflush(stdin);
return in;
}

/***************************************************************/
// 个人信息管理系统目前只支持学生的个人资料登记
// 不支持成绩的录入,如须录入学生的个人成绩,请
// 使用“学生成绩管理系统,*必须要先在本系统登记
// 之后才能正常使用成绩管理系统,否则可能会发生
// 错误的提示
/***********************个人信息子菜单*************************/
int submeun()
{
int in;
char ch;

system("cls");
printf("\n\n\n");
printf("\t\t ————————————————————————\n");
printf("\t\t|      学生个人信息管理系统       |\n");
printf("\t\t|———————————————————————|\n");
printf("\t\t|       1.录入个人信息         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       2.修改个人信息         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       3.查询个人信息         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       4.浏览所有信息         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       5.删除个人信息         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       6.退出系统           |\n");
printf("\t\t ————————————————————————\n");
printf("\t\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
return 0;
}
fflush(stdin);
return in;
}

/***************************修改个人信息子菜单************************/
void modinfo(struct allstudentinfo *p_student)
{
int in;
char ch;

do
{
system("cls");
printf("\n\n\n");
printf("\t\t ————————————————————————\n");
printf("\t\t|        个人信息修改管理       |\n");
printf("\t\t|———————————————————————|\n");
printf("\t\t|       1.修改用户姓名         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       2.修改用户性别         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       3.修改出生日期         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       4.修改家庭住址         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       5.修改联系电话         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       6.修改邮证编码         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       7.修改所在院校         |\n");
printf("\t\t|                       |\n");
printf("\t\t|       8.退出系统           |\n");
printf("\t\t ————————————————————————\n");
printf("\t\t 请您正确选择:");
while(scanf("%d",&in)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" 没有此选项,请重新选择!");
getch();
system("cls");
return ;
}
fflush(stdin);
switch(in)
{
case 1 : mofname(p_student);
break;
case 2 : mofsex(p_student);
break;
case 3 : mofbirth(p_student);
break;
case 4 : mofadddr(p_student);
break;
case 5 : mofpoto(p_student);
break;
case 6 : mofdak(p_student);
break;
case 7 : mofschool(p_student);
break;
case 8 : return ;

default: printf("没有此选项,请重新选择!");
break;
}
}while(1);
}
2007-5-22 12:21:18举报帖子
使用道具
gdzhan

等级:新手上路
文章:8
积分:174
注册:2007年4月15日
第 2 楼 /*************************个人信息录入*************************/
void inputinfo(struct allstudentinfo *p_student)
{
int count;
char ch;

system("cls");
if((infofile=fopen(filename,"a+b"))==NULL)
{
printf("不能打开文件,请确认磁盘已满或c:\\学生个人信息登记.dat文件没有损坏");
getch();
exit(1);
}
rewind(infofile); //定位文件头开始读取
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
continue;
printf("\n\n 个人信息登记表\n");
printf("\n请正确填写以下信息(系统目前不能支持中文,请用英文或拼音\n");
printf("---------------------------------------------------------\n\n");
printf("姓 名:");
while(count<STUDENTMAX&&gets(p_student[count].student.name)!=NULL //输入姓名
&&p_student[count].student.name[0]!='\0')
{
printf("\n性 别:");
gets(p_student[count].student.sex); //输入性别
printf("\n出生日期:");
gets(p_student[count].student.birth); //输入出生日期
printf("\n家庭住址:");
gets(p_student[count].student.adddr); //输入家庭地址
printf("\n联系电话:");
gets(p_student[count].student.poto); //输入电话
printf("\n邮证编码:");
gets(p_student[count].student.dak); //输入邮证编码
printf("\n所属院校:");
gets(p_student[count].student.school); //输入所在院校
//将信息写入文件
fwrite(&p_student[count++].student,sizeof(struct studentinfo),1,infofile);

printf("是否录入下一个学生信息(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
system("cls");
printf("\n请输入下一个学生的个人信息\n");
printf("\n姓 名:");
continue;
} //继续输入下一个学生信息
else
{
printf("\n\n个人信息录入结束,返回!");
fclose(infofile); //关闭文件
getch(); //返回子菜单
system("cls");
return ;
}
}
printf("输入有误,终止个人信息录信,返回!");
getch();
system("cls");
return ; //返回
}

/***********************查询个人信息****************************/
void aboutinfo(struct allstudentinfo *p_student)
{
int i;
int count; //学生计数器
char ch;
char *temp=NULL; //临时存储要查询的用户姓名

system("cls");
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能打开文件,请确认磁盘已满或文件是否存在");
getch();
exit(1);
}
rewind(infofile); //指向文件头
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile); //关闭文件
if(!count)
{
printf("找不到个人数据,请确认已经成功录入或文件是否存在!");
getch();
system("cls");
return ;
}
temp=(char *)malloc(20*sizeof(char)); //分配内存
printf("请输入要查询的学生姓名:");
while(gets(temp)!=NULL&&temp[0]!='\0')
{
for(i=0;i<count;i++)
{
if(!strcmp(temp,p_student[i].student.name))
{
system("cls");
printf("以下是你要查询%s的个人信息\n",p_student[i].student.name);
printf("\n 个人信息查询表\n");
printf("-----------------------------------------------------------------\n");
printf("\n姓 名: %s\n",p_student[i].student.name);
printf("\n性 别: %s\n",p_student[i].student.sex);
printf("\n出生日期: %s\n",p_student[i].student.birth);
printf("\n家庭住址: %s\n",p_student[i].student.adddr);
printf("\n联系电话: %s\n",p_student[i].student.poto);
printf("\n邮证编码: %s\n",p_student[i].student.dak);
printf("\n所在院校: %s\n",p_student[i].student.school);
printf("-----------------------------------------------------------------\n");
break;
}
}
free(temp); //释放空间
printf("\n查询下一个学生的个人信息(y/n)");
ch=getch();
if(ch=='y'||ch=='Y')
{
system("cls");
temp=(char *)malloc(20*sizeof(char)); //重新分配内存
printf("请输入要查询的学生姓名:");
continue;
}
else
{
printf("\n查询结束,返回!");
getch();
system("cls");
return ;
}
}
free(temp); //释放已经分配的内存空间
printf("\n输入有误,请按任意键返回子菜单!");
getch();
system("cls");
}

/****************************查询所有信息*******************************/
void allabout(struct allstudentinfo *p_student)
{
int i;
int count;

system("cls");
if((infofile=fopen(filename,"rb"))==NULL)
{
printf("不能打开文件,请确认文件是否存在或是否损坏!");
getch();
exit(1);
}
rewind(infofile); //定位到文件头
for(count=0;fread(&p_student[count].student,sizeof(struct studentinfo),1,infofile)==1;count++)
{
continue;
}
fclose(infofile); //读完后关闭文件
if(!count)
{
printf("不能读取数据,请确定文件是否存在或已经成功录入数据!");
getch();
system("cls");
return ; //反回重新操作
}
printf("\n\t\t\t 学生个人信息查询表\n\n");
printf("\t 以下是本系统所查询到的所有学生个人信息,如果表中找不到数据\n");
printf(" 请确认是否已经成功录入本系统!\n");
printf("----------------------------------------");
printf("----------------------------------------\n");
for(i=0;i<count;i++)
{
printf("您正在查看第[%d]个学生的个人信息\n",i+1);
printf("\n姓 名: %s\n",p_student[i].student.name);
printf("\n性 别: %s\n",p_student[i].student.sex);
printf("\n出生日期: %s\n",p_student[i].student.birth);
printf("\n家庭住址: %s\n",p_student[i].student.adddr);
printf("\n联系电话: %s\n",p_student[i].student.poto);
printf("\n邮证编码: %s\n",p_student[i].student.dak);
printf("\n所在院校: %s\n",p_student[i].student.school);
printf("------------------------------------");
printf("------------------------------------\n");
printf("请按任意键继续查看信息........!");
getch();
system("cls");
}
printf("\n查询结束...");
printf("请按任意键返回!");
getch();
system("cls");
return ;
}


方寸之内,剖天下; 方坛之内,析自我;
2007-06-03 23:15
快速回复:[求助]C语学生管理系统设计
数据加载中...
 
   



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

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