当前位置:编程学习 > C/C++ >>

c语言程序,急啊

一、题目(课程设计题目

学生成绩管理系统

二、功能描述(对系统要实现的功能进行描述

每个学生的基本信息包括:学生学号、学生姓名、学生性别以及包括5门功课的成绩;

系统的功能包括:

1. 学生基本信息管理

1.1 增加学生

1.2 修改学生基本信息

1.3 删除指定的学生信息

2. 学生成绩管理

      2.1 录入学生成绩

      2.2 修改指定学生成绩

3. 学生信息查询与统计

      3.1 查询指定学生的基本信息与成绩

      3.2 对全体学生的成绩总分进行统计并输出

3.3 对学生的成绩部分按从高到低的顺序输出

3.4 输出某门课程不及格的学生名单及成绩

3.5 查询指定学生的不及格课程及成绩

要求:编写程序完成以上功能(*选做:用文件存放学生数据),并撰写实验报告。

三、概要设计(根据功能描述,建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关系,并简要说明各模块的功能。

 

四、详细设计(详细说明各功能模块的实现过程,包括用流程图对算法进行描述,所用到的数据结构等

 

五、测试结果及存在的问题(说明系统的运行效果(附上运行界面图片)、存在哪些不足以及预期的解决办法)

 

六、课程设计心得体会(谈谈自己在课程设计过程中的心得体会

 

七、附录(附上本文完成的代码)

答案:#include<stdio.h> 
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define max 20

typedef struct student    //学生
{
char sno[max]; // 学号
char sname[max];  //姓名
char sex[max];   //性别
char age[max];  //年龄
char depart[max];  //系
char classs[max];  //班
char grade[max]; //年级

struct student* next;
} student;

student* head;


int LogOn()  //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输
{
char username[max],password[max];
printf("\n请输入用户名:");
scanf("%s",username);
printf("\n请输入密码(最多15位):");

//开始以不回显且支持退格方式获取输入密码
int i=0; 
while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围
{
if(password[i-1]=='\b')//对退格键的处理
{
printf("%c%c%c",'\b','\0','\b');
i=i-2;
}
else
printf("*"); 
}
password[--i]='\0'; 

//已获取密码。验证用户身份
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086"))
{
printf("\n登录成功!");
return 1;
}
else  
return 0;

}

void regist()
{
char ch;
student *s,*ptr;  //s用来建新结点,ptr用来暂存头结点

do 
{

    s=(student*)malloc(sizeof(student)); // 新建一个学生结点 


    printf("\n开始注册...");            //开始注册
    printf("\n请输入该学生的学号:");
    scanf("%s",s->sno);
    printf("\n请输入该学生的姓名:");
    scanf("%s",s->sname);
    printf("\n请输入该学生的性别:");
    scanf("%s",s->sex);
       printf("\n请输入该学生的年龄:");
    scanf("%s",s->age);
    printf("\n请输入该学生的系:");
    scanf("%s",s->depart);
    printf("\n请输入该学生所在的班:");
    scanf("%s",s->classs);
    printf("\n请输入该学生所在的年级");
    scanf("%s",s->grade);

ptr=head;
head=s;//将新结点插入队头
s->next=ptr; 

fflush(stdin);
printf("\n请问是否继续注册?(Y/N)");
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');

return;
}

void ElePrint(char str[])  //输出单个元素
{
if(str==NULL) exit(0);
printf("%s",str);
for(unsigned int i=0;i<12-strlen(str);i++) printf(" ");//为了对齐输出,需插入一些空格
return;
}

int LinePrint(student *ptr) //输出一行
{
if(ptr==NULL)  //检查传进来的指针 
return 0;

printf("\n");
ElePrint(ptr->sno);
ElePrint(ptr->sname);
ElePrint(ptr->age);
ElePrint(ptr->sex);
ElePrint(ptr->depart);
ElePrint(ptr->classs);
ElePrint(ptr->grade);

return 1;
}

void print()  //输出全部学生信息
{
student *ptr=head; 
printf("\n学号        姓名        年龄        性别        系          班          年级        ");
while(ptr)
{
LinePrint(ptr);
ptr=ptr->next;
}
printf("\n");
return;
}
void search()//查询模块
{
int method;//查询方式
char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字
while(1)
{
printf("\n请选择查询方式");
    printf("\n1.按学号查询");
 printf("\n2.按姓名查询");
    printf("\n3.按所在系查询");
    printf("\n4.按所在班级查询");
    printf("\n5.按所在年级查询");
printf("\n6.打印全部学生信息");
    printf("\n7.返回主菜单\n");

    scanf("%d",&method);

    student *p=head,*temp;

    switch(method)
{
       case 1: 
   printf("\n请输入要查询的学号:");
   scanf("%s",no);    
   while(p)
   {
   if(!strcmp(p->sno,no))
   break;
   else
   {
   temp=p;
   p=p->next;
   }
   }
   printf("\n学号        姓名        年龄        性别        系          班          年级        ");
   LinePrint(p);
   break;
   case 2:
   printf("\n请输入要查询的姓名:");
   scanf("%s",name);
   printf("\n学号        姓名        年龄        性别        系          班          年级        ");
   while(p)
   {
   if(!strcmp(p->sname,name))
   LinePrint(p);     
   p=p->next;
   }
   break;
   case 3:
   printf("\n请输入学生所在的系:");
   scanf("%s",departm);
   printf("\n学号        姓名        年龄        性别        系          班          年级        ");
   while(p)
   {
   if(!strcmp(p->depart,departm))
   LinePrint(p);
   p=p->next;
   }
   break;
   case 4:
   printf("\n请输入学生所在的班:");
   scanf("%s",clss);
   printf("\n请输入学生所在的年级:");     
   scanf("%s",grades);     
   printf("\n学号        姓名        年龄        性别        系          班          年级        ");
   while(p)
   {
   if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))
   LinePrint(p);
   p=p->next;
   }
   break;
   
   case 5:
   printf("\n请输入学生所在的年级:");
   scanf("%s",grades);
   printf("\n学号        姓名        年龄        性别        系          班          年级        ");

上一个:挑错:C语言函数计算器
下一个:C语言程序设计,求详解

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,