学生成绩管理系统程序设计(linux C)
本程序设计思想是利用单链表来实现数据的管理,结合文件来实现信息的存贮和提取,整体采用了模块化编程。
头文件部分:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <malloc.h>
#include <unistd.h>
#include <signal.h>
#include <time.h>
#include <curses.h>
#define N sizeof(node)
#define L sizeof(user)
typedef struct student{
//构建学生信息结构体,并将结构体重命名成node
int num;
char name[20];
char sex[10];
float yy;
float yw;
float cyy;
float avg;
struct student *next;
}node;
typedef struct logining{
char account[20]; //账号
char password[20]; //密码
char filename[20]; //文件名(同账户名)
char mibao1[20]; //密保用于账号重新找回密码
char mibao2[20];
char mibao3[20];
}user;
node *head;//学生信息单向链表的头指针
char filename[20];
void loading();
int registe();
int login();
int findp();
int guide();
void creat();
void menu();
void modify(int);
void delete_student(int);
void displayavg(float);
void displaynum(int);
void fileout();
void filesave();
void filetolink();
void sortavg();
void sortnum();
void studentinsert();
void swi(int);
将所有函数声明和全局变量都放置在一个文件中,便于管理
主函数部分:
#include "studentmanage.h"
int main() {
system("clear");
int n,state=0;//state用来,确定是否登录成功,成功该值为1
int type;//通过注册函数返回的返回值,进行程序控制
int con;//通过login函数的返回值确定当前登录状态
loading(); //程序介绍界面
scanf("%d",&n);
if(n==1){
type=registe();//账号注册
if(type==1){
//type表示已经注册成功,进入登录界面
con=login();
if(con==1){
state=1;
}
else if(con==2){
system("clear");
printf("\n\n\n\t\t******************************************************************************\n");
printf("\t\t* *\n");
printf("\t\t* lu *\n");
printf("\t\t* 控制界面 *\n");
printf("\t\t* *\n");
printf("\t\t* 尊贵的用户,您好!!! *\n");
printf("\t\t* 在本界面你可以选择关闭本程序,或者重新启动本程序(其他功能正在开发中) *\n");
printf("\t\t* 如有不便之处或者程序改进方案,欢迎发送邮件到作者邮箱 *\n");
printf("\t\t* e-mail:[email protected] *\n");
printf("\t\t*\t 关闭本程序请按1 重新启动本程序,请按2(其他数字也可以) *\n");
printf("\t\t* 谢谢您的使用 *\n");
printf("\t\t* *\n");
printf("\t\t******************************************************************************\n\n");
int s;
scanf("%d",&s);
if(s==1){
return 0;
}
if(s!=1) {
system("clear");
printf("程序即将重新启动.......");
return main();
}
}
else if(con==4){
return 0;
}
else
{
printf("程序即将重新启动.......");
system("clear");
return main();
}
}
else if(type==2){
printf("\n\n\n\t\t******************************************************************************\n");
printf("\t\t* *\n");
printf("\t\t* *\n");
printf("\t\t* 控制界面 *\n");
printf("\t\t* *\n");
printf("\t\t* 尊贵的用户,您好!!! *\n");
printf("\t\t* 在本界面你可以选择关闭本程序,或者重新启动本程序(其他功能正在开发中) *\n");
printf("\t\t* 如有不便之处或者程序改进方案,欢迎发送邮件到作者邮箱 *\n");
printf("\t\t* e-mail:[email protected] *\n");
printf("\t\t*\t 关闭本程序请按1 重新启动本程序,请按2(其他数字也可以) *\n");
printf("\t\t* 谢谢您的使用 *\n");
printf("\t\t* *\n");
printf("\t\t******************************************************************************\n\n");
int s;
scanf("%d",&s);
if(s==1){
return 0;
}
if(s!=1) {
system("clear");
printf("程序即将重新启动.......");
return main();
}
}
else
return main();
}
else if(n==2){
con=login();//登录界面
if(con==1){
state=1;
}
else if(con==2){
system("clear");
printf("\n\n\n\t\t******************************************************************************\n");
printf("\t\t* *\n");
printf("\t\t* lu *\n");
printf("\t\t* 控制界面 *\n");
printf("\t\t* *\n");
printf("\t\t* 尊贵的用户,您好!!! *\n");
printf("\t\t* 在本界面你可以选择关闭本程序,或者重新启动本程序(其他功能正在开发中) *\n");
printf("\t\t* 如有不便之处或者程序改进方案,欢迎发送邮件到作者邮箱 *\n");
printf("\t\t* e-mail:[email protected] *\n");
printf("\t\t*\t 关闭本程序请按1 重新启动本程序,请按2(其他数字也可以) *\n");
printf("\t\t* 谢谢您的使用 *\n");
printf("\t\t* *\n");
printf("\t\t******************************************************************************\n\n");
int s;
scanf("%d",&s);
if(s==1){
return 0;
}
if(s!=1) {
system("clear");
printf("程序即将重新启动.......");
return main();
}
}
else if(con==4){
return 0;
}
else
{
printf("程序即将重新启动.......");
system("clear");
return main();
}
}
else
{
printf("\t\t**************选择错误,程序重启***************");
return main();
}
if(state==1) {
int gud;
gud=guide();
if(gud==1){
while(1){
system("clear");
menu();
int choose;
scanf("%d",&choose);
if(choose==0)
return 0;
swi(choose);
}
}
else{
printf("程序即将重新启动.......");
return main();
}
}
return 0;
}
主函数是整体的流程控制函数,主体部分
通过进行数据的判断,该部分