课程设计说明
课程设计目的:
通过此课程,更系统和全面地掌握程序设计的相关知识,巩固和加深《C程序设计》理论知识,把理论与实践相结合,掌握基本编程技巧,学习调试程序,锻炼独立思考能力,培养创新思维,提高编程能力。
本程序运用了数组、指针、结构体、函数、循环语句、文件保存和读取等知识,由于上学期时间紧张,部分知识并没有学透彻。通过这次机会,可以获得更深的理解和应用,为以后学习打下坚实的基础。
软件的总体结构图以及主要功能模块
一、 输入和添加信息模块
使用此模块时,系统会提示你想要输入的学生数目,然后通过for的循环语句实现逐个输入学生学号、姓名、年龄、成绩等,并进行总分计算和排名。如果想再输入新信息,系统会开辟新空间,并提示你是否覆盖以前信息,从而实现新信息的输入。
未进行此操作前,先进行其它操作,系统都会提示你现在没有信息。
二、 查信息模块
输入信息后进行此操作,系统会提示你是按学号查,还是按姓名查,然后通过字符串的比较查信息,并在屏幕显示是否到信息。若没到,系统会提示没有要的信息;若到信息,就会在屏幕上把信息内容显示出来。
三、 修改信息
进行此操作时,系统会提示你是按学号还是按姓名查,然后把要修改人的信息全部显示出来,再次确认是否真的要修改。若要修改,就输入新信息,把要修改的信息覆盖,并重新排名,把修改后的信息全部显示出来。
四、 成绩排序
此模块包括四个被调函数,应用了字符串和指针知识。同样,系统会提示你是按学号还是按姓名(abc)排序,选择后,系统会提示是按升序还是降序排列,最终把排序后的信息全部显示出来。
五、 文件处理
文件处理包含文件的打开和文件的保存。应用文件打开和关闭函数,以读写方式将文件保存到一个二进制文件中。若未保存前,先打开文件,如果无信息,系统会提示没有文件;如果有信息,系统会提示你先保存文件。打开文件后,可以在屏幕上显示全部信息。
六、 浏览信息
随时浏览最新信息。学生学号、姓名、各科成绩、总成绩、排名等一目了然。
源程序:
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define course 3 /*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6];
char name[20];
c语言程序教程视频下载int age;
float subject[course];
float score;
int index;
}student;
extern int numstus; /*学生数目*/
extern student *pointer; /*指向结构体数组*/
extern int lens;
int openfile(student stu[]);
int findrecord(student stud[]);
int writetotext(student stud[]);
void welcome();
void display1();
void showtable();
void sort(student stu[]);
void addrecord(student stud[]);
void display(student stud[],int n1,int n2);
void amendrecord(student stud[]);
void count(student stud[]);
void sortnum(student stud[]);
void sortnum2(student stud[]);
void sortname(student stud[]);
void sortname2(student stud[]);
void display(student stud[],int n1,int n2) /*浏览信息*/
{
int i;
showtable(); /*显示表头*/
for(i=n1;i<=n2;i++)
printf("\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].age,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].score,stud[i].index);
/*通过循环输出数据*/
}
int findrecord(student stud[]) /*查信息*/
{
char str[2];
char i;
if(numstus==0)
{
printf("No records to search\n");
}
else
{
printf("search by?\n1.number\t2.name\n");
scanf("%s",str);
if(str[0]=='1') /*按学号查*/
{
printf("Enter num:");
scanf("%s",&str);
for(i=0;i<numstus;i++)
if(strcmp(str,stud[i].number)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='2') /*按姓名查*/
{
printf("Enter name:");
scanf("%s",str);
for(i=0;i<numstus;i++)
if(strcmp(str,stud[i].name)==0)
{
display(stud,i,i);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论