ImageVerifierCode 换一换
格式:DOCX , 页数:78 ,大小:31.60KB ,
资源ID:8900039      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8900039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言学生信息管理系统项目.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言学生信息管理系统项目.docx

1、C语言学生信息管理系统项目C语言学生信息管理系统项目学生信息管理系统项目说明文档 一、项目概述 1(1、产品描述 开发意图:为了使档案管理工作更方便,利用计算机提高工作人员的工作效率,减轻工作负担,实现档案管理的无纸化。 应用目标:通过使用本系统软件,帮助最终用户利用计算机,快速方便的对学生学籍管理进行管理、输入、输出、查找、删除的所需操作,使散乱的人事档案能够具体化,直观化、合理化。 作用及范围:本软件适用与教育界。 1(2、产品功能 软件功能表 模块 功能 说明 一般功能 登录 主菜单 退出 学生记录管理 学生信息录入 学生记录的排序 学生记录查询和删除 学生信息打印 统计报表 分数统计报

2、表 文件管理 记录保存功能 记录另保为功能 记录读取功能 1(2、编写环境 Linux操作系统 gcc编译器 EditPlus编辑器 二、功能概述 1(1、功能分块 开始主菜单另添排打保读查统退存加序印存取询计出为是否退出结束 1(2、主菜单 开始输出菜单输入菜单选项Menu显示错误信息0=Menu=100是Count+1提示数据已满输出各项信息返回主菜单输入姓名提示出错A姓名是否符合规范是输入生日提示出错生日格式是否符合规范并且否7=年龄=30是如有多项成绩,同此方法输入成绩提示出错0=成绩100否是提示录入成功,是否要Count=Count+1继续录入(Y/N)A输入XX=YB结束返回主菜

3、单是1(5、排序 开始否是否有记录是输出排序菜提示信息单输入菜单Menu提示出错0=Menu01=N=MaxPag=1Pag+1MaxPag=Max否否是是是否Pag=Pag-1Pag=1Pag=Pag+1Pag=MaxPag=NA否=退出是结束1(7、另存为 开始输入文件名显示出错文件名是否合文件是否存在是否法是否是否覆盖是否保存是是保存文件结束 1(8、保存 开始是否保存到默认文件是保存文件否结束1(9、读取 开始是否有记录未保存提示是否保存到默认文件提示读取默认文件还是自定义文件否输入Y/N从默认文件读输入文件名取是输入正确是否文件名是否正确读取默认文件是否=Y文件是否存在是是保存到默认

4、文件读取自定义文件结束 1(10、查询 开始提示没有记否是否有记录录是输入查询方式,学号or姓名输入姓名,输入学号是按学号查询可模糊打印记录打印记录是否有记录是否有记录是是是否要删除输入学号是是否要删除是学号在搜索列提示不在搜删除记录表中索列表中是提示删除成删除记录功结束1(11、统计 开始输入0=menu=7Menu=13=Menu=5Menu=2Menu=0否否是是是是按总分降序,搜索按第i科分数降序,打印各科平均分返回主界面前三名搜索前三名打印搜索列表1(12、退出 开始是否有文件未是否确认退否保存出(Y/N)是提示是否保否输入I存(Y/N)输入XI=Y | I=N是X=YI = Y是否

5、否X=N保存否退出返回主菜单退出返回主菜单结束另附源代码:#include #include #include #include #include #include #include #define User 10 /用户名最大宽度 #define Password 10 /密码最大宽度 #define Hight 24 /控制台高度 #define Width 80 /控制台宽度 #define DefaultUser admin /默认的用户名 #define DefaultPassword 123456 /默认的用户密码 #define StudentName 20 /学生姓名最大长度

6、#define OnePageNum 8 /一页显示信息条数 #define MARKLEN (Width-2-StudentName-8)/8 /除学号和姓名外其他项目所占长度 #define FILEADDR data.txt /默认文件名 #define FILE_NAME_NUM 8 /文件名长度 int WrongTimes = 3; /允许登录输错密码次数 int IsSaved = 0; /记录是否保存,0为已保存 int student_num = 0; /学生实际人数 int maxnum = 0; /最大学号 int sys_year = 0; /系统时间 年 int sy

7、s_mon = 0; /系统时间 月 int sys_day = 0; /系统时间 日 typedef struct del_node /存放缺漏的学号 int Sno; struct del_node *next; del_Node, *del_list, *del_pointer; typedef struct date_node int Year; /年 int Month; /月 int Day; /日 m_date; typedef struct student_node int Sno; /学号 char Name20; /姓名 m_date birthday; /生日 float

8、 score5; /五门成绩:语文,数学,英语,物理,化学 student_info; typedef struct node /学生信息的数据结构 student_info data; struct node* next; /指向下一结点 Node, *lklist, *pointer; pointer p = NULL,q; /p为尾巴结点,用于添加 q用于其他 lklist head = NULL; /学生数据头结点 del_list del_head = NULL; /缺漏学号链表头结点 del_pointer del_last = NULL;/缺漏学号链表尾结点 /* 功能:添加新的

9、结点到链表中 参数:lklist head,链表头结点 lklist *last,链表尾结点指针 其他,学生结点信息 返回:链表头结点 */ lklist add(lklist head, lklist *last, student_info data) if(head = NULL) /如果链表为空 head = (Node *)malloc(sizeof(Node); *last = head; head-data.Sno = 0; head-next = NULL; q = (Node *)malloc(sizeof(Node); q-data = data; if (q-data.Sn

10、o maxnum) maxnum = q-data.Sno; /记录最大学号 (*last)-next=q; *last=q; (*last)-next = NULL; return head; /* 功能:添加缺漏的学号 参数:lklist head,链表头结点 lklist *last,链表尾结点指针 int sno 学号 返回:链表头结点 */ del_list add_del_sno(del_list head, del_list *last, int sno) del_pointer x; if(head = NULL) /如果链表为空 head = (del_Node *)mall

11、oc(sizeof(del_Node); head-Sno = 0; *last = head; head-next = NULL; x = (del_Node *)malloc(sizeof(del_Node); x-Sno = sno; head-Sno = head-Sno + 1; (*last)-next = x; *last = x; (*last)-next = NULL; return head; /* 功能:清空链表结点 参数:lklist head,链表头结点 lklist *last,链表尾结点指针 返回:无 */ void del(lklist head, lklist

12、 *last) if (head = NULL | head-next = NULL) return; while (head-next) q = head-next; head-next = q-next; free(q); *last = head; /* 功能:清空缺漏学号链表结点 参数:lklist head,链表头结点 lklist *last,链表尾结点指针 返回:无 */ void del_del(del_list head, del_list *last) del_pointer x; if (head = NULL | head-next = NULL) return; wh

13、ile (head-next) x = head-next; head-next = x-next; free(x); *last = head; /* 功能:删除缺漏学号链表第一个结点 参数:lklist head,链表头结点 lklist *last,链表尾结点指针 返回:链表 */ del_list del_del_first(del_list head, del_list *last) if (head = NULL | head-next = NULL) return; del_pointer x = head-next; if (x-next) head-next = x-next

14、; else *last = head; head-next = NULL; free(x); head-Sno = head-Sno-1; return head; /* 功能:复制链表 参数:lklist head,要复制的链表 lklist *copy_head, 存放的头指针 lklist *copy_last, 存放的尾指针 返回:无 */ void copy_link(lklist head, lklist *copy_head, lklist *copy_last) pointer x; if (head = NULL | head-next = NULL) return; x

15、= head; while (x-next) *copy_head = add(*copy_head, copy_last, x-next-data); x = x-next; /* 功能:从输入流读取一个字符 返回:返回该字符的ASCII码 */ int getch(void) struct termios tm,tm_oid; int fd=STDIN_FILENO,c; if(tcgetattr(fd,&tm)0) return -1; tm_oid = tm; cfmakeraw(&tm); if(tcsetattr(fd,TCSANOW,&tm)0) return -1; c = f

16、getc(stdin); if(tcsetattr(fd,TCSANOW,&tm_oid)0) return -1; return c; /* 功能:从输入流读取一个字符 返回:返回该字符的ASCII码 */ int my_getch() int i = 0; int j = 0; do i = getch(); if(i = 27) j = i; continue; else if(i = 91) j = i; continue; else if(i = 65 |i = 66 | i = 67 | i = 68) & j != 0) break; else if(i = 49 | i = 5

17、0 |i = 51 |i = 52 | i = 53 | i = 54) & j != 0) i = i-55; /为了防止和数字键的ASCII码重复,减去55 j = getch(); break; else break; while (1); return i; /* 功能:光标移动 参数:y,第几行;x,第几列 返回:无 */ void set_cursor(int y,int x) char yxstr30; sprintf(yxstr,echo -ne 33%d;%dH,y,x); system(yxstr); /* 功能:输入函数 参数:char str,存放输入的内容; int

18、max,输入的最大个数 int x, int y,输入的坐标 int sign,0为正常输入,1为密码输入,2为数字输入 返回:无 */ void input(char str, int max, int x, int y, int sign) int count=0; /记录当前有效字符个数 int a=0; /获取ascii值 int i=0; set_cursor(x,y); do a = my_getch(); if(a!=13 & a!=127 & count=0 & a=9) strcount = a; printf(%c,a); fflush(stdout); count+; e

19、lse strcount = a; if(sign = 0) printf(%c,a); else printf(*); fflush(stdout); count+; else if(a = 127) count-; if(count=1) strcount = 0; break; while(1); /* 功能:获取系统时间 参数:无 返回:无 */ void get_sys_date() time_t timep; struct tm *p; time(&timep); p = gmtime(&timep); sys_year = 1900+p-tm_year; sys_mon = 1

20、+ p-tm_mon; sys_day = p-tm_mday; /* 功能:打印文字 参数:int x,行 int y,列 char str,文字内容 返回:无 */ void print_words(int x, int y, char str) set_cursor(x,y); printf(%s,str); fflush(stdout); /* 功能:打印边框 参数:int row,边框起始行坐标 int h,边框高度 返回:无 */ void print_border(int row, int h) int i=0; print_words(row, 1, ?); for(i=3;

21、iWidth; i+) printf(=); fflush(stdout); printf(?); fflush(stdout); for(i=1; ih-1; i+) print_words(row+i, 1, ?); print_words(row+i, Width-1, ?); print_words(row+h-1, 1, ?); for(i=3; iWidth-20; i+) printf(=); fflush(stdout); printf(By ZH %04d-%02d-%02d,sys_year, sys_mon, sys_day); fflush(stdout); print

22、f(=?); fflush(stdout); /打印信息框 print_words(row+h-4, (Width-10)/2, MessageBox); set_cursor(row+h-4,3); for(i=2; i(Width-10)/2-1; i+) printf(=); fflush(stdout); set_cursor(row+h-4,(Width-10)/2+10); for(i=0; i(Width-10)/2-1; i+) printf(=); fflush(stdout); /* 功能:打印标题头 参数:char* s_title,标题内容 int row,标题头起始行

23、坐标 返回:无 */ void print_title_head(char* s_title, int row) int len = strlen(s_title) + 2; int col = (Width-len)/2; /计算居中位置 int i=0; set_cursor(row,col+1); for(i=0; ilen; i+) printf(*); fflush(stdout); set_cursor(row+1,col+1); printf(*%s*,s_title); fflush(stdout); set_cursor(row+2,col+1); for(i=0; ilen; i+) printf(*); fflush(stdout); /* 功能:清空 参数:int x,清空的行坐标 int y,清空的列坐标 int n,清空长度 返回:无 *

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1